pytorch
59 строк · 1.4 Кб
1from mypy.plugin import Plugin2from mypy.plugins.common import add_attribute_to_class3from mypy.types import NoneType, UnionType4
5
6class SympyPlugin(Plugin):7def get_base_class_hook(self, fullname: str):8if fullname == "sympy.core.basic.Basic":9return add_assumptions10return None11
12
13def add_assumptions(ctx) -> None:14# Generated by list(sys.modules['sympy.core.assumptions']._assume_defined)15# (do not import sympy to speedup mypy plugin load time)16assumptions = [17"hermitian",18"prime",19"noninteger",20"negative",21"antihermitian",22"infinite",23"finite",24"irrational",25"extended_positive",26"nonpositive",27"odd",28"algebraic",29"integer",30"rational",31"extended_real",32"nonnegative",33"transcendental",34"extended_nonzero",35"extended_negative",36"composite",37"complex",38"imaginary",39"nonzero",40"zero",41"even",42"positive",43"polar",44"extended_nonpositive",45"extended_nonnegative",46"real",47"commutative",48]49for a in assumptions:50add_attribute_to_class(51ctx.api,52ctx.cls,53f"is_{a}",54UnionType([ctx.api.named_type("builtins.bool"), NoneType()]),55)56
57
58def plugin(version: str):59return SympyPlugin60