Source code for jivago.inject.typing_meta_helper

[docs]def is_typing_meta_collection(clazz, metas=('List', 'Collection', 'Iterable', 'Tuple', 'Optional')) -> bool: if not hasattr(clazz, "__module__"): return False typing_meta_name = clazz._name if hasattr(clazz, "_name") else clazz.__name__ if hasattr(clazz, "__name__") else "" if typing_meta_name is None: # Python3.7 Union metas typing_meta_name = "" return clazz.__module__ == 'typing' and hasattr(clazz, '__args__') and typing_meta_name in metas
[docs]def is_union_typing_meta(clazz): return is_typing_meta_collection(clazz, ("",))
[docs]def is_optional_typing_meta(clazz): return is_typing_meta_collection(clazz, ("Optional")) and type(None) in clazz.__args__