Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

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

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

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

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.

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'>
Dominant language
Python
Stars
1.1k
Forks
165
Avg merge
3d 11h
Merged PRs (30d)
5

Getting set up

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.

More from python-attrs/cattrs

All issues in python-attrs/cattrs

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.