Source code for flask_unchained.bundles.graphene.hooks.register_graphene_types_hook
from flask_unchained import AppFactoryHook, FlaskUnchained
from typing import *
from ..object_types import SQLAlchemyObjectType
[docs]class RegisterGrapheneTypesHook(AppFactoryHook):
"""
Registers SQLAlchemyObjectTypes with the Graphene Bundle.
"""
name = 'graphene_types'
"""
The name of this hook.
"""
bundle_module_names = ['graphene.types', 'graphene.schema']
"""
The default module this hook loads from.
Override by setting the ``graphene_types_module_names`` attribute on your
bundle class.
"""
bundle_override_module_names_attr = 'graphene_types_module_names'
run_after = ['models', 'services']
# skipcq: PYL-W0221 (parameters mismatch in overridden method)
[docs] def process_objects(self,
app: FlaskUnchained,
types: Dict[str, SQLAlchemyObjectType]):
self.bundle.types = types
[docs] def type_check(self, obj: Any):
is_subclass = isinstance(obj, type) and issubclass(obj, SQLAlchemyObjectType)
return is_subclass and obj != SQLAlchemyObjectType and (
not hasattr(obj, 'Meta') or not getattr(obj.Meta, 'abstract', False))