Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

[swappable] Annotate decorator with original type #3638

Merged
merged 1 commit into from
Apr 30, 2021

Conversation

spencerp
Copy link
Contributor

Patch description
Unfortunately Python doesn't support an Intersection type hint (though they've been talking about it since 2014: https://www.python.org/dev/peps/pep-0483/).

So we have to choose whether we tell static type checkers that the class returned by @swappable is the original class or a class that conforms to ModularComponent, we can't communicate both.

I think it makes more sense to type check agains the original class, since it's much more likely that people will be accessing properties and methods of the original class rather than swappables and ModularSubcomponents, which are meant to be somewhat invisible in most cases.

Testing steps
Open up IDE and verify that calls to properties of @swappable classes don't throw static type checking errors.
CircleCI

@spencerp spencerp merged commit 145d258 into master Apr 30, 2021
@spencerp spencerp deleted the transformer-swap-type-ann branch April 30, 2021 13:20
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants