python-attrs / python-attrs/cattrs

'_UnionGenericAlias' is deprecated and slated for removal in Python 3.17

Open
#635 1 comment 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.1k
Forks
159
Avg merge
12h 21m
Merged PRs (30d)
6

Description

Just a heads-up of a deprecation message emitted in Python3.14

/opt/hostedtoolcache/Python/3.14.0-alpha.6/x64/lib/python3.14/site-packages/cattrs/preconf/json.py:54: in make_converter
    configure_converter(res)
        args       = ()
        kwargs     = {'unstruct_collection_overrides': {<class 'collections.abc.Set'>: <class 'list'>, <class 'collections.Counter'>: <class 'dict'>}}
        res        = <cattrs.preconf.json.JsonConverter object at 0x7fd7ad42f800>
/opt/hostedtoolcache/Python/3.14.0-alpha.6/x64/lib/python3.14/site-packages/cattrs/preconf/json.py:35: in configure_converter
    converter.register_unstructure_hook(
        converter  = <cattrs.preconf.json.JsonConverter object at 0x7fd7ad42f800>
/opt/hostedtoolcache/Python/3.14.0-alpha.6/x64/lib/python3.14/site-packages/cattrs/converters.py:345: in register_unstructure_hook
    if is_union_type(cls):
        cls        = <class 'bytes'>
        func       = <function configure_converter.<locals>.<lambda> at 0x7fd7ad68d010>
        self       = <cattrs.preconf.json.JsonConverter object at 0x7fd7ad42f800>
/opt/hostedtoolcache/Python/3.14.0-alpha.6/x64/lib/python3.14/site-packages/cattrs/_compat.py:292: in is_union_type
    or (isinstance(obj, _UnionGenericAlias) and obj.__origin__ is Union)
        UnionType  = <class 'typing.Union'>
        obj        = <class 'bytes'>
/opt/hostedtoolcache/Python/3.14.0-alpha.6/x64/lib/python3.14/typing.py:1652: in __instancecheck__
    warnings._deprecated("_UnionGenericAlias", remove=(3, 17))
        inst       = <class 'bytes'>
        self       = <class 'typing._UnionGenericAlias'>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Inspect cattrs/_compat.py, especially is_union_type around the deprecated _UnionGenericAlias check, and reproduce the warning under Python 3.14. Confirm that the compatibility logic no longer emits the deprecation warning while preserving union detection behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.