INNER CODE UNIT · Python
component_name
smagafurov/fastapi-jsonrpc · fastapi_jsonrpc/__init__.py:144
def component_name(name: str, module: Optional[str] = None) -> Callable[[Type[BaseModel]], Type[BaseModel]]:
"""OpenAPI components must be unique by name.
For non-core modules, set unique title to prevent pydantic from deduplicating
models with same name from different modules.
The module prefix in title is removed later in _restore_json_schema_fine_component_names if no collision.
"""
def decorator(obj):
assert issubclass(obj, BaseModel)
effective_module = module or obj.__module__
# Determine if we need module prefix in title to prevent deduplication
# Exclude fastapi_jsonrpc (core library) and __main__ (entry point, unlikely to collide)
needs_module_prefix = effective_module and effective_module not in ('fastapi_jsonrpc', '__main__')
opts: dict[str, Any] = {
'__base__': tuple(obj.mro()[1:]), # remove self from __base__
'__module__': effective_module,