Source code for finesse.utilities.types

import typing


[docs]def issubtype(cls, annotation): """Check that `cls` is compatible with typing annotation `annotation`. Parameters ---------- cls : type The type to check for membership of `annotation`. annotation : :mod:`typing` type The annotation to check. """ if typing.get_origin(annotation) is None: # This is not a typing type, but a normal Python type. return annotation is cls # Maybe a generic. return any(issubtype(cls, arg) for arg in typing.get_args(annotation))