Skip to content

Structure failed with typing_extensions.Any #488

@WEGFan

Description

@WEGFan
  • cattrs version: 23.2.3
  • Python version: 3.9.18, 3.10.13
  • Operating System: WSL-Ubuntu-22.04

Description

Structure failed and raises cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing_extensions.Any. Register a structure hook for it.. It succeeds if I use typing.Any.

typing_extension version is 4.9.0

What I Did

>>> import cattrs
>>> import typing as t
>>> import typing_extensions as te
>>> cattrs.structure(1, te.Any)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.10/site-packages/cattrs/converters.py", line 332, in structure
    return self._structure_func.dispatch(cl)(obj, cl)
  File "/usr/local/lib/python3.10/site-packages/cattrs/fns.py", line 17, in raise_error
    raise StructureHandlerNotFoundError(msg, type_=cl)
cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing_extensions.Any. Register a structure hook for it.
>>> cattrs.structure(1, t.Any)
1
>>> cattrs.structure([1], list[te.Any])
  + Exception Group Traceback (most recent call last):
  |   File "<stdin>", line 1, in <module>
  |   File "/usr/local/lib/python3.10/site-packages/cattrs/converters.py", line 332, in structure
  |     return self._structure_func.dispatch(cl)(obj, cl)
  |   File "/usr/local/lib/python3.10/site-packages/cattrs/converters.py", line 531, in _structure_list
  |     raise IterableValidationError(
  | cattrs.errors.IterableValidationError: While structuring list[typing_extensions.Any] (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.10/site-packages/cattrs/converters.py", line 521, in _structure_list
    |     res.append(handler(e, elem_type))
    |   File "/usr/local/lib/python3.10/site-packages/cattrs/fns.py", line 17, in raise_error
    |     raise StructureHandlerNotFoundError(msg, type_=cl)
    | cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing_extensions.Any. Register a structure hook for it.
    | Structuring list[typing_extensions.Any] @ index 0
    +------------------------------------
>>> cattrs.structure([1], list[t.Any])
[1]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions