New submission from Serhiy Storchaka <storchaka+cpyt...@gmail.com>:

I started reviewing and rewriting Objects/unionobject.c several weeks ago. Some 
discovered bugs were reported and fixed in separate issues: issue44606, 
issue44632, issue44635, issue44636, issue44646, issue44652. Before fixing the 
remaining bugs (issue44633, issue44642, issue44653) I want to merge some minor 
changes:

* Rename _Py_UnionType to _PyUnion_Type. It is how PyTypeObject instances are 
named.
* Add _PyUnion_Check() and _PyGenericAlias_Check(). It simplified the code.
* Do not expose _Py_Union(). It is only used locally.
* Move declarations of _Py_make_parameters and _Py_subs_parameters from 
genericaliasobject.h to internal/pycore_unionobject.h. They are for internal 
use only.
* Fix a possible leak in dedup_and_flatten_args().
* Significantly simplify union_richcompare(). The Python implementation can be 
used for comparing types.Union with typing.Union.
* Perform cheaper tests before more expensive tests in is_unionable().
* Optimize __module__ look up in is_typing_module() and support types without 
__module__.
* Fix outdated comments.
* Minor style fixes.
* Extract related tests to separate class.
* Make some tests more accurate: they should test for TypeError only specific 
operators, not constructors.

I am going to backport these changes to 3.10 to make backporting of future 
fixes easier.

----------
components: Interpreter Core
messages: 397635
nosy: gvanrossum, kj, serhiy.storchaka
priority: normal
severity: normal
status: open
title: Refactor and clean up the union type implementation
versions: Python 3.10, Python 3.11

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44654>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to