Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Argument Clinic doesn't mangle conflicting names #68395

Closed
serhiy-storchaka opened this issue May 16, 2015 · 3 comments · Fixed by #104065
Closed

Argument Clinic doesn't mangle conflicting names #68395

serhiy-storchaka opened this issue May 16, 2015 · 3 comments · Fixed by #104065
Labels
topic-argument-clinic type-bug An unexpected behavior, bug, or error

Comments

@serhiy-storchaka
Copy link
Member

serhiy-storchaka commented May 16, 2015

BPO 24207
Nosy @larryhastings, @serhiy-storchaka

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields:

assignee = None
closed_at = None
created_at = <Date 2015-05-16.10:21:03.935>
labels = ['type-bug', 'expert-argument-clinic']
title = "Argument Clinic doesn't mangle conflicting names"
updated_at = <Date 2015-05-16.10:21:03.935>
user = 'https://github.com/serhiy-storchaka'

bugs.python.org fields:

activity = <Date 2015-05-16.10:21:03.935>
actor = 'serhiy.storchaka'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Argument Clinic']
creation = <Date 2015-05-16.10:21:03.935>
creator = 'serhiy.storchaka'
dependencies = []
files = []
hgrepos = []
issue_num = 24207
keywords = []
message_count = 1.0
messages = ['243304']
nosy_count = 2.0
nosy_names = ['larry', 'serhiy.storchaka']
pr_nums = []
priority = 'normal'
resolution = None
stage = 'needs patch'
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue24207'
versions = ['Python 3.5']

Linked PRs

@serhiy-storchaka
Copy link
Member Author

Argument Clinic adds the "_value" suffix to the end of variable names in C if the parameter name is C keyword. But it left unmodified parameter names that can conflict with parameter names of C function: args and kwargs (and module and self if they are used not as the first parameter). Following declaration generates a code that can't bi compiled:

mod.func

args: object
kwargs: object

Either Argument Clinic should add the "_value" suffix to the end of these names, or use other names for parameters of generated parser function.

@serhiy-storchaka serhiy-storchaka added topic-argument-clinic type-bug An unexpected behavior, bug, or error labels May 16, 2015
@ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
@erlend-aasland
Copy link
Contributor

args is already mangled as __clinic_args. We should also mangle kwnames, since that is sometimes used instead of kwargs (for example, for METH_FASTCALL | METH_KEYWORDS).

erlend-aasland added a commit to erlend-aasland/cpython that referenced this issue May 1, 2023
…Argument Clinic

Add all internally used variable names to CLINIC_PREFIXED_ARGS.
erlend-aasland added a commit to erlend-aasland/cpython that referenced this issue May 1, 2023
…Argument Clinic

Add all internally used variable names to CLINIC_PREFIXED_ARGS.
@erlend-aasland
Copy link
Contributor

FTR, AC complains if you try to use parameters named self (for methods) or module (for functions), so we don't need to special case those two.

Example failure if I try to add a param named "self" to sqlite3.Connection.__init__:

Error in file "Modules/_sqlite/connection.c" on line 217:
Parameter 'self' requires a custom C name

erlend-aasland added a commit that referenced this issue May 5, 2023
…nt Clinic (#104065)

Add all internally used variable names to CLINIC_PREFIXED_ARGS.
carljm added a commit to carljm/cpython that referenced this issue May 5, 2023
* main: (61 commits)
  pythongh-64595: Argument Clinic: Touch source file if any output file changed (python#104152)
  pythongh-64631: Test exception messages in cloned Argument Clinic funcs (python#104167)
  pythongh-68395: Avoid naming conflicts by mangling variable names in Argument Clinic (python#104065)
  pythongh-64658: Expand Argument Clinic return converter docs (python#104175)
  pythonGH-103092: port `_asyncio` freelist to module state (python#104196)
  pythongh-104051: fix crash in test_xxtestfuzz with -We (python#104052)
  pythongh-104190: fix ubsan crash (python#104191)
  pythongh-104106: Add gcc fallback of mkfifoat/mknodat for macOS (pythongh-104129)
  pythonGH-104142: Fix _Py_RefcntAdd to respect immortality (pythonGH-104143)
  pythongh-104112: link from cached_property docs to method-caching FAQ (python#104113)
  pythongh-68968: Correcting message display issue with assertEqual (python#103937)
  pythonGH-103899: Provide a hint when accidentally calling a module (pythonGH-103900)
  pythongh-103963: fix 'make regen-opcode' in out-of-tree builds (python#104177)
  pythongh-102500: Add PEP 688 and 698 to the 3.12 release highlights (python#104174)
  pythonGH-81079: Add case_sensitive argument to `pathlib.Path.glob()` (pythonGH-102710)
  pythongh-91896: Deprecate collections.abc.ByteString (python#102096)
  pythongh-99593: Add tests for Unicode C API (part 2) (python#99868)
  pythongh-102500: Document PEP 688 (python#102571)
  pythongh-102500: Implement PEP 688 (python#102521)
  pythongh-96534: socketmodule: support FreeBSD divert(4) socket (python#96536)
  ...
jbower-fb pushed a commit to jbower-fb/cpython-jbowerfb that referenced this issue May 8, 2023
…Argument Clinic (python#104065)

Add all internally used variable names to CLINIC_PREFIXED_ARGS.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic-argument-clinic type-bug An unexpected behavior, bug, or error
Projects
None yet
2 participants