in opensearch_dsl/utils.py [0:0]
def __getattr__(self, name):
if name.startswith("_"):
raise AttributeError(
"{!r} object has no attribute {!r}".format(
self.__class__.__name__, name
)
)
value = None
try:
value = self._params[name]
except KeyError:
# compound types should never throw AttributeError and return empty
# container instead
if name in self._param_defs:
pinfo = self._param_defs[name]
if pinfo.get("multi"):
value = self._params.setdefault(name, [])
elif pinfo.get("hash"):
value = self._params.setdefault(name, {})
if value is None:
raise AttributeError(
"{!r} object has no attribute {!r}".format(
self.__class__.__name__, name
)
)
# wrap nested dicts in AttrDict for convenient access
if isinstance(value, collections_abc.Mapping):
return AttrDict(value)
return value