[issue42189] copy.deepcopy() no longer works on platform.uname_result objects

Robert O'Callahan report at bugs.python.org
Wed Oct 28 21:53:35 EDT 2020


New submission from Robert O'Callahan <rocallahan at gmail.com>:

Starting from Python 3.9, copy.deepcopy can't copy a platform.uname_result object.

```
Python 3.9.0 (default, Oct  6 2020, 00:00:00) 
[GCC 10.2.1 20200826 (Red Hat 10.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> import copy
>>> u = platform.uname()
>>> print(u)
uname_result(system='Linux', node='localhost.localdomain', release='5.8.16-300.fc33.x86_64', version='#1 SMP Mon Oct 19 13:18:33 UTC 2020', machine='x86_64')
>>> v = copy.deepcopy(u)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python3.9/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/usr/lib64/python3.9/copy.py", line 264, in _reconstruct
    y = func(*args)
  File "/usr/lib64/python3.9/copyreg.py", line 91, in __newobj__
    return cls.__new__(cls, *args)
TypeError: <lambda>() takes 6 positional arguments but 7 were given
```

Looks similar to issue 42163 but I guess it might need to be fixed differently.

This has broken building Intel's Xed library, which uses a Python-based build system: https://github.com/intelxed/mbuild

----------
components: Library (Lib)
messages: 379853
nosy: rocallahan
priority: normal
severity: normal
status: open
title: copy.deepcopy() no longer works on platform.uname_result objects
type: behavior
versions: Python 3.10, Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42189>
_______________________________________


More information about the Python-bugs-list mailing list