jaraco / skeleton

A generic project skeleton for Python projects.
http://blog.jaraco.com/skeleton/
MIT License
123 stars 36 forks source link

Update mypy.ini from setuptools #136

Closed Avasam closed 3 months ago

Avasam commented 3 months ago

Includes the latest changes from setuptools (including https://github.com/pypa/setuptools/pull/4526) that I believe are applicable to all skeleton-based projects.

jaraco commented 3 months ago

This change has led to a lot of work. I spent the full day today working through the failures introduced in my projects, and I'm only about 1/3 through the failures. It's a lot of work to identify upstream issues and associate the exceptions with those. See pmxbot/pmxbot, importlib_metadata, jaraco.abode, jaraco.develop for examples of the changes necessary. I started to fatigue and just lump exceptions without upstream issues (https://github.com/jaraco/keyring/commit/5cd38280f609fc4605f2371aa2d4e170c2d64e1b).

There have been a couple of failures also due to issues with improper merges, but most of the issues are relating to the mypy changes.

This work is not good use of my time.

@Avasam Would you be willing to work through the remaining failing projects (excluding coherent.*) and devise PRs to fix those? Or can you propose some other way to deal with the fallout from this in a less labor-intensive way?

Avasam commented 2 months ago

Is there a specific kind of issue you're hitting more often ? Maybe there's some config we can add to be even more lenient on a project's first pass.

For instance, it seems a lot of your issues are related to missing stubs / untyped dependencies. Maybe we should add

# Enable import-untyped if you'd like to be notified about using untyped dependencies or missing stubs packages
# You can leave it disabled if your package isn't publicly typed / `py.typed`
disable_error_code = import-untyped

until the ecosystem is further along. Namely the jaraco packages. (that's why I originally ignored that issue from jaraco.* in setuptools)

If a package doesn't yet intend to promote itself as py.typed, I don't think it needs to care about the import-untyped error as much (it matters once your typed API interacts with one of your dependencies' types). Whilst still having some basic type-checking benefits.

I also don't think that running around after untyped dependencies is the best use of your time. Especially not this early in type-checking adoption. Packages getting typed will be a slow trickle.

If you get any issue with stubs in typeshed, I can prioritize your blockers there. win32ctypes, win32cred and pywintypes in keyring all come from types-pywin32

https://github.com/jaraco/jaraco.abode/blob/8843f360ee5d9bc1afb1bdb3119157addb4aaf06/jaraco/abode/config.py#L4C7-L4C19 is a mypy issue (https://github.com/python/mypy/issues/10962) although that can be worked around in platformdirs itself. Edit: I opened https://github.com/platformdirs/platformdirs/pull/295


I can go through https://jaraco.com/projects/ and create PRs if you'd like. Although my next two days are going to be quite occupied. This weekend I'd have time for.

jaraco commented 2 months ago

Rather that continue the conversation here, I've filed #143 to track the effort.