Skip to content

[3.14] gh-144545: Improve handling of default values in Argument Clinic (GH-146016)#146052

Merged
serhiy-storchaka merged 1 commit intopython:3.14from
serhiy-storchaka:backport-99e2c5e-3.14
Mar 17, 2026
Merged

[3.14] gh-144545: Improve handling of default values in Argument Clinic (GH-146016)#146052
serhiy-storchaka merged 1 commit intopython:3.14from
serhiy-storchaka:backport-99e2c5e-3.14

Conversation

@serhiy-storchaka
Copy link
Member

@serhiy-storchaka serhiy-storchaka commented Mar 17, 2026

  • 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. (cherry picked from commit 99e2c5e)

…t Clinic (pythonGH-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.
(cherry picked from commit 99e2c5e)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant