__getattr__() — langchain Function Reference
Architecture documentation for the __getattr__() function in fallbacks.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD e0182327_a095_5566_1968_1c2f6f719d3f["__getattr__()"] da856a55_079e_fd91_47d6_928251e6cee3["RunnableWithFallbacks"] e0182327_a095_5566_1968_1c2f6f719d3f -->|defined in| da856a55_079e_fd91_47d6_928251e6cee3 e6762e58_663a_c977_19cf_b16fb57f3dbb["_returns_runnable()"] e0182327_a095_5566_1968_1c2f6f719d3f -->|calls| e6762e58_663a_c977_19cf_b16fb57f3dbb style e0182327_a095_5566_1968_1c2f6f719d3f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/runnables/fallbacks.py lines 593–646
def __getattr__(self, name: str) -> Any:
"""Get an attribute from the wrapped `Runnable` and its fallbacks.
Returns:
If the attribute is anything other than a method that outputs a `Runnable`,
returns `getattr(self.runnable, name)`. If the attribute is a method that
does return a new `Runnable` (e.g. `model.bind_tools([...])` outputs a new
`RunnableBinding`) then `self.runnable` and each of the runnables in
`self.fallbacks` is replaced with `getattr(x, name)`.
Example:
```python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
gpt_4o = ChatOpenAI(model="gpt-4o")
claude_3_sonnet = ChatAnthropic(model="claude-sonnet-4-5-20250929")
model = gpt_4o.with_fallbacks([claude_3_sonnet])
model.model_name
# -> "gpt-4o"
# .bind_tools() is called on both ChatOpenAI and ChatAnthropic
# Equivalent to:
# gpt_4o.bind_tools([...]).with_fallbacks([claude_3_sonnet.bind_tools([...])])
model.bind_tools([...])
# -> RunnableWithFallbacks(
runnable=RunnableBinding(bound=ChatOpenAI(...), kwargs={"tools": [...]}),
fallbacks=[RunnableBinding(bound=ChatAnthropic(...), kwargs={"tools": [...]})],
)
```
""" # noqa: E501
attr = getattr(self.runnable, name)
if _returns_runnable(attr):
@wraps(attr)
def wrapped(*args: Any, **kwargs: Any) -> Any:
new_runnable = attr(*args, **kwargs)
new_fallbacks = []
for fallback in self.fallbacks:
fallback_attr = getattr(fallback, name)
new_fallbacks.append(fallback_attr(*args, **kwargs))
return self.__class__(
**{
**self.model_dump(),
"runnable": new_runnable,
"fallbacks": new_fallbacks,
}
)
return wrapped
return attr
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does __getattr__() do?
__getattr__() is a function in the langchain codebase, defined in libs/core/langchain_core/runnables/fallbacks.py.
Where is __getattr__() defined?
__getattr__() is defined in libs/core/langchain_core/runnables/fallbacks.py at line 593.
What does __getattr__() call?
__getattr__() calls 1 function(s): _returns_runnable.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free