stubalyzer.compare module

Compare mypy types.

class stubalyzer.compare.ComparisonResult(match_result: MatchResult, symbol: RelevantSymbolNode, reference: Optional[SymbolNode], symbol_name: str, symbol_type: str, reference_name: Optional[str], reference_type: Optional[str], data: Optional[Dict[str, Any]] = None, message_val: Optional[str] = None)[source]

Bases: tuple

Result of comparing two symbol nodes and their types.

classmethod create(match_result: MatchResult, symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: Optional[mypy.nodes.SymbolNode], data: Optional[Dict[str, Any]] = None, message: Optional[str] = None) ComparisonResult[source]

Create a comparison result.

Parameters
  • match_result – if the match was successful

  • symbol – symbol that was checked

  • reference – reference symbol that was checked against

  • data – optional additional data

  • message – optional message

classmethod create_match(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], data: Optional[Dict[str, Any]] = None, message: Optional[str] = None) ComparisonResult[source]

Create a successful comparison result.

Parameters
  • symbol – symbol that was checked

  • reference – reference symbol that was checked against

  • data – optional additional data

  • message – optional message

classmethod create_mislocated_symbol(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: mypy.nodes.SymbolNode, data: Optional[Dict[str, Any]] = None) ComparisonResult[source]

Create an unsuccessful comparison result where the reference symbol was found in a different level of the class hierarchy.

Parameters
  • symbol – symbol we wanted to check

  • reference – symbol that was found somewhere else in the hierarchy

  • data – optional additional data

classmethod create_mismatch(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], data: Optional[Dict[str, Any]] = None, message: Optional[str] = None) ComparisonResult[source]

Create an unsuccessful comparison result.

Parameters
  • symbol – symbol that was checked

  • reference – reference symbol that was checked against

  • data – optional additional data

  • message – optional message

classmethod create_not_found(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], data: Optional[Dict[str, Any]] = None) ComparisonResult[source]

Create an unsuccessful comparison result where there was no reference symbol found.

Parameters
  • symbol – symbol we wanted to check

  • data – optional additional data

property data

Optional additional data

property match_result

Type of comparison result

property message: str

Human readable result of the comparison

property message_val

Optional message

property reference

Reference symbol that was checked against

property reference_name

Full name of the reference symbol

property reference_type

Type of the reference symbol

property symbol

Symbol that was checked

property symbol_name

Full name of the symbol that was checked

property symbol_type

Type of the symbol that was checked

class stubalyzer.compare.MatchResult(value)[source]

Bases: Enum

An enumeration.

MATCH = 'match'
MISLOCATED_SYMBOL = 'mislocated_symbol'
MISMATCH = 'mismatch'
NOT_FOUND = 'not_found'
classmethod declare_mismatch(matchResultString: str) MatchResult[source]
stubalyzer.compare.compare_mypy_types(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], symbol_type: Optional[mypy.types.Type], reference_type: Optional[mypy.types.Type]) ComparisonResult[source]

Check if the mypy type of given symbol node is compatible with the reference symbol.

Returns a successful comparison if:

  • the reference type is None (this means mypy doesn’t have enough information)

  • the symbol type is a subtype of the reference type

  • the symbol type overlaps with the reference type

Parameters
  • symbol – symbol node to validate

  • reference – symbol node to validate against

  • symbol_type – type of the symbol to validate

  • reference_type – type of the symbol to validate against

stubalyzer.compare.compare_symbols(symbol: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias], reference: Union[mypy.nodes.Decorator, mypy.nodes.FuncDef, mypy.nodes.OverloadedFuncDef, mypy.nodes.Var, mypy.nodes.TypeInfo, mypy.nodes.TypeVarExpr, mypy.nodes.TypeAlias]) ComparisonResult[source]

Check if the given symbol node is compatible with the reference symbol.

Will return a successful comparison if any of the following holds:

  • the symbols describe the same class

  • the symbols are type aliases that resolve to the same type

  • symbol is a valid subtype of reference (see mypy.subtypes.is_subtype())

  • symbol and reference somehow overlap (see mypy.meet.is_overlapping_types())

Parameters
  • symbol – symbol node to validate

  • reference – symbol node to validate against