From 0b1ae979c055b2daa414421bc8b1210e94de1600 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sat, 26 Aug 2023 02:31:46 +0200 Subject: [PATCH 1/2] gh-108494: AC: change parse_file() API Revert my change adding 'ns' parameter, add back 'verify' parameter, and add also 'limited_capi' parameter. --- Lib/test/test_clinic.py | 10 +--------- Tools/clinic/clinic.py | 11 ++++++----- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py index fcccf988d3a7dd..6ac29ba6aa5305 100644 --- a/Lib/test/test_clinic.py +++ b/Lib/test/test_clinic.py @@ -22,13 +22,6 @@ from clinic import DSLParser -def default_namespace(): - ns = types.SimpleNamespace() - ns.force = False - ns.limited_capi = clinic.DEFAULT_LIMITED_CAPI - return ns - - def _make_clinic(*, filename='clinic_tests'): clang = clinic.CLanguage(None) c = clinic.Clinic(clang, filename=filename) @@ -704,9 +697,8 @@ def expect_parsing_failure( self, *, filename, expected_error, verify=True, output=None ): errmsg = re.escape(dedent(expected_error).strip()) - ns = default_namespace() with self.assertRaisesRegex(clinic.ClinicError, errmsg): - clinic.parse_file(filename, ns=ns) + clinic.parse_file(filename) def test_parse_file_no_extension(self) -> None: self.expect_parsing_failure( diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 723592fa266c4c..f280138ad7cf65 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -2612,11 +2612,10 @@ def __repr__(self) -> str: def parse_file( filename: str, *, - ns: argparse.Namespace, output: str | None = None, + verify: bool = True, + limited_capi: bool = DEFAULT_LIMITED_CAPI, ) -> None: - verify = not ns.force - limited_capi = ns.limited_capi if not output: output = filename @@ -6190,7 +6189,8 @@ def run_clinic(parser: argparse.ArgumentParser, ns: argparse.Namespace) -> None: continue if ns.verbose: print(path) - parse_file(path, ns=ns) + parse_file(path, + verify=not ns.force, limited_capi=ns.limited_capi) return if not ns.filename: @@ -6202,7 +6202,8 @@ def run_clinic(parser: argparse.ArgumentParser, ns: argparse.Namespace) -> None: for filename in ns.filename: if ns.verbose: print(filename) - parse_file(filename, output=ns.output, ns=ns) + parse_file(filename, output=ns.output, + verify=not ns.force, limited_capi=ns.limited_capi) def main(argv: list[str] | None = None) -> NoReturn: From e9f70f2e2fedd9d0b6ab5b53101dbd3e411c5377 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 28 Aug 2023 18:16:19 +0200 Subject: [PATCH 2/2] Clinic constructor uses DEFAULT_LIMITED_CAPI --- Tools/clinic/clinic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index f280138ad7cf65..3ba6dd3ef3eb1f 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -2415,7 +2415,7 @@ def __init__( *, filename: str, verify: bool = True, - limited_capi: bool = False, + limited_capi: bool = DEFAULT_LIMITED_CAPI, ) -> None: # maps strings to Parser objects. # (instantiated from the "parsers" global.)