| # Copyright (c) Meta Platforms, Inc. and affiliates. |
| # |
| # This source code is licensed under the MIT license found in the |
| # LICENSE file in the root directory of this source tree. |
| |
| from dataclasses import dataclass, field |
| from pathlib import Path |
| |
| |
| @dataclass(kw_only=True) |
| class Project: |
| location: str |
| name_override: str | None = None |
| pyrefly_cmd: str | None |
| deps: list[str] | None = None |
| |
| # BELOW ARE UNUSED FIELDS |
| mypy_cmd: str | None = None |
| pyright_cmd: str | None = None |
| |
| install_cmd: str | None = None |
| needs_mypy_plugins: bool = False |
| |
| # if expected_success, there is a recent version of mypy which passes cleanly |
| expected_mypy_success: bool = False |
| expected_pyright_success: bool = False |
| expected_pyrefly_success: bool = False |
| |
| # cost is vaguely proportional to type check time |
| # for mypy we use the compiled times |
| cost: dict[str, int] = field(default_factory=dict) |
| |
| revision: str | None = None |
| min_python_version: tuple[int, int] | None = None |
| supported_platforms: list[str] | None = None |
| |
| skip_pyrefly: bool = False |
| skip_determinism_check: bool = False |
| |
| @property |
| def name(self) -> str: |
| if self.name_override is not None: |
| return self.name_override |
| return Path(self.location).name |
| |
| |
| # Project list is sourced from: |
| # https://github.com/hauntsaninja/mypy_primer/blob/master/mypy_primer/projects.py |
| def get_mypy_primer_projects() -> list[Project]: |
| return [ |
| Project( |
| location="https://github.com/python/mypy", |
| mypy_cmd="{mypy} --config-file mypy_self_check.ini -p mypy -p mypyc", |
| pyright_cmd="{pyright} mypy mypyc", |
| pyrefly_cmd="{pyrefly} mypy mypyc", |
| deps=["pytest", "types-psutil", "types-setuptools", "filelock", "tomli"], |
| expected_mypy_success=True, |
| cost={"mypy": 15, "pyright": 50}, |
| ), |
| Project( |
| location="https://github.com/hauntsaninja/mypy_primer", |
| mypy_cmd="{mypy} -p mypy_primer --strict", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} mypy_primer", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/psf/black", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["aiohttp", "click", "pathspec", "tomli", "platformdirs", "packaging"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/hauntsaninja/pyp", |
| mypy_cmd="{mypy} --strict -m pyp", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pytest-dev/pytest", |
| mypy_cmd="{mypy} src testing", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src testing", |
| deps=["attrs", "pluggy", "py", "types-setuptools"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pandas-dev/pandas", |
| mypy_cmd="{mypy} pandas", |
| pyright_cmd="{pyright} pandas", |
| pyrefly_cmd="{pyrefly} pandas", |
| deps=[ |
| "numpy", |
| "types-python-dateutil", |
| "types-pytz", |
| "types-PyMySQL", |
| "types-setuptools", |
| "pytest", |
| ], |
| expected_mypy_success=True, |
| cost={"mypy": 60}, |
| ), |
| Project( |
| location="https://github.com/pycqa/pylint", |
| mypy_cmd="{mypy} pylint/checkers --ignore-missing-imports", |
| pyright_cmd="{pyright} pylint/checkers", |
| pyrefly_cmd="{pyrefly} pylint/checkers", |
| deps=["types-toml"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aio-libs/aiohttp", |
| mypy_cmd="{mypy} aiohttp", |
| pyright_cmd="{pyright} aiohttp", |
| pyrefly_cmd="{pyrefly} aiohttp", |
| deps=["pytest"], |
| install_cmd="AIOHTTP_NO_EXTENSIONS=1 {install} -e .", |
| expected_mypy_success=True, |
| supported_platforms=["linux", "darwin"], |
| ), |
| Project( |
| location="https://github.com/python-attrs/attrs", |
| mypy_cmd=( |
| "{mypy} src/attr/__init__.pyi src/attr/_version_info.pyi src/attr/converters.pyi" |
| " src/attr/exceptions.pyi src/attr/filters.pyi src/attr/setters.pyi" |
| " src/attr/validators.pyi tests/typing_example.py" |
| ), |
| pyright_cmd="{pyright}", |
| pyrefly_cmd=( |
| "{pyrefly} src/attr/__init__.pyi src/attr/_version_info.pyi src/attr/converters.pyi" |
| " src/attr/exceptions.pyi src/attr/filters.pyi src/attr/setters.pyi" |
| " src/attr/validators.pyi tests/typing_example.py" |
| ), |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/twisted/twisted", |
| mypy_cmd="{mypy} src/twisted", |
| pyright_cmd="{pyright} src/twisted", |
| pyrefly_cmd="{pyrefly} src/twisted", |
| deps=[ |
| "attrs", |
| "automat", |
| "constantly", |
| "hyperlink", |
| "incremental", |
| "zope.interface", |
| "typing_extensions", |
| ], |
| ), |
| Project( |
| location="https://github.com/hypothesisworks/hypothesis", |
| mypy_cmd="{mypy} hypothesis/src/hypothesis", |
| pyright_cmd="{pyright} hypothesis/src/hypothesis", |
| pyrefly_cmd="{pyrefly} hypothesis/src/hypothesis", |
| deps=["attrs", "sortedcontainers"], |
| ), |
| Project( |
| location="https://github.com/sphinx-doc/sphinx", |
| mypy_cmd="{mypy} sphinx", |
| pyright_cmd="{pyright} sphinx", |
| pyrefly_cmd="{pyrefly} sphinx", |
| deps=["babel", "docutils-stubs", "types-requests", "packaging", "jinja2"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/scikit-learn/scikit-learn", |
| mypy_cmd="{mypy} sklearn", |
| pyright_cmd="{pyright} sklearn", |
| pyrefly_cmd="{pyrefly} sklearn", |
| deps=["joblib", "numpy", "scipy-stubs", "threadpoolctl"], |
| expected_mypy_success=True, |
| cost={"mypy": 15, "pyright": 240}, |
| ), |
| Project( |
| location="https://github.com/pypa/bandersnatch", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["types-filelock", "types-freezegun", "types-setuptools"], |
| expected_mypy_success=True, |
| # The upstream repo contains symlinks whose targets include a trailing newline. |
| # https://github.com/pypa/bandersnatch/pull/2280 |
| skip_pyrefly=True, |
| ), |
| Project( |
| location="https://github.com/hauntsaninja/boostedblob", |
| mypy_cmd="{mypy} boostedblob", |
| pyright_cmd="{pyright} boostedblob", |
| pyrefly_cmd="{pyrefly} boostedblob", |
| deps=["aiohttp", "uvloop", "pycryptodome"], |
| expected_mypy_success=True, |
| supported_platforms=["linux", "darwin"], |
| ), |
| Project( |
| location="https://github.com/quora/asynq", |
| mypy_cmd="{mypy} asynq", |
| pyright_cmd="{pyright} asynq", |
| pyrefly_cmd="{pyrefly} asynq", |
| deps=["qcore"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/scrapy/scrapy", |
| mypy_cmd="{mypy} scrapy tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} scrapy tests", |
| deps=["attrs", "types-pyOpenSSL", "types-setuptools"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pypa/twine", |
| mypy_cmd="{mypy} twine", |
| pyright_cmd="{pyright} twine", |
| pyrefly_cmd="{pyrefly} twine", |
| deps=["keyring", "types-requests", "rich"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/more-itertools/more-itertools", |
| mypy_cmd="{mypy} more_itertools", |
| pyright_cmd="{pyright} more_itertools", |
| pyrefly_cmd="{pyrefly} more_itertools", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pydata/xarray", |
| mypy_cmd="{mypy} --exclude conftest.py", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=["types-PyYAML", "types-python-dateutil", "types-pytz", "numpy"], |
| expected_mypy_success=True, |
| cost={"mypy": 25, "pyright": 170}, |
| ), |
| Project( |
| location="https://github.com/pallets/werkzeug", |
| mypy_cmd="{mypy} src/werkzeug tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src/werkzeug tests", |
| deps=["types-setuptools", "pytest", "markupsafe"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pallets/jinja", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["markupsafe"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/mystor/git-revise", |
| mypy_cmd="{mypy} gitrevise", |
| pyright_cmd="{pyright} gitrevise", |
| pyrefly_cmd="{pyrefly} gitrevise", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/PyGithub/PyGithub", |
| mypy_cmd="{mypy} github tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} github tests", |
| deps=["types-requests", "pyjwt"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/we-like-parsers/pegen", |
| mypy_cmd="{mypy} src/pegen", |
| pyright_cmd="{pyright} src/pegen", |
| pyrefly_cmd="{pyrefly} src/pegen", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/zulip/zulip", |
| mypy_cmd=( |
| "{mypy} zerver zilencer zproject tools analytics corporate scripts --platform=linux" |
| ), |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} zerver zilencer zproject tools analytics corporate scripts", |
| deps=[ |
| "types-PyYAML", |
| "types-polib", |
| "types-redis", |
| "types-Markdown", |
| "types-decorator", |
| "types-pytz", |
| "types-requests", |
| "types-python-dateutil", |
| "types-orjson", |
| "cryptography", |
| "django-stubs", |
| ], |
| # TODO: the plugin here is a little involved and might only work on linux |
| # figure out what it would take to make it actually work |
| # needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| cost={"pyright": 60}, |
| ), |
| Project( |
| location="https://github.com/dropbox/stone", |
| mypy_cmd="{mypy} stone test", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} stone test", |
| deps=["types-six"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/yelp/paasta", |
| mypy_cmd="{mypy} paasta_tools", |
| pyright_cmd="{pyright} paasta_tools", |
| pyrefly_cmd="{pyrefly} paasta_tools", |
| deps=[ |
| "types-retry", |
| "types-tzlocal", |
| "types-ujson", |
| "types-python-dateutil", |
| "types-pytz", |
| "types-PyYAML", |
| "types-requests", |
| ], |
| expected_mypy_success=True, |
| supported_platforms=["linux", "darwin"], |
| ), |
| # mypy plugin |
| Project( |
| location="https://github.com/PrefectHQ/prefect", |
| mypy_cmd="{mypy} src/prefect --exclude conftest.py", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src/prefect", |
| deps=[ |
| "types-python-dateutil", |
| "types-requests", |
| "types-simplejson", |
| "types-toml", |
| "types-croniter", |
| "types-PyYAML", |
| "types-python-slugify", |
| "types-pytz", |
| "cryptography", |
| "SQLAlchemy", |
| "pydantic", |
| ], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| cost={"mypy": 10, "pyright": 60}, |
| ), |
| Project( |
| location="https://github.com/pallets/itsdangerous", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["pytest"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/jab/bidict", |
| mypy_cmd="{mypy} bidict", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} bidict", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/jaraco/zipp", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aaugustin/websockets", |
| mypy_cmd="{mypy} --strict src", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pycqa/isort", |
| mypy_cmd="{mypy} --ignore-missing-imports isort", |
| pyright_cmd="{pyright} isort", |
| pyrefly_cmd="{pyrefly} isort", |
| deps=["types-setuptools"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aio-libs/aioredis", |
| mypy_cmd="{mypy} aioredis --ignore-missing-imports", |
| pyright_cmd="{pyright} aioredis", |
| pyrefly_cmd="{pyrefly} aioredis", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/agronholm/anyio", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aio-libs/yarl", |
| mypy_cmd="{mypy} --show-error-codes yarl tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} yarl tests", |
| deps=["multidict"], |
| expected_mypy_success=True, |
| ), |
| # mypy plugin |
| Project( |
| location="https://github.com/freqtrade/freqtrade", |
| mypy_cmd="{mypy} freqtrade scripts", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} freqtrade scripts", |
| deps=[ |
| "types-cachetools", |
| "types-requests", |
| "types-python-dateutil", |
| "types-tabulate", |
| "types-filelock", |
| "pydantic", |
| "sqlalchemy", |
| ], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| cost={"mypy": 15}, |
| ), |
| Project( |
| location="https://github.com/google/jax", |
| mypy_cmd="{mypy} jax", |
| pyright_cmd="{pyright} jax", |
| pyrefly_cmd="{pyrefly} jax", |
| deps=["types-requests", "numpy"], |
| expected_mypy_success=True, |
| cost={"mypy": 30, "pyright": 90}, |
| ), |
| Project( |
| location="https://github.com/dulwich/dulwich", |
| mypy_cmd="{mypy} dulwich", |
| pyright_cmd="{pyright} dulwich", |
| pyrefly_cmd="{pyrefly} dulwich", |
| deps=["types-certifi", "types-paramiko"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/numpy/numpy", |
| pyrefly_cmd="{pyrefly} check --search-path=. numpy/typing/tests/data", |
| deps=["pytest"], |
| ), |
| Project( |
| location="https://github.com/optuna/optuna", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=[ |
| "types-PyYAML", |
| "types-redis", |
| "types-setuptools", |
| "SQLAlchemy", |
| "numpy", |
| ], |
| expected_mypy_success=True, |
| cost={"mypy": 25, "pyright": 70}, |
| ), |
| Project( |
| location="https://github.com/trailofbits/manticore", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-protobuf", "types-PyYAML", "types-redis", "types-setuptools"], |
| expected_mypy_success=True, |
| cost={"mypy": 15, "pyright": 75}, |
| ), |
| Project( |
| location="https://github.com/aiortc/aiortc", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["cryptography"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/Textualize/rich", |
| mypy_cmd="{mypy} -p rich --ignore-missing-imports --warn-unreachable", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} rich", |
| deps=["attrs"], |
| expected_mypy_success=True, |
| ), |
| # mypy plugin |
| Project( |
| location="https://github.com/dedupeio/dedupe", |
| mypy_cmd="{mypy} --ignore-missing-imports dedupe", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} dedupe", |
| deps=["numpy"], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/schemathesis/schemathesis", |
| mypy_cmd="{mypy} src/schemathesis", |
| pyright_cmd="{pyright} src/schemathesis", |
| pyrefly_cmd="{pyrefly} src/schemathesis", |
| deps=["attrs", "types-requests", "types-PyYAML", "hypothesis"], |
| expected_mypy_success=True, |
| supported_platforms=["linux", "darwin"], |
| ), |
| Project( |
| location="https://github.com/graphql-python/graphql-core", |
| mypy_cmd="{mypy} src tests", |
| pyright_cmd="{pyright} src tests", |
| pyrefly_cmd="{pyrefly} src tests", |
| expected_mypy_success=True, |
| cost={"mypy": 40}, |
| ), |
| Project( |
| location="https://github.com/Legrandin/pycryptodome", |
| mypy_cmd="{mypy} lib", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} lib", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/niklasf/python-chess", |
| mypy_cmd="{mypy} --strict chess", |
| pyright_cmd="{pyright} chess", |
| pyrefly_cmd="{pyrefly} chess", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pytorch/ignite", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| expected_mypy_success=True, |
| cost={"pyright": 50}, |
| ), |
| Project( |
| location="https://github.com/pypa/packaging", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pydantic/pydantic", |
| mypy_cmd="{mypy} pydantic", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pydantic", |
| deps=["types-toml"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/encode/starlette", |
| mypy_cmd="{mypy} starlette tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} starlette tests", |
| deps=["types-requests", "types-PyYAML"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aio-libs/janus", |
| mypy_cmd="{mypy} janus --disallow-untyped-calls --disallow-incomplete-defs --strict", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} janus", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/alerta/alerta", |
| mypy_cmd="{mypy} alerta tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} alerta tests", |
| deps=["types-PyYAML", "types-setuptools", "types-requests", "types-pytz"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/nolar/kopf", |
| mypy_cmd="{mypy} kopf", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} kopf", |
| deps=["types-setuptools", "types-PyYAML"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/davidhalter/parso", |
| mypy_cmd="{mypy} parso", |
| pyright_cmd="{pyright} parso", |
| pyrefly_cmd="{pyrefly} parso", |
| expected_mypy_success=True, |
| cost={"pyright": 75}, |
| ), |
| Project( |
| location="https://github.com/konradhalas/dacite", |
| mypy_cmd="{mypy} dacite", |
| pyright_cmd="{pyright} dacite", |
| pyrefly_cmd="{pyrefly} dacite", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/ilevkivskyi/com2ann", |
| mypy_cmd="{mypy} --python-version=3.8 src/com2ann.py src/test_com2ann.py", |
| pyright_cmd="{pyright} com2ann", |
| pyrefly_cmd="{pyrefly} src", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/srittau/python-htmlgen", |
| mypy_cmd="{mypy} htmlgen test_htmlgen", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} htmlgen test_htmlgen", |
| deps=["asserts"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/mitmproxy/mitmproxy", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/jpadilla/pyjwt", |
| mypy_cmd="{mypy} jwt", |
| pyright_cmd="{pyright} jwt", |
| pyrefly_cmd="{pyrefly} jwt", |
| deps=["cryptography"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/apache/spark", |
| mypy_cmd="{mypy} --config python/mypy.ini python/pyspark", |
| pyright_cmd="{pyright} python/pyspark", |
| pyrefly_cmd="{pyrefly} python/pyspark", |
| deps=["numpy"], |
| expected_mypy_success=True, |
| cost={"mypy": 20, "pyright": 110}, |
| ), |
| Project( |
| location="https://github.com/laowantong/paroxython", |
| mypy_cmd="{mypy} paroxython", |
| pyright_cmd="{pyright} paroxython", |
| pyrefly_cmd="{pyrefly} paroxython", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/Akuli/porcupine", |
| mypy_cmd="{mypy} --config-file= porcupine", |
| pyright_cmd="{pyright} porcupine", |
| pyrefly_cmd="{pyrefly} porcupine", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/dropbox/mypy-protobuf", |
| mypy_cmd="{mypy} mypy_protobuf/", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} mypy_protobuf", |
| deps=["types-protobuf"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/spack/spack", |
| mypy_cmd="{mypy} -p spack -p llnl", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} lib/spack/llnl lib/spack/spack", |
| expected_mypy_success=True, |
| cost={"mypy": 20, "pyright": 100}, |
| ), |
| Project( |
| location="https://github.com/johtso/httpx-caching", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-freezegun", "httpx", "anyio", "pytest"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/python-poetry/poetry", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-requests"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/awslabs/sockeye", |
| mypy_cmd=( |
| "{mypy} --ignore-missing-imports --follow-imports=silent @typechecked-files" |
| " --no-strict-optional" |
| ), |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| deps=["types-PyYAML"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/wntrblm/nox", |
| mypy_cmd="{mypy} nox", |
| pyright_cmd="{pyright} nox", |
| pyrefly_cmd="{pyrefly} nox", |
| deps=["jinja2", "packaging", "importlib_metadata"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pandera-dev/pandera", |
| mypy_cmd="{mypy} pandera tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pandera tests", |
| deps=["types-click", "types-PyYAML", "types-setuptools", "types-requests"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://gitlab.com/cki-project/cki-lib", |
| mypy_cmd="{mypy} --strict .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-PyYAML", "types-requests"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/python-jsonschema/check-jsonschema", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["types-jsonschema", "types-requests"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pybind/pybind11", |
| mypy_cmd="{mypy} --exclude '^(tests|docs)/' .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pybind11", |
| deps=["nox", "rich", "types-setuptools"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/rpdelaney/downforeveryone", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-requests", "types-requests", "pytest"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/DataDog/dd-trace-py", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=[ |
| "attrs", |
| "types-six", |
| "types-setuptools", |
| "types-docutils", |
| "types-PyYAML", |
| "types-protobuf", |
| "envier", |
| ], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| cost={"pyright": 75}, |
| ), |
| Project( |
| location="https://github.com/systemd/mkosi", |
| mypy_cmd="{mypy} mkosi", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} mkosi", |
| deps=["cryptography"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/sympy/sympy", |
| mypy_cmd="{mypy} sympy", |
| pyright_cmd="{pyright} sympy", |
| pyrefly_cmd="{pyrefly} sympy", |
| expected_mypy_success=True, |
| cost={"mypy": 35, "pyright": 240}, |
| ), |
| Project( |
| location="https://github.com/nion-software/nionutils", |
| mypy_cmd="{mypy} --strict -p nion.utils", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} nion/utils", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/PyCQA/flake8-pyi", |
| mypy_cmd="{mypy} flake8_pyi", |
| pyright_cmd="{pyright} flake8_pyi", |
| pyrefly_cmd="{pyrefly} flake8_pyi", |
| deps=["types-pyflakes"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/internetarchive/openlibrary", |
| mypy_cmd="{mypy} openlibrary", |
| pyright_cmd="{pyright} openlibrary", |
| pyrefly_cmd="{pyrefly} openlibrary", |
| deps=[ |
| "types-PyYAML", |
| "types-python-dateutil", |
| "types-requests", |
| "types-simplejson", |
| "types-Deprecated", |
| ], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/JohannesBuchner/imagehash", |
| mypy_cmd="{mypy} imagehash", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} imagehash", |
| deps=["numpy", "types-Pillow"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/Kalmat/PyWinCtl", |
| mypy_cmd="{mypy} src/pywinctl", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src/pywinctl", |
| deps=["types-setuptools", "types-pywin32", "types-python-xlib"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/mesonbuild/meson", |
| mypy_cmd="./run_mypy.py --mypy {mypy}", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| deps=[ |
| "types-PyYAML", |
| "coverage", |
| "types-chevron", |
| "types-PyYAML", |
| "types-tqdm", |
| ], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/aio-libs/aiohttp-devtools", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["aiohttp", "watchfiles", "types-pygments"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/sco1/pylox", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["attrs", "pytest"], |
| expected_mypy_success=True, |
| min_python_version=(3, 10), |
| ), |
| Project( |
| location="https://github.com/ppb/ppb-vector", |
| mypy_cmd="{mypy} ppb_vector tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} ppb_vector tests", |
| deps=["hypothesis"], |
| expected_mypy_success=True, |
| min_python_version=(3, 10), |
| ), |
| Project( |
| location="https://github.com/mkdocs/mkdocs", |
| mypy_cmd="{mypy} mkdocs", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} mkdocs", |
| deps=[ |
| "babel", |
| "types-Markdown", |
| "types-pytz", |
| "types-PyYAML", |
| "types-setuptools", |
| "jinja2", |
| "click", |
| "watchdog", |
| "pathspec", |
| "platformdirs", |
| "packaging", |
| ], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/pyppeteer/pyppeteer", |
| mypy_cmd="{mypy} pyppeteer --config-file tox.ini", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pyppeteer", |
| install_cmd="{install} .", |
| ), |
| Project( |
| location="https://github.com/pypa/pip", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src", |
| cost={"pyright": 45}, |
| ), |
| Project( |
| location="https://github.com/pytorch/vision", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| cost={"pyright": 50}, |
| ), |
| Project( |
| location="https://github.com/tornadoweb/tornado", |
| mypy_cmd="{mypy} tornado", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} tornado", |
| deps=["types-contextvars", "types-pycurl"], |
| ), |
| Project( |
| location="https://github.com/scipy/scipy-stubs", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=[ |
| "array-api-compat", |
| "numpy", |
| "numpy-typing-compat", |
| "optype", |
| "packaging", |
| "scipy", |
| ], |
| expected_mypy_success=True, |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/pycqa/flake8", |
| mypy_cmd="{mypy} src tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src tests", |
| deps=["pytest"], |
| ), |
| Project( |
| location="https://github.com/home-assistant/core", |
| mypy_cmd="{mypy} homeassistant", |
| pyright_cmd="{pyright} homeassistant", |
| pyrefly_cmd="{pyrefly} homeassistant", |
| deps=[ |
| "attrs", |
| "pydantic", |
| "types-setuptools", |
| "types-atomicwrites", |
| "types-certifi", |
| "types-croniter", |
| "types-PyYAML", |
| "types-requests", |
| "types-python-slugify", |
| "types-backports", |
| ], |
| needs_mypy_plugins=True, |
| cost={"mypy": 40, "pyright": 240}, |
| ), |
| Project( |
| location="https://github.com/kornia/kornia", |
| mypy_cmd="{mypy} kornia", |
| pyright_cmd="{pyright} kornia", |
| pyrefly_cmd="{pyrefly} kornia", |
| ), |
| Project( |
| location="https://github.com/ibis-project/ibis", |
| mypy_cmd="{mypy} --ignore-missing-imports ibis", |
| pyright_cmd="{pyright} ibis", |
| pyrefly_cmd="{pyrefly} ibis", |
| deps=[ |
| "types-setuptools", |
| "types-requests", |
| "types-python-dateutil", |
| "types-pytz", |
| "SQLAlchemy", |
| ], |
| cost={"mypy": 15, "pyright": 60}, |
| ), |
| Project( |
| location="https://github.com/streamlit/streamlit", |
| mypy_cmd="{mypy} --config-file=lib/mypy.ini lib scripts", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} lib scripts", |
| deps=[ |
| "attrs", |
| "tornado", |
| "packaging", |
| "types-toml", |
| "types-python-dateutil", |
| "types-setuptools", |
| "types-protobuf", |
| "types-pytz", |
| "types-requests", |
| "types-cffi", |
| "click", |
| "pytest", |
| ], |
| cost={"mypy": 10, "pyright": 50}, |
| ), |
| Project( |
| location="https://github.com/dragonchain/dragonchain", |
| mypy_cmd="{mypy} dragonchain --error-summary", |
| pyright_cmd="{pyright} dragonchain", |
| pyrefly_cmd="{pyrefly} dragonchain", |
| deps=["types-redis", "types-requests"], |
| ), |
| Project( |
| location="https://github.com/mikeshardmind/SinbadCogs", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["attrs", "types-pytz", "types-python-dateutil", "types-PyYAML"], |
| ), |
| Project( |
| location="https://github.com/rotki/rotki", |
| mypy_cmd="{mypy} rotkehlchen/ tools/data_faker", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} rotkehlchen", |
| deps=["eth-typing", "types-requests", "types-setuptools"], |
| cost={"pyright": 60}, |
| ), |
| Project( |
| location="https://github.com/arviz-devs/arviz", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["pytest", "types-setuptools", "types-ujson", "numpy", "xarray"], |
| cost={"pyright": 45}, |
| ), |
| Project( |
| location="https://github.com/urllib3/urllib3", |
| mypy_cmd="{mypy} . --exclude setup.py", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=[ |
| "idna>=2.0.0", |
| "cryptography>=1.3.4", |
| "tornado>=6.1", |
| "pytest", |
| "trustme==0.9.0", |
| "types-backports", |
| "types-requests", |
| ], |
| ), |
| Project( |
| location="https://github.com/common-workflow-language/schema_salad", |
| mypy_cmd="MYPYPATH=$MYPYPATH:mypy-stubs {mypy} schema_salad", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| install_cmd="{install} $(grep -v mypy mypy-requirements.txt)" |
| " -r requirements.txt", |
| expected_mypy_success=True, |
| supported_platforms=["linux", "darwin"], |
| ), |
| Project( |
| location="https://github.com/common-workflow-language/cwltool", |
| mypy_cmd="MYPYPATH=$MYPYPATH:mypy-stubs {mypy} cwltool tests/*.py setup.py", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| install_cmd="{install} $(grep -v mypy mypy-requirements.txt) -r requirements.txt", |
| expected_mypy_success=True, |
| cost={"mypy": 15}, |
| supported_platforms=["linux", "darwin"], |
| ), |
| Project( |
| location="https://github.com/AlexWaygood/typeshed-stats", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=[ |
| "attrs", |
| "cattrs", |
| "pytest", |
| "aiohttp", |
| "pathspec", |
| "jinja2", |
| "tomli", |
| ], |
| ), |
| Project( |
| location="https://github.com/FasterSpeeding/Tanjun", |
| mypy_cmd="{mypy} tanjun", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} tanjun", |
| deps=["hikari", "alluka"], |
| ), |
| Project( |
| location="https://github.com/joerick/pyinstrument", |
| mypy_cmd="{mypy} pyinstrument", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pyinstrument", |
| ), |
| Project( |
| location="https://github.com/Gobot1234/steam.py", |
| mypy_cmd="{mypy} steam", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} steam", |
| deps=["cryptography"], |
| ), |
| Project( |
| location="https://github.com/cpitclaudel/alectryon", |
| mypy_cmd="{mypy} alectryon.py", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} alectryon.py", |
| ), |
| Project( |
| location="https://github.com/yurijmikhalevich/rclip", |
| mypy_cmd="{mypy} rclip --explicit-package-bases", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} rclip", |
| deps=["numpy", "types-Pillow", "types-requests", "types-tqdm"], |
| ), |
| Project( |
| location="https://github.com/psycopg/psycopg", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["pytest", "pproxy"], |
| ), |
| Project( |
| location="https://gitlab.com/dkg/python-sop", |
| mypy_cmd="{mypy} --strict sop", |
| pyright_cmd="{pyright} sop", |
| pyrefly_cmd="{pyrefly} sop", |
| deps=["argcomplete"], |
| ), |
| Project( |
| location="https://github.com/Rapptz/discord.py", |
| mypy_cmd="{mypy} discord", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} discord", |
| deps=["types-requests", "types-setuptools", "aiohttp"], |
| cost={"mypy": 20}, |
| ), |
| Project( |
| location="https://github.com/canonical/cloud-init", |
| mypy_cmd="{mypy} cloudinit/ tests/ tools/", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} cloudinit tests tools", |
| deps=[ |
| "jinja2", |
| "pytest", |
| "types-jsonschema", |
| "types-oauthlib", |
| "types-pyyaml", |
| "types-requests", |
| "types-setuptools", |
| ], |
| cost={"mypy": 15, "pyright": 50}, |
| ), |
| Project( |
| location="https://github.com/mongodb/mongo-python-driver", |
| mypy_cmd="{mypy} bson gridfs tools pymongo", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} bson gridfs tools pymongo", |
| deps=["types-requests", "types-pyOpenSSL", "cryptography", "certifi"], |
| ), |
| Project( |
| location="https://github.com/artigraph/artigraph", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=["pydantic", "numpy", "pytest"], |
| needs_mypy_plugins=True, |
| ), |
| Project( |
| location="https://github.com/MaterializeInc/materialize", |
| mypy_cmd=( |
| "MYPYPATH=$MYPYPATH:misc/python {mypy} --explicit-package-bases ci misc/python" |
| ), |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| install_cmd="{install} -r ci/builder/requirements.txt", |
| ), |
| Project( |
| location="https://github.com/canonical/operator", |
| mypy_cmd="{mypy} ops", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} ops", |
| deps=["types-PyYAML"], |
| ), |
| Project( |
| location="https://github.com/caronc/apprise", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=[ |
| "types-six", |
| "cryptography", |
| "types-requests", |
| "types-Markdown", |
| "pytest", |
| "certifi", |
| "babel", |
| ], |
| ), |
| Project( |
| location="https://github.com/Finistere/antidote", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["pytest"], |
| ), |
| Project( |
| location="https://github.com/cognitedata/Expression", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["pytest"], |
| ), |
| Project( |
| location="https://github.com/pyodide/pyodide", |
| mypy_cmd="{mypy} src pyodide-build --exclude 'setup.py|^src/tests|conftest.py'", |
| pyright_cmd="{pyright} src pyodide-build", |
| pyrefly_cmd="{pyrefly} src", |
| deps=[ |
| "packaging", |
| "types-docutils", |
| "types-pyyaml", |
| "types-setuptools", |
| "numpy", |
| "pydantic", |
| ], |
| needs_mypy_plugins=True, |
| ), |
| Project( |
| location="https://github.com/bokeh/bokeh", |
| mypy_cmd="{mypy} src release", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} src release", |
| deps=["types-boto", "tornado", "numpy", "jinja2", "selenium"], |
| cost={"pyright": 60}, |
| ), |
| Project( |
| location="https://github.com/pandas-dev/pandas-stubs", |
| mypy_cmd="{mypy} pandas-stubs tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pandas-stubs tests", |
| deps=[ |
| "numpy", |
| "types-pytz", |
| "matplotlib", |
| "xarray", |
| "pyarrow", |
| "jinja2", |
| "pytest", |
| "SQLAlchemy", |
| ], |
| expected_pyright_success=True, |
| cost={"mypy": 40, "pyright": 75}, |
| ), |
| # mypy checks w/ windows platform |
| Project( |
| location="https://github.com/enthought/comtypes", |
| mypy_cmd="{mypy} comtypes --platform win32", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} comtypes", |
| deps=["numpy"], |
| ), |
| Project( |
| location="https://github.com/mit-ll-responsible-ai/hydra-zen", |
| mypy_cmd="{mypy} src tests/annotations/mypy_checks.py", |
| pyright_cmd="{pyright} tests/annotations src", |
| pyrefly_cmd="{pyrefly} tests/annotations src", |
| deps=["pydantic", "beartype", "hydra-core"], |
| cost={"mypy": 10}, |
| ), |
| Project( |
| location="https://github.com/Toufool/AutoSplit", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=[ |
| "certifi", |
| "ImageHash", |
| "numpy", |
| "packaging", |
| "PyWinCtl", |
| "PySide6-Essentials", |
| "types-D3DShot", |
| "types-keyboard", |
| "types-Pillow", |
| "types-psutil", |
| "types-PyAutoGUI", |
| "types-pyinstaller", |
| "types-pywin32", |
| "types-requests", |
| "types-toml", |
| ], |
| ), |
| Project( |
| location="https://github.com/Avasam/speedrun.com_global_scoreboard_webapp", |
| mypy_cmd="{mypy} backend", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} backend", |
| deps=[ |
| "Flask", |
| "PyJWT", |
| "requests-cache", |
| "types-Flask-SQLAlchemy", |
| "types-httplib2", |
| "types-requests", |
| ], |
| ), |
| Project( |
| location="https://github.com/pwndbg/pwndbg", |
| mypy_cmd="{mypy} pwndbg", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pwndbg", |
| deps=["types-gdb"], |
| cost={"mypy": 10, "pyright": 75}, |
| ), |
| Project( |
| location="https://github.com/keithasaurus/koda-validate", |
| mypy_cmd="{mypy} koda_validate --strict", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} koda_validate", |
| deps=["koda"], |
| ), |
| Project( |
| location="https://github.com/python/cpython", |
| mypy_cmd="{mypy} --config-file Tools/clinic/mypy.ini", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| name_override="CPython (Argument Clinic)", |
| ), |
| Project( |
| location="https://github.com/python/cpython", |
| mypy_cmd="{mypy} --config-file Tools/cases_generator/mypy.ini", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| name_override="CPython (cases_generator)", |
| ), |
| Project( |
| location="https://github.com/python/cpython", |
| mypy_cmd="{mypy} --config-file Tools/peg_generator/mypy.ini", |
| pyright_cmd=None, |
| pyrefly_cmd=None, |
| deps=["types-setuptools", "types-psutil"], |
| name_override="CPython (peg_generator)", |
| ), |
| Project( |
| location="https://github.com/python-trio/trio", |
| mypy_cmd="{mypy} src/trio", |
| pyright_cmd="{pyright} src/trio", |
| pyrefly_cmd="{pyrefly} src/trio", |
| deps=[ |
| "types-pyOpenSSL", |
| "types-cffi", |
| "attrs", |
| "outcome", |
| "exceptiongroup", |
| "pytest", |
| "sniffio", |
| ], |
| ), |
| Project( |
| location="https://github.com/pypa/setuptools", |
| mypy_cmd="{mypy} setuptools pkg_resources", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} setuptools pkg_resources", |
| deps=[ |
| "pytest", |
| "filelock", |
| "ini2toml", |
| "packaging", |
| "tomli", |
| "tomli-w", |
| ], |
| ), |
| Project( |
| location="https://github.com/detachhead/pytest-robotframework", |
| mypy_cmd="{mypy} -p pytest_robotframework", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} pytest_robotframework", |
| ), |
| Project( |
| location="https://github.com/mhammond/pywin32", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["types-pywin32", "types-regex", "types-setuptools"], |
| ), |
| Project( |
| location="https://github.com/beartype/beartype", |
| mypy_cmd="{mypy} beartype", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} beartype", |
| ), |
| Project( |
| location="https://github.com/colour-science/colour", |
| mypy_cmd="{mypy} colour", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} colour", |
| deps=["numpy", "pytest", "matplotlib", "pandas-stubs"], |
| cost={"mypy": 45, "pyright": 180}, |
| ), |
| Project( |
| location="https://github.com/vega/altair", |
| mypy_cmd="{mypy} altair tests", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} altair tests", |
| deps=[ |
| "types-jsonschema", |
| "pandas-stubs", |
| "pytest", |
| "narwhals", |
| "packaging", |
| "jinja2", |
| ], |
| ), |
| Project( |
| location="https://github.com/hydpy-dev/hydpy", |
| mypy_cmd="{mypy} hydpy", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} hydpy", |
| deps=["numpy", "types-docutils"], |
| ), |
| Project( |
| location="https://github.com/static-frame/static-frame", |
| mypy_cmd="{mypy} static_frame", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} static_frame", |
| deps=["numpy", "arraykit"], |
| ), |
| Project( |
| location="https://github.com/Instagram/Fixit", |
| mypy_cmd="{mypy} src/fixit", |
| pyright_cmd="{pyright} src/fixit", |
| pyrefly_cmd="{pyrefly} src/fixit", |
| deps=[ |
| "click", |
| "libcst", |
| "moreorless", |
| "packaging", |
| "tomli", |
| "trailrunner", |
| "attribution", |
| "black", |
| "flake8", |
| "flake8-bugbear", |
| "mypy", |
| "ufmt", |
| "usort", |
| "pygls[ws]", |
| "rich", |
| ], |
| ), |
| Project( |
| location="https://github.com/narwhals-dev/narwhals", |
| mypy_cmd="{mypy} narwhals tests", |
| pyright_cmd="{pyright} narwhals tests", |
| pyrefly_cmd="{pyrefly} narwhals tests", |
| deps=[ |
| "pandas-stubs", |
| "pyarrow-stubs", |
| "sqlframe", |
| "polars", |
| "hypothesis", |
| "pytest", |
| "uv", |
| ], |
| ), |
| Project( |
| location="https://github.com/pola-rs/polars", |
| mypy_cmd="{mypy} py-polars/src/polars py-polars/tests", |
| pyright_cmd="{pyright} py-polars/src/polars py-polars/tests", |
| pyrefly_cmd="{pyrefly} py-polars/src/polars py-polars/tests", |
| deps=[ |
| "pandas-stubs", |
| "boto3-stubs", |
| "google-auth-stubs", |
| "polars-cloud", |
| "numpy", |
| "pyarrow", |
| "pydantic", |
| "tzdata", |
| "sqlalchemy", |
| "adbc-driver-manager", |
| "adbc-driver-sqlite", |
| "aiosqlite", |
| "connectorx", |
| "kuzu", |
| "cloudpickle", |
| "fsspec", |
| "fastexcel", |
| "openpyxl", |
| "xlsx2csv", |
| "xlsxwriter", |
| "deltalake", |
| "zstandard", |
| "altair", |
| "great-tables", |
| "gevent", |
| "matplotlib", |
| "hypothesis", |
| "orjson", |
| ], |
| ), |
| Project( |
| location="https://github.com/JakobGM/patito", |
| mypy_cmd="{mypy} src/patito tests", |
| pyright_cmd="{pyright} src/patito tests", |
| pyrefly_cmd="{pyrefly} src/patito tests", |
| deps=["polars", "pydantic", "typing-extensions"], |
| ), |
| Project( |
| location="https://github.com/quantco/dataframely", |
| mypy_cmd="{mypy} dataframely tests", |
| pyright_cmd="{pyright} dataframely tests", |
| pyrefly_cmd="{pyrefly} dataframely tests", |
| deps=["polars", "numpy", "fsspec", "pydantic"], |
| ), |
| Project( |
| location="https://github.com/functime-org/functime", |
| mypy_cmd="{mypy} functime tests", |
| pyright_cmd="{pyright} functime tests", |
| pyrefly_cmd="{pyrefly} functime tests", |
| deps=["polars", "numpy"], |
| ), |
| Project( |
| location="https://github.com/pyjanitor-devs/pyjanitor", |
| mypy_cmd="{mypy} janitor tests", |
| pyright_cmd="{pyright} janitor tests", |
| pyrefly_cmd="{pyrefly} janitor tests", |
| deps=["pandas-stubs", "numpy", "multipledispatch", "natsort"], |
| ), |
| Project( |
| location="https://github.com/has2k1/plotnine", |
| mypy_cmd="{mypy} plotnine tests", |
| pyright_cmd="{pyright} plotnine tests", |
| pyrefly_cmd="{pyrefly} plotnine tests", |
| deps=["pandas-stubs", "numpy", "matplotlib", "mizani"], |
| ), |
| Project( |
| location="https://github.com/pytorch/helion", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=[ |
| "torch", |
| "{repo}'[dev,surrogate]'", |
| ], |
| ), |
| Project( |
| location="https://github.com/wemake-services/django-test-migrations", |
| mypy_cmd="{mypy} django_test_migrations", |
| pyright_cmd=None, |
| pyrefly_cmd="{pyrefly} django_test_migrations", |
| deps=["django-stubs"], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/wemake-services/django-modern-rest", |
| mypy_cmd="{mypy} dmr", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly} dmr", |
| deps=[ |
| "django-stubs", |
| "pydantic", |
| "msgspec", |
| "pyjwt", |
| "openapi-spec-validator", |
| "polyfactory", |
| ], |
| expected_mypy_success=True, |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/astropenguin/xarray-dataclasses", |
| mypy_cmd="{mypy} xarray_dataclasses", |
| pyright_cmd="{pyright} xarray_dataclasses", |
| pyrefly_cmd="{pyrefly} xarray_dataclasses", |
| deps=["numpy", "xarray"], |
| expected_mypy_success=True, |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/typeddjango/django-stubs", |
| mypy_cmd="{mypy} django-stubs", |
| pyright_cmd=None, |
| pyrefly_cmd="{pyrefly} django-stubs", |
| install_cmd="{install} . ./ext", |
| deps=[ |
| "asgiref", |
| "django-stubs-ext", |
| "django", |
| "redis", |
| "tomli", |
| "types-PyYAML", |
| ], |
| needs_mypy_plugins=True, |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/typeddjango/django-stubs", |
| pyrefly_cmd="{pyrefly} tests/assert_type", |
| deps=[ |
| "asgiref", |
| "django-stubs-ext", |
| "django", |
| "redis", |
| "tomli", |
| "types-PyYAML", |
| ], |
| name_override="django-stubs-tests", |
| ), |
| Project( |
| location="https://github.com/scipy/scipy", |
| mypy_cmd="{mypy} scipy", |
| pyright_cmd=None, |
| pyrefly_cmd="{pyrefly} scipy", |
| deps=["numpy", "pytest", "hypothesis", "setuptools>=71.1", "types-psutil"], |
| needs_mypy_plugins=True, |
| ), |
| Project( |
| location="https://github.com/mikeshardmind/async-utils", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/pypa/cibuildwheel", |
| mypy_cmd="{mypy} cibuildwheel", |
| pyright_cmd="{pyright} cibuildwheel", |
| pyrefly_cmd="{pyrefly} cibuildwheel", |
| deps=[ |
| "bracex", |
| "certifi", |
| "dependency-groups", |
| "filelock", |
| "packaging", |
| "platformdirs", |
| "uv", |
| ], |
| ), |
| Project( |
| location="https://github.com/pypa/build", |
| mypy_cmd="{mypy}", |
| pyright_cmd="{pyright}", |
| pyrefly_cmd="{pyrefly}", |
| deps=["importlib_metadata", "packaging", "pyproject_hooks", "tomli", "uv"], |
| ), |
| Project( |
| location="https://github.com/pypa/pyproject-metadata", |
| mypy_cmd="{mypy} pyproject_metadata", |
| pyright_cmd="{pyright} pyproject_metadata", |
| pyrefly_cmd="{pyrefly} pyproject_metadata", |
| deps=["packaging"], |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/strawberry-graphql/strawberry", |
| mypy_cmd="{mypy} strawberry --config-file=", |
| pyright_cmd="{pyright} strawberry", |
| pyrefly_cmd="{pyrefly} strawberry", |
| deps=["graphql-core", "python-dateutil", "packaging"], |
| ), |
| Project( |
| location="https://github.com/archlinux/archinstall", |
| mypy_cmd="{mypy} .", |
| pyright_cmd="{pyright} .", |
| pyrefly_cmd="{pyrefly} .", |
| deps=["cryptography", "pydantic", "pytest", "textual"], |
| ), |
| Project( |
| location="https://github.com/zopefoundation/zope.interface", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["zope.testing"], |
| ), |
| Project( |
| location="https://github.com/scikit-build/scikit-build-core", |
| mypy_cmd="{mypy} src tests noxfile.py", |
| pyright_cmd="{pyright} src tests noxfile.py", |
| pyrefly_cmd="{pyrefly} src tests noxfile.py", |
| deps=[ |
| "build", |
| "cattrs", |
| "cmake", |
| "exceptiongroup", |
| "hatch-fancy-pypi-readme", |
| "importlib-resources", |
| "markdown-it-py", |
| "ninja", |
| "nox", |
| "orjson", |
| "packaging", |
| "pytest", |
| "pytest-subprocess", |
| "rich", |
| "setuptools-scm", |
| "tomli", |
| "types-setuptools", |
| ], |
| ), |
| Project( |
| location="https://github.com/hynek/svcs", |
| mypy_cmd="{mypy} src tests/typing", |
| pyright_cmd="{pyright} src tests/typing", |
| pyrefly_cmd="{pyrefly} src tests/typing", |
| deps=["attrs", "flask", "aiohttp", "fastapi", "starlette"], |
| expected_mypy_success=True, |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/glyph/DateType", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/egraphs-good/egglog-python", |
| mypy_cmd="{mypy} python", |
| pyright_cmd="{pyright} python", |
| pyrefly_cmd="{pyrefly} python", |
| deps=["anywidget", "syrupy"], |
| expected_mypy_success=True, |
| ), |
| Project( |
| location="https://github.com/WoLpH/numpy-stl", |
| mypy_cmd="{mypy} stl", |
| pyright_cmd="{pyright} stl", |
| pyrefly_cmd="{pyrefly} stl", |
| deps=["numpy", "python-utils"], |
| expected_mypy_success=True, |
| expected_pyright_success=True, |
| ), |
| Project( |
| location="https://github.com/pyca/cryptography", |
| mypy_cmd="{mypy} src/cryptography tests", |
| pyright_cmd="{pyright} src/cryptography tests", |
| pyrefly_cmd="{pyrefly} src/cryptography tests", |
| deps=["cffi", "typing-extensions", "pytest"], |
| ), |
| Project( |
| location="https://gitlab.com/TTsangSC/pytest-autoprofile", |
| mypy_cmd="{mypy} src/pytest_autoprofile tests", |
| pyright_cmd="{pyright} src/pytest_autoprofile tests", |
| pyrefly_cmd="{pyrefly} src/pytest_autoprofile tests", |
| deps=["pytest", "pluggy", "line_profiler", "typing-extensions"], |
| ), |
| Project( |
| location="https://github.com/python-attrs/cattrs", |
| mypy_cmd="{mypy} src", |
| pyright_cmd="{pyright} src", |
| pyrefly_cmd="{pyrefly} src", |
| deps=["attrs"], |
| ), |
| ] |