diff options
author | Larry Hastings <larry@hastings.org> | 2013-11-23 22:58:45 (GMT) |
---|---|---|
committer | Larry Hastings <larry@hastings.org> | 2013-11-23 22:58:45 (GMT) |
commit | dcd340eeebf0793ea0797ca90d72ac535db4ea78 (patch) | |
tree | 6a83a666b0cecee44d0b94dc97a339ab92a50cc5 | |
parent | ebdcb50b8a0d37af4acd7d2387eae8ff2b5f0b9b (diff) | |
download | cpython-dcd340eeebf0793ea0797ca90d72ac535db4ea78.zip cpython-dcd340eeebf0793ea0797ca90d72ac535db4ea78.tar.gz cpython-dcd340eeebf0793ea0797ca90d72ac535db4ea78.tar.bz2 |
Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
over all CPython source files.
-rw-r--r-- | Makefile.pre.in | 6 | ||||
-rw-r--r-- | Misc/NEWS | 6 | ||||
-rwxr-xr-x | Tools/clinic/clinic.py | 27 |
3 files changed, 36 insertions, 3 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in index 0ccf755..bed702e 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -526,6 +526,12 @@ coverage-report: : # build lcov report $(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 $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(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 ----------------- + - Use the repr of a module name in more places in import, especially exceptions. @@ -66,6 +67,7 @@ Core and Builtins Library ------- + - Issue #19722: Added opcode.stack_effect(), which computes the stack effect of bytecode instructions. @@ -403,6 +405,9 @@ Documentation 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. - Issue #16632: Enable DEP and ASLR on Windows. @@ -449,6 +454,7 @@ Build Tools/Demos ----------- + - Issue #19730: Argument Clinic now supports all the existing PyArg "format units" as legacy converters, as well as two new features: "self converters" and the "version" directive. diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 5b8786a..d34c3da 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -988,7 +988,6 @@ class BlockPrinter: dsl_name = block.dsl_name 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) 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) 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 '.' 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)) with open(tmpfilename, "wb") as f: f.write(bytes) @@ -2619,6 +2622,7 @@ def main(argv): cmdline.add_argument("-f", "--force", action='store_true') cmdline.add_argument("-o", "--output", type=str) cmdline.add_argument("--converters", action='store_true') + cmdline.add_argument("--make", action='store_true') cmdline.add_argument("filename", type=str, nargs="*") ns = cmdline.parse_args(argv) @@ -2697,6 +2701,23 @@ def main(argv): print("All return converters also accept (doc_default=None).") 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: cmdline.print_usage() sys.exit(-1) |