[Python-checkins] cpython: Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
larry.hastings
python-checkins at python.org
Sat Nov 23 23:59:17 CET 2013
http://hg.python.org/cpython/rev/29370c25e0f1
changeset: 87467:29370c25e0f1
user: Larry Hastings <larry at hastings.org>
date: Sat Nov 23 14:58:45 2013 -0800
summary:
Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
over all CPython source files.
files:
Makefile.pre.in | 6 ++++++
Misc/NEWS | 6 ++++++
Tools/clinic/clinic.py | 27 ++++++++++++++++++++++++---
3 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -526,6 +526,12 @@
: # 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)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -9,6 +9,7 @@
Core and Builtins
-----------------
+
- Use the repr of a module name in more places in import, especially
exceptions.
@@ -66,6 +67,7 @@
Library
-------
+
- Issue #19722: Added opcode.stack_effect(), which
computes the stack effect of bytecode instructions.
@@ -403,6 +405,9 @@
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 @@
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
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -988,7 +988,6 @@
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 @@
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 @@
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 @@
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)
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list