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

Update to mypy 1.15 #3201

Merged
merged 8 commits into from
Feb 11, 2025
Merged

Update to mypy 1.15 #3201

merged 8 commits into from
Feb 11, 2025

Conversation

tjstum
Copy link
Member

@tjstum tjstum commented Feb 5, 2025

In python/typeshed#13372, the type of the stdlib's socket.getaddrinfo was updated to add a union member for cases where Python was compiled with --disable-ipv6. This causes custom resolvers that use the stdlib function to fail mypy

This is probably going to (mypy) break everyone's custom HostnameResolver, since the parent type is changing

In python/typeshed#13372, the type of the
stdlib's `socket.getaddrinfo` was updated to add a union member for
cases where Python was compiled with `--disable-ipv6`. This causes
custom resolvers that use the stdlib function to fail mypy

This is probably going to (mypy) break everyone's custom
`HostnameResolver`, since the parent type is changing
Copy link

codecov bot commented Feb 5, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00000%. Comparing base (8a7674c) to head (3d61e02).
Report is 19 commits behind head on main.

Additional details and impacted files
@@               Coverage Diff                @@
##                 main        #3201    +/-   ##
================================================
  Coverage   100.00000%   100.00000%            
================================================
  Files             124          124            
  Lines           18792        18917   +125     
  Branches         1268         1295    +27     
================================================
+ Hits            18792        18917   +125     
Files with missing lines Coverage Δ
src/trio/_abc.py 100.00000% <ø> (ø)
src/trio/_core/_entry_queue.py 100.00000% <100.00000%> (ø)
src/trio/_core/_instrumentation.py 100.00000% <100.00000%> (ø)
src/trio/_core/_run.py 100.00000% <100.00000%> (ø)
src/trio/_core/_tests/test_asyncgen.py 100.00000% <100.00000%> (ø)
src/trio/_core/_tests/test_ki.py 100.00000% <100.00000%> (ø)
src/trio/_core/_tests/test_run.py 100.00000% <100.00000%> (ø)
src/trio/_core/_thread_cache.py 100.00000% <100.00000%> (ø)
src/trio/_core/_traps.py 100.00000% <100.00000%> (ø)
src/trio/_file_io.py 100.00000% <ø> (ø)
... and 15 more

... and 1 file with indirect coverage changes

@A5rocks
Copy link
Contributor

A5rocks commented Feb 5, 2025

I guess this PR should be more generally "update to mypy 1.15"...

And major typing changes are fine, type hints are optional/not at runtime anyways.

@CoolCat467 CoolCat467 added dependencies Pull requests that update a dependency file typing Adding static types to trio's interface labels Feb 5, 2025
@tjstum
Copy link
Member Author

tjstum commented Feb 5, 2025

OK, I'll take a look at the other typing changes needed for 1.15 as well

@jakkdl
Copy link
Member

jakkdl commented Feb 6, 2025

looks like we need to replace a lot of type: ignore[misc] with type: ignore[explicit-any]

@tjstum tjstum changed the title Update typing for HostnameResolver Update to mypy 1.15 Feb 7, 2025
Copy link
Contributor

@A5rocks A5rocks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually just was looking at doing this and thinking through what I would prefer, but I actually prefer the choices you made here (e.g. pushing up the CoroutineType change rather than littering code with assert isinstance(task.coro, CoroutineType))

A couple comments, but most are very nitpicky so feel free to ignore.

src/trio/_core/_run.py Show resolved Hide resolved
src/trio/_core/_tests/test_asyncgen.py Outdated Show resolved Hide resolved
src/trio/_file_io.py Outdated Show resolved Hide resolved
src/trio/_tests/test_socket.py Outdated Show resolved Hide resolved
src/trio/_tests/test_socket.py Outdated Show resolved Hide resolved
src/trio/_threads.py Outdated Show resolved Hide resolved
.pre-commit-config.yaml Outdated Show resolved Hide resolved
src/trio/_core/_run.py Show resolved Hide resolved
src/trio/_core/_tests/test_asyncgen.py Outdated Show resolved Hide resolved
src/trio/_tests/test_socket.py Outdated Show resolved Hide resolved
src/trio/_threads.py Outdated Show resolved Hide resolved
Copy link

@Hnasar Hnasar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superb!

src/trio/_threads.py Show resolved Hide resolved
newsfragments/3201.misc.rst Show resolved Hide resolved
Copy link
Contributor

@TeamSpen210 TeamSpen210 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if any @_public users have overloads, but if so:

src/trio/_core/_instrumentation.py Outdated Show resolved Hide resolved
Copy link
Member

@jakkdl jakkdl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unclear if we should even bother keeping the async_generator stuff at all - see python-trio/async_generator#35

src/trio/_core/_tests/test_ki.py Show resolved Hide resolved
Copy link
Contributor

@A5rocks A5rocks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes here make sense to me!

newsfragments/3201.misc.rst Outdated Show resolved Hide resolved
@A5rocks A5rocks requested a review from TeamSpen210 February 10, 2025 16:37
Copy link
Member

@CoolCat467 CoolCat467 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good other than a few things I had questions about

src/trio/_tests/test_subprocess.py Show resolved Hide resolved
@tjstum tjstum added this pull request to the merge queue Feb 11, 2025
Merged via the queue into python-trio:main with commit ad9462b Feb 11, 2025
39 checks passed
@tjstum tjstum deleted the resolver branch February 11, 2025 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file typing Adding static types to trio's interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants