]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-144545: Improve handling of default values in Argument Clinic (GH-146016)
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 17 Mar 2026 10:16:35 +0000 (12:16 +0200)
committerGitHub <noreply@github.com>
Tue, 17 Mar 2026 10:16:35 +0000 (12:16 +0200)
commit99e2c5eccd2b83ac955125522a952a4ff5c7eb43
tree1329a5e44f1f96d68f323218ca3281e19b8511b0
parent4f5e79805ebcaa0d3ba1677694d4120a9e8f4513
gh-144545: Improve handling of default values in Argument Clinic (GH-146016)

* Add the c_init_default attribute which is used to initialize the C variable
  if the default is not explicitly provided.
* Add the c_default_init() method which is used to derive c_default from
  default if c_default is not explicitly provided.
* Explicit c_default and py_default are now almost always have precedence
  over the generated value.
* Add support for bytes literals as default values.
* Improve support for str literals as default values (support non-ASCII
  and non-printable characters and special characters like backslash or quotes).
* Fix support for str and bytes literals containing trigraphs, "/*" and "*/".
* Improve support for default values in converters "char" and "int(accept={str})".
* Converter "int(accept={str})" now requires 1-character string instead of
  integer as default value.
* Add support for non-None default values in converter "Py_buffer": NULL,
  str and bytes literals.
* Improve error handling for invalid default values.
* Rename Null to NullType for consistency.
22 files changed:
Lib/test/clinic.test.c
Lib/test/test_clinic.py
Modules/_datetimemodule.c
Modules/_testclinic.c
Modules/binascii.c
Modules/blake2module.c
Modules/clinic/_testclinic.c.h
Modules/clinic/binascii.c.h
Modules/clinic/blake2module.c.h
Modules/clinic/zlibmodule.c.h
Modules/posixmodule.c
Modules/zlibmodule.c
Objects/unicodeobject.c
Tools/c-analyzer/c_parser/parser/__init__.py
Tools/c-analyzer/cpython/_parser.py
Tools/clinic/libclinic/__init__.py
Tools/clinic/libclinic/clanguage.py
Tools/clinic/libclinic/converter.py
Tools/clinic/libclinic/converters.py
Tools/clinic/libclinic/dsl_parser.py
Tools/clinic/libclinic/formatting.py
Tools/clinic/libclinic/utils.py