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 ofreference
(seemypy.subtypes.is_subtype()
)symbol
andreference
somehow overlap (seemypy.meet.is_overlapping_types()
)
- Parameters
symbol – symbol node to validate
reference – symbol node to validate against