sob/hooks.py
def read(model: Union[type, abc.Model]) -> Any:
    """
    Read metadata from a model class or instance (the returned metadata may be
    inherited, and therefore should not be written to)
    """
    hooks: Optional[abc.Hooks] = getattr(model, "_hooks")
    if isinstance(model, abc.Model) and (hooks is None):
        hooks = read(type(model))
    return hooks

    Read metadata from a model class or instance (the returned metadata may be
    inherited, and therefore should not be written to)
    
Read metadata from a model class or instance (the returned metadata may be
inherited, and therefore should not be written to)
Read metadata from a model class or instance ( the returned metadata may be inherited and therefore should not be written to )
def read(model: Union[type, abc.Model]) -> Any:
    hooks: Optional[abc.Hooks] = getattr(model, "_hooks")
    if isinstance(model, abc.Model) and (hooks is None):
        hooks = read(type(model))
    return hooks
def read ( model : Union [ type , abc . Model ] ) -> Any : hooks : Optional [ abc . Hooks ] = getattr ( model , "_hooks" ) if isinstance ( model , abc . Model ) and ( hooks is None ) : hooks = read ( type ( model ) ) return hooks
Read metadata from a model class or instance (the returned metadata may be
inherited, and therefore should not be written to)
Read metadata from a model class or instance ( the returned metadata may be inherited and therefore should not be written to )
"""
    Read metadata from a model class or instance (the returned metadata may be
    inherited, and therefore should not be written to)
    """
model
Union[type, abc.Model]