Skip to content

Conversation

RomainMuller
Copy link
Contributor

@RomainMuller RomainMuller commented Jul 26, 2023

Now that Python 3.7 reached end-of-life, and since Python 3.8 and greater have support for positional-only argument notation (any argument before a / delimiter may only be passed positionally), adjust code generation to leverage this feature in order to address issues where inheritance hierarchies would rename parameters, which is a non-issue in all languages but Python, where those could always be provided as keyword arguments before.

Fixes #4541

BREAKING CHANGE: the generated Python code now requires Python 3.8 or later and encodes positional arguments as positional-only, making keyword-style usage impossible. Users who used the keyword-style convention need to update their code to use the positional syntax instead.


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Now that Python 3.7 reached end-of-life, and since Python 3.8 and
greater have support for positional-only argument notation (any argument
before a `/` delimiter may only be passed positionally), adjust code
generation to leverage this feature in order to address issues where
inheritance hierarchies would rename parameters, which is a non-issue in
all languages but Python, where those could always be provided as
keyword arguments before.

Fixes #2927

BREAKING CHANGE: the generated Python code now requires Python 3.8 or
later and encodes positional arguments as positional-only, making
keyword-style usage impossible. Users who used the keyword-style
convention need to update their code to use the positional syntax
instead.
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Jul 26, 2023
# Conflicts:
#	packages/jsii-pacmak/test/generated-code/__snapshots__/target-python.test.js.snap
@rafrafek
Copy link

where inheritance hierarchies would rename parameters

Is it necessary to rename them? I think it would be much better to keep keyword-style parameters and just use the parameter names consistently. For me it is a great benefit of Python and in many cases it would be even better to have keyword-style-only parameters other than positional-only.

@iliapolo
Copy link
Contributor

iliapolo commented Sep 9, 2024

This might not be the desired solution. See #2927 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution/core This is a PR that came from AWS.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(@aws_cdk): Python: incompatible interface implementations due to differing function argument names
3 participants