-
Notifications
You must be signed in to change notification settings - Fork 246
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
feat(python): support inheritance-based interface implementation #3350
Draft
RomainMuller
wants to merge
22
commits into
main
Choose a base branch
from
rmuller/python-interfaces
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 5 commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
7a0ee64
feat(python): support inheritance-based interface implementation
RomainMuller 5e61e84
Merge branch 'main' into rmuller/python-interfaces
e5259ea
linter fix
RomainMuller bfa7492
fix snapshot
RomainMuller 5a6b6e3
make generated classes extend the interfaces they implement
RomainMuller 742e12e
Update python.md
31feec8
Try to be dependency-has-protocol-friendly
RomainMuller 715a3f7
linter fix + version fix
RomainMuller 7c7da80
use issubclass instead of trying to match type
RomainMuller ae365fc
fix typo
RomainMuller 2424392
try to not use issubclass (won't work in python 3.6)
RomainMuller 9e0d3c5
de-duplicate interfaces to avoid MRO issues
RomainMuller 2bae124
linter fix
RomainMuller 9eaa38e
Merge branch 'main' into rmuller/python-interfaces
2eb82ed
remove type: ignore[misc]
RomainMuller 261f204
add imssing required imports
RomainMuller e96331c
fix duplicate type variable issue
RomainMuller aa4af36
be friendlier with PyCharm
RomainMuller dd3b01b
Merge branch 'main' into rmuller/python-interfaces
3d471d8
remove excess type annotations on python.py (not sure how to do this …
RomainMuller 342b5c4
Emit warning when `@jsii.implements` is used but considered legacy form
RomainMuller 5885996
Merge remote-tracking branch 'origin/main' into rmuller/python-interf…
RomainMuller File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 4 additions & 2 deletions
6
packages/jsii-pacmak/test/generated-code/__snapshots__/examples.test.ts.snap
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realized this particular part of the change would break if the implemented interface is from a library that was generated with the
typing_extensions.Protocol
metaclass.Not putting this change in means the type checkers will not accept instances of classes where implementations of interfaces are expected (because
typing_extensions.Protocol
is what causes structural typing to apply).I need to find a strategy to be backwards-compatible here, either by conditionally extending interfaces IIF they are not
typing_extensions.Protocol
types, or by making type-checkers understand the interface is implemented implicitly in all cases.