-
-
Notifications
You must be signed in to change notification settings - Fork 187
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
PEP 604 typing duplication removal #982
Comments
this is pretty difficult to do in a single pass but should be somewhat doable |
something similar is done for except blocks already if you want to try and tackle this for type unions as well |
Ok nice, I just had a very quick look and can see where this happens for except blocks. |
I just ran into this issue on biopython/biopython#4913 - not sure how the So updating the fixer would have been enough, but perhaps a new fixer removing duplication within the | syntax would be even better? |
This is a bit niche, but when I was reviewing some naive code submitted to me I saw some bizarre typing generated by
pyupgrade
which looked something likewhere
None
is duplicated.When looking into how this had happened, I noticed it came from the following:
Clearly wrapping
Union[..., None]
withOptional
is bad, but it made me wonder which dev tool can detect this sort of issue. It doesn't seem to be something that is picked up bymypy
,flake8
,pyright
, etc.(Just to clarify this bad typing had been generated by an internal tool which wraps given types with
Optional
for PATCH methods in a RESTful API, so it is very much an edge case)Do you think deduplication of types is something that can live in the PEP604 part of pyupgrade? I think it is unlikely that anyone would write
int | None | None
manually, but I can see when over complicating unions this sort of thing might happen.I added the following test to
test_fix_pep604_types
just to check this was expected behaviour:and sure enough pytest failed with the following duplicated types:
I'd be interested to hear your opinions on this. If you do think it would be a complimentary feature for
pyupgrade
then I'm happy to submit a PR for consideration to get the test above passing.The text was updated successfully, but these errors were encountered: