Skip to content

RecursionError raised on deepcopy of a sheet #250

@dsluo

Description

@dsluo

To reproduce:

Python 3.9.5 (default, May 11 2021, 08:20:37) 
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from copy import deepcopy
>>> import pyexcel
>>> s = pyexcel.Sheet()
>>> deepcopy(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.9/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/usr/lib/python3.9/copy.py", line 270, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.9/copy.py", line 146, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.9/copy.py", line 230, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.9/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/usr/lib/python3.9/copy.py", line 271, in _reconstruct
    if hasattr(y, '__setstate__'):
  File "/home/dsluo/thing/.venv/lib/python3.9/site-packages/pyexcel/internal/sheets/row.py", line 164, in __getattr__
    if attr not in self._ref.rownames:
  File "/home/dsluo/thing/.venv/lib/python3.9/site-packages/pyexcel/internal/sheets/row.py", line 164, in __getattr__
    if attr not in self._ref.rownames:
  File "/home/dsluo/thing/.venv/lib/python3.9/site-packages/pyexcel/internal/sheets/row.py", line 164, in __getattr__
    if attr not in self._ref.rownames:
  [Previous line repeated 989 more times]
RecursionError: maximum recursion depth exceeded

This came up during unit testing using Django's testing framework during the setUpTestData() phase.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions