diff --git a/pyproject.toml b/pyproject.toml index b3ee3475..dfa73c8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,11 +7,11 @@ name = "microsoft-python-type-stubs" version = "0" [dependency-groups] -hygiene = ["ruff ==0.11.*"] +hygiene = ["ruff ==0.14.*"] tests = [ # Tools used for testing "docopt-ng", - "mypy ==1.16.*", + "mypy ==1.19.*", "pyright", # External type stubs and optional dependencies @@ -55,15 +55,22 @@ target-version = "py39" extend-select = [ "FA", # flake8-future-annotations "I", # isort - "PGH", # pygrep-hooks "PGH", # pygrep-hooks and blanket-noqa - "PIE790", # unnecessary-placeholder + "PIE", # flake8-pie and unnecessary-placeholder "PYI", # flake8-pyi "RUF", # Ruff-specific and unused-noqa + "TC", # flake8-type-checking "UP", # pyupgrade "W", # pycodestyle Warning + "YTT", # flake8-2020 (version_info misuses) ] ignore = [ + # Not colored correctly in Pylance https://github.com/microsoft/pylance-release/issues/6942 + "UP047", + + # TODO: Investigate and fix or configure + "PYI051", # Request for autofix: https://github.com/astral-sh/ruff/issues/14185 + ### # Rules we don't want or don't agree with ### @@ -77,9 +84,6 @@ ignore = [ "PYI011", "PYI014", "PYI053", - - # TODO: Investigate and fix or configure - "PYI051", # Request for autofix: https://github.com/astral-sh/ruff/issues/14185 ] [tool.ruff.lint.per-file-ignores] @@ -144,13 +148,12 @@ reportSelfClsParameterName = false reportUnsupportedDunderAll = "error" [tool.mypy] +fixed_format_cache = true # Will be default in mypy 1.20 strict = true -check_untyped_defs = true # Strict check on all defs show_column_numbers = true # Not all imports in these stubs are gonna be typed # Don't infer symbols from untyped packages as Any follow_untyped_imports = true -warn_unused_ignores = false # Change from pandas # Partial stubs are acceptable disallow_any_generics = false disallow_incomplete_defs = false @@ -165,25 +168,32 @@ disable_error_code = [ # as they are inherited from the implementation. "override", # TODO - "assignment", # 744 errors in 155 files + "assignment", # 688 errors in 155 files ] [[tool.mypy.overrides]] -# follow_untyped_imports = true will cause stubtest to run mypy on the source -# So disable it for partial stubs module = ["sympy.*"] -follow_untyped_imports = false -disable_error_code = ["import-untyped", "misc"] +disable_error_code = [ + # TODO + "misc", # 185 +] [[tool.mypy.overrides]] # These modules are to be removed soon, not worth solving many issues -module = ["matplotlib.*", "networkx.*"] +module = ["matplotlib.*"] +disable_error_code = ["assignment", "misc", "untyped-decorator"] + +[[tool.mypy.overrides]] +module = ["sklearn.*"] disable_error_code = [ - "assignment", - "misc", + # TODO + "misc", # 25 + "overload-overlap", # 14 ] + [[tool.mypy.overrides]] -module = ["skimage.*", "sklearn.*"] -# TODO: Too many untyped decorators still left -# https://github.com/python/mypy/issues/19148 -disable_error_code = ["misc"] +module = ["skimage.*"] +disable_error_code = [ + # TODO: Too many untyped decorators still left + "untyped-decorator", # 52 +] diff --git a/stubs/sympy-stubs/stats/crv_types.pyi b/stubs/sympy-stubs/stats/crv_types.pyi index 120fd8ca..5e212ef5 100644 --- a/stubs/sympy-stubs/stats/crv_types.pyi +++ b/stubs/sympy-stubs/stats/crv_types.pyi @@ -4,10 +4,9 @@ from typing_extensions import Self from sympy import Equality, FiniteSet, Integral, Interval, Ne, Piecewise, Sum from sympy.core.basic import Basic from sympy.core.relational import Relational -from sympy.matrices import MatrixBase from sympy.stats.crv import SingleContinuousDistribution from sympy.stats.joint_rv import JointRandomSymbol -from sympy.stats.rv import RandomSymbol, is_random +from sympy.stats.rv import RandomSymbol oo = ... __all__ = [ @@ -66,8 +65,6 @@ __all__ = [ "WignerSemicircle", ] -@is_random.register(MatrixBase) -def _(x) -> bool: ... def rv(symbol, cls, args, **kwargs) -> RandomSymbol: ... class ContinuousDistributionHandmade(SingleContinuousDistribution): diff --git a/stubs/sympy-stubs/stats/random_matrix_models.pyi b/stubs/sympy-stubs/stats/random_matrix_models.pyi index 255b24c2..6cca642f 100644 --- a/stubs/sympy-stubs/stats/random_matrix_models.pyi +++ b/stubs/sympy-stubs/stats/random_matrix_models.pyi @@ -1,4 +1,4 @@ -from typing import Any, Literal +from typing import Any from typing_extensions import Self from sympy import Equality, Integral, Ne @@ -6,7 +6,7 @@ from sympy.core.basic import Basic from sympy.core.function import Lambda from sympy.core.relational import Relational from sympy.stats.joint_rv_types import JointDistributionHandmade -from sympy.stats.rv import Density, RandomMatrixSymbol, is_random +from sympy.stats.rv import Density, RandomMatrixSymbol __all__ = [ "CircularEnsemble", @@ -22,9 +22,6 @@ __all__ = [ "level_spacing_distribution", ] -@is_random.register(RandomMatrixSymbol) -def _(x) -> Literal[True]: ... - class RandomMatrixEnsembleModel(Basic): def __new__(cls, sym, dim=...) -> Self: ... diff --git a/stubs/sympy-stubs/stats/rv.pyi b/stubs/sympy-stubs/stats/rv.pyi index 66e52fed..a15ef3b5 100644 --- a/stubs/sympy-stubs/stats/rv.pyi +++ b/stubs/sympy-stubs/stats/rv.pyi @@ -1,5 +1,4 @@ from collections.abc import Generator -from functools import singledispatch from typing import Any from typing_extensions import Self @@ -24,10 +23,7 @@ from sympy.utilities.decorator import doctest_depends_on x = ... -@singledispatch -def is_random(x) -> bool: ... -@is_random.register(Basic) -def _(x) -> bool: ... +def is_random(x: object) -> bool: ... class RandomDomain(Basic): is_ProductDomain = ... diff --git a/stubs/sympy-stubs/stats/stochastic_process_types.pyi b/stubs/sympy-stubs/stats/stochastic_process_types.pyi index 60befd05..5fd280f3 100644 --- a/stubs/sympy-stubs/stats/stochastic_process_types.pyi +++ b/stubs/sympy-stubs/stats/stochastic_process_types.pyi @@ -1,5 +1,5 @@ from collections.abc import Generator -from typing import Any, Literal +from typing import Any from typing_extensions import Self from sympy import Equality, Integral, Ne, Piecewise, Sum @@ -23,7 +23,7 @@ from sympy.stats.drv_types import PoissonDistribution from sympy.stats.frv_types import BernoulliDistribution from sympy.stats.joint_rv import JointDistribution, JointRandomSymbol from sympy.stats.joint_rv_types import JointDistributionHandmade -from sympy.stats.rv import Density, Distribution, RandomIndexedSymbol, RandomSymbol, is_random +from sympy.stats.rv import Density, Distribution, RandomIndexedSymbol, RandomSymbol from sympy.stats.symbolic_multivariate_probability import ExpectationMatrix from sympy.stats.symbolic_probability import Expectation, Probability from sympy.tensor.indexed import Indexed @@ -43,11 +43,6 @@ __all__ = [ "GammaProcess", ] -@is_random.register(Indexed) -def _(x) -> bool: ... -@is_random.register(RandomIndexedSymbol) -def _(x) -> Literal[True]: ... - class StochasticProcess(Basic): index_set = ... def __new__(cls, sym, state_space=..., **kwargs) -> Self: ... diff --git a/stubs/sympy-stubs/stats/symbolic_probability.pyi b/stubs/sympy-stubs/stats/symbolic_probability.pyi index 93c88f47..9cc45880 100644 --- a/stubs/sympy-stubs/stats/symbolic_probability.pyi +++ b/stubs/sympy-stubs/stats/symbolic_probability.pyi @@ -1,4 +1,4 @@ -from typing import Any, Literal +from typing import Any from typing_extensions import Self from sympy import Basic, Equality, Integral, Ne, Piecewise, Sum @@ -8,16 +8,10 @@ from sympy.core.function import Lambda from sympy.core.relational import Relational from sympy.series.order import Order from sympy.stats.frv_types import BernoulliDistribution -from sympy.stats.rv import RandomSymbol, is_random from sympy.stats.symbolic_multivariate_probability import CrossCovarianceMatrix, ExpectationMatrix, VarianceMatrix __all__ = ["Probability", "Expectation", "Variance", "Covariance"] -@is_random.register(Expr) # type: ignore[has-type] -def _(x) -> bool: ... -@is_random.register(RandomSymbol) # type: ignore[has-type] -def _(x) -> Literal[True]: ... - class Probability(Expr): def __new__(cls, prob, condition=..., **kwargs) -> Self: ... def doit(self, **hints) -> Any | BernoulliDistribution | Probability | Equality | Lambda | Order | Relational | Ne | int: ...