def rewrite(self, typ): if is_any(typ): typname = 'Any' elif is_union(typ): typname = 'Union' elif is_generic(typ): typname = name_of_generic(typ) else: typname = getattr(typ, '__name__', None) rewriter = getattr(self, 'rewrite_' + typname, None) if typname else None if rewriter: return rewriter(typ) return self.generic_rewrite(typ)
def rewrite(self, typ): if is_any(typ): typname = 'Any' elif is_union(typ): typname = 'Union' elif is_typed_dict(typ): typname = 'TypedDict' elif is_generic(typ): typname = name_of_generic(typ) else: typname = getattr(typ, '__name__', None) rewriter = getattr(self, 'rewrite_' + typname, None) if typname else None if rewriter: return rewriter(typ) if isinstance(typ, TypeVar): return self.rewrite_type_variable(typ) return self.generic_rewrite(typ)
def are_generic_types_equal(actual, expected) -> bool: """Compare manually because the module name causes errors in 3.6. List[tests.test_typing.FooTypedDict] != List[monkeytype.typing.FooTypedDict].""" return name_of_generic(actual) == name_of_generic(expected) and actual.__args__ == expected.__args__
def is_list(typ: type) -> bool: return is_generic(typ) and name_of_generic(typ) == 'List'