Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
over all CPython source files.
This commit is contained in:
parent
ebdcb50b8a
commit
dcd340eeeb
@ -526,6 +526,12 @@ coverage-report:
|
|||||||
: # build lcov report
|
: # build lcov report
|
||||||
$(MAKE) coverage-lcov
|
$(MAKE) coverage-lcov
|
||||||
|
|
||||||
|
# Run "Argument Clinic" over all source files
|
||||||
|
# (depends on python having already been built)
|
||||||
|
.PHONY=clinic
|
||||||
|
clinic: $(BUILDPYTHON)
|
||||||
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) ./Tools/clinic/clinic.py --make
|
||||||
|
|
||||||
# Build the interpreter
|
# Build the interpreter
|
||||||
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
||||||
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
||||||
|
@ -9,6 +9,7 @@ Projected release date: 2013-11-24
|
|||||||
|
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
- Use the repr of a module name in more places in import, especially
|
- Use the repr of a module name in more places in import, especially
|
||||||
exceptions.
|
exceptions.
|
||||||
|
|
||||||
@ -66,6 +67,7 @@ Core and Builtins
|
|||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- Issue #19722: Added opcode.stack_effect(), which
|
- Issue #19722: Added opcode.stack_effect(), which
|
||||||
computes the stack effect of bytecode instructions.
|
computes the stack effect of bytecode instructions.
|
||||||
|
|
||||||
@ -403,6 +405,9 @@ Documentation
|
|||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
|
||||||
|
over all CPython source files.
|
||||||
|
|
||||||
- Update SQLite to 3.8.1, xz to 5.0.5, and Tcl/Tk to 8.6.1 on Windows.
|
- Update SQLite to 3.8.1, xz to 5.0.5, and Tcl/Tk to 8.6.1 on Windows.
|
||||||
|
|
||||||
- Issue #16632: Enable DEP and ASLR on Windows.
|
- Issue #16632: Enable DEP and ASLR on Windows.
|
||||||
@ -449,6 +454,7 @@ Build
|
|||||||
|
|
||||||
Tools/Demos
|
Tools/Demos
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
- Issue #19730: Argument Clinic now supports all the existing PyArg
|
- Issue #19730: Argument Clinic now supports all the existing PyArg
|
||||||
"format units" as legacy converters, as well as two new features:
|
"format units" as legacy converters, as well as two new features:
|
||||||
"self converters" and the "version" directive.
|
"self converters" and the "version" directive.
|
||||||
|
@ -988,7 +988,6 @@ class BlockPrinter:
|
|||||||
dsl_name = block.dsl_name
|
dsl_name = block.dsl_name
|
||||||
write = self.f.write
|
write = self.f.write
|
||||||
|
|
||||||
assert (not input) or (input.endswith('\n'))
|
|
||||||
assert not ((dsl_name == None) ^ (output == None)), "you must specify dsl_name and output together, dsl_name " + repr(dsl_name)
|
assert not ((dsl_name == None) ^ (output == None)), "you must specify dsl_name and output together, dsl_name " + repr(dsl_name)
|
||||||
|
|
||||||
if not dsl_name:
|
if not dsl_name:
|
||||||
@ -1122,12 +1121,16 @@ def parse_file(filename, *, verify=True, output=None, encoding='utf-8'):
|
|||||||
clinic = Clinic(language, verify=verify, filename=filename)
|
clinic = Clinic(language, verify=verify, filename=filename)
|
||||||
|
|
||||||
with open(filename, 'r', encoding=encoding) as f:
|
with open(filename, 'r', encoding=encoding) as f:
|
||||||
text = clinic.parse(f.read())
|
raw = f.read()
|
||||||
|
|
||||||
|
cooked = clinic.parse(raw)
|
||||||
|
if cooked == raw:
|
||||||
|
return
|
||||||
|
|
||||||
directory = os.path.dirname(filename) or '.'
|
directory = os.path.dirname(filename) or '.'
|
||||||
|
|
||||||
with tempfile.TemporaryDirectory(prefix="clinic", dir=directory) as tmpdir:
|
with tempfile.TemporaryDirectory(prefix="clinic", dir=directory) as tmpdir:
|
||||||
bytes = text.encode(encoding)
|
bytes = cooked.encode(encoding)
|
||||||
tmpfilename = os.path.join(tmpdir, os.path.basename(filename))
|
tmpfilename = os.path.join(tmpdir, os.path.basename(filename))
|
||||||
with open(tmpfilename, "wb") as f:
|
with open(tmpfilename, "wb") as f:
|
||||||
f.write(bytes)
|
f.write(bytes)
|
||||||
@ -2619,6 +2622,7 @@ def main(argv):
|
|||||||
cmdline.add_argument("-f", "--force", action='store_true')
|
cmdline.add_argument("-f", "--force", action='store_true')
|
||||||
cmdline.add_argument("-o", "--output", type=str)
|
cmdline.add_argument("-o", "--output", type=str)
|
||||||
cmdline.add_argument("--converters", action='store_true')
|
cmdline.add_argument("--converters", action='store_true')
|
||||||
|
cmdline.add_argument("--make", action='store_true')
|
||||||
cmdline.add_argument("filename", type=str, nargs="*")
|
cmdline.add_argument("filename", type=str, nargs="*")
|
||||||
ns = cmdline.parse_args(argv)
|
ns = cmdline.parse_args(argv)
|
||||||
|
|
||||||
@ -2697,6 +2701,23 @@ def main(argv):
|
|||||||
print("All return converters also accept (doc_default=None).")
|
print("All return converters also accept (doc_default=None).")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
if ns.make:
|
||||||
|
if ns.output or ns.filename:
|
||||||
|
print("Usage error: can't use -o or filenames with --make.")
|
||||||
|
print()
|
||||||
|
cmdline.print_usage()
|
||||||
|
sys.exit(-1)
|
||||||
|
for root, dirs, files in os.walk('.'):
|
||||||
|
for rcs_dir in ('.svn', '.git', '.hg'):
|
||||||
|
if rcs_dir in dirs:
|
||||||
|
dirs.remove(rcs_dir)
|
||||||
|
for filename in files:
|
||||||
|
if not filename.endswith('.c'):
|
||||||
|
continue
|
||||||
|
path = os.path.join(root, filename)
|
||||||
|
parse_file(path, verify=not ns.force)
|
||||||
|
return
|
||||||
|
|
||||||
if not ns.filename:
|
if not ns.filename:
|
||||||
cmdline.print_usage()
|
cmdline.print_usage()
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user