__init_subclass__() — langchain Function Reference
Architecture documentation for the __init_subclass__() function in retrievers.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD cc5f21f9_7fa7_8d35_7919_cc9c6b2ac15a["__init_subclass__()"] 3a20478a_3692_141f_433b_a32429b00020["BaseRetriever"] cc5f21f9_7fa7_8d35_7919_cc9c6b2ac15a -->|defined in| 3a20478a_3692_141f_433b_a32429b00020 97c862c5_9741_2754_a072_e4d2142e6354["_aget_relevant_documents()"] cc5f21f9_7fa7_8d35_7919_cc9c6b2ac15a -->|calls| 97c862c5_9741_2754_a072_e4d2142e6354 style cc5f21f9_7fa7_8d35_7919_cc9c6b2ac15a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/retrievers.py lines 146–165
def __init_subclass__(cls, **kwargs: Any) -> None:
super().__init_subclass__(**kwargs)
parameters = signature(cls._get_relevant_documents).parameters
cls._new_arg_supported = parameters.get("run_manager") is not None
if (
not cls._new_arg_supported
and cls._aget_relevant_documents == BaseRetriever._aget_relevant_documents
):
# we need to tolerate no run_manager in _aget_relevant_documents signature
async def _aget_relevant_documents(
self: Self, query: str
) -> list[Document]:
return await run_in_executor(None, self._get_relevant_documents, query) # type: ignore[call-arg]
cls._aget_relevant_documents = _aget_relevant_documents # type: ignore[assignment]
# If a V1 retriever broke the interface and expects additional arguments
cls._expects_other_args = (
len(set(parameters.keys()) - {"self", "query", "run_manager"}) > 0
)
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does __init_subclass__() do?
__init_subclass__() is a function in the langchain codebase, defined in libs/core/langchain_core/retrievers.py.
Where is __init_subclass__() defined?
__init_subclass__() is defined in libs/core/langchain_core/retrievers.py at line 146.
What does __init_subclass__() call?
__init_subclass__() calls 1 function(s): _aget_relevant_documents.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free