MCPcopy
hub / github.com/python-attrs/attrs / _asdict_anything

Function _asdict_anything

src/attr/_funcs.py:154–229  ·  view source on GitHub ↗

``asdict`` only works on attrs instances, this works on anything.

(
    val,
    is_key,
    filter,
    dict_factory,
    retain_collection_types,
    value_serializer,
)

Source from the content-addressed store, hash-verified

152
153
154def _asdict_anything(
155 val,
156 is_key,
157 filter,
158 dict_factory,
159 retain_collection_types,
160 value_serializer,
161):
162 """
163 ``asdict`` only works on attrs instances, this works on anything.
164 """
165 val_type = type(val)
166 if val_type in _ATOMIC_TYPES:
167 rv = val
168 if value_serializer is not None:
169 rv = value_serializer(None, None, rv)
170 elif getattr(val_type, "__attrs_attrs__", None) is not None:
171 # Attrs class.
172 rv = asdict(
173 val,
174 recurse=True,
175 filter=filter,
176 dict_factory=dict_factory,
177 retain_collection_types=retain_collection_types,
178 value_serializer=value_serializer,
179 )
180 elif issubclass(val_type, (tuple, list, set, frozenset)):
181 if retain_collection_types is True:
182 cf = val.__class__
183 elif is_key:
184 cf = tuple
185 else:
186 cf = list
187
188 rv = cf(
189 [
190 _asdict_anything(
191 i,
192 is_key=False,
193 filter=filter,
194 dict_factory=dict_factory,
195 retain_collection_types=retain_collection_types,
196 value_serializer=value_serializer,
197 )
198 for i in val
199 ]
200 )
201 elif issubclass(val_type, dict):
202 df = dict_factory
203 rv = df(
204 (
205 _asdict_anything(
206 kk,
207 is_key=True,
208 filter=filter,
209 dict_factory=df,
210 retain_collection_types=retain_collection_types,
211 value_serializer=value_serializer,

Callers 1

asdictFunction · 0.85

Calls 1

asdictFunction · 0.70

Tested by

no test coverage detected