def custom_name_resolver(schema): """ Creates names for Marshmallow schemas in documentation. In case a schema is created using partial=`True`, `Partial-` will be added in front of the its name. In case a schema name ends with `Schema`, the `Schema` part is removed from the name. Adapted from https://github.com/marshmallow-code/apispec/pull/476/ :param schema: Schema to name :type schema: `marshmallow.Schema` :return: The documented name for the schema :rtype: str """ # Get an instance of the schema schema_instance = common.resolve_schema_instance(schema) if schema_instance.partial: prefix = "Patch-" elif schema_instance.only: prefix = "Partial-" else: prefix = "" # Get the class of the instance schema_cls = common.resolve_schema_cls(schema) name = prefix + schema_cls.__name__ if name.endswith("Schema"): return name[:-6] or name return name
def definition_helper(self, name, schema, **kwargs): """Definition helper that allows using a marshmallow :class:`Schema <marshmallow.Schema>` to provide OpenAPI metadata. :param str name: Name to use for definition. :param type|Schema schema: A marshmallow Schema class or instance. """ schema_cls = resolve_schema_cls(schema) schema_instance = resolve_schema_instance(schema) # Store registered refs, keyed by Schema class self.references[schema_cls] = name if hasattr(schema_instance, 'fields'): fields = schema_instance.fields elif hasattr(schema_instance, '_declared_fields'): fields = schema_instance._declared_fields else: raise ValueError( "{0!r} doesn't have either `fields` or `_declared_fields`". format(schema_instance)) ret = super().definition_helper(name, schema_instance, **kwargs) for field_name, field_obj in fields.items(): if isinstance(field_obj, Hyperlinks): ret['properties'][field_name]['properties'] = _rapply( field_obj.schema, self.openapi.field2property, name=name) return ret
def resolver(schema): schema_instance = common.resolve_schema_instance(schema) prefix = "Partial-" if schema_instance.partial else "" schema_cls = common.resolve_schema_cls(schema) name = prefix + schema_cls.__name__ if name.endswith("Schema"): return name[:-6] or name return name
def resolver(schema): schema_cls = resolve_schema_cls(schema) name = schema_cls.__name__ if name == "MetaSchema": if hasattr(schema_cls, "Meta"): return ( f"{schema_cls.Meta.parent_schema_name}.{schema_cls.Meta.model.__name__}" ) if name.endswith("Schema"): return name[:-6] or name return name
def schema_name_resolver(schema): schema_cls = resolve_schema_cls(schema) name = schema_cls.__name__ if name.endswith("Schema"): name = name[:-6] or name if schema.partial: if isinstance(schema.partial, list): for field in schema.partial: name += field.capitalize() name += 'Partial' return name
def resolver(schema): """Default schema name resolver function that strips 'Schema' from the end of the class name.""" schema_cls = resolve_schema_cls(schema) name = schema_cls.__name__ if name.endswith("Schema"): name = name[:-6] or name schema_inst = resolve_schema_instance(schema) if schema_inst.partial: return f'{name}_partial' if schema_inst.only: return f'{name}.{"-".join(schema_inst.only)}' return name
def schema_name_resolver(schema): cls = resolve_schema_cls(schema) instance = resolve_schema_instance(schema) name = cls.__name__ if not cls.opts.register: # Unregistered schemas are put inline. return False if instance.only: # If schema includes only select fields, treat it as nonce return False if name.endswith("Schema"): return name[:-6] or name if instance.partial: name = "Partial" + name return name
def schema_name_resolver(schema): schema_cls = resolve_schema_cls(schema) name = schema_cls.__name__ if name.endswith("Schema"): name = name[:-6] or name if getattr(schema, 'partial', None): if isinstance(schema.partial, list): for field in schema.partial: name += field.capitalize() name += 'Partial' if getattr(schema, 'only', None): for field in schema.only: name += field.capitalize() name += 'Only' if getattr(schema, 'exclude', None): for field in schema.exclude: name += field.capitalize() name += 'Exclude' return name
def resolver(schema): schema_cls = common.resolve_schema_cls(schema) return schema_cls.__name__