Skip to content

AttributeError: 'code' object has no attribute 'co_endlinetable' with python 3.11 #514

@Pierre-Sassoulas

Description

@Pierre-Sassoulas

Hello, thank you for your work on dill :)

We had a crash when trying to upgrade to python 3.11, with the following stacktrace:

 Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/runner/work/pylint/pylint/pylint/__main__.py", line 10, in <module>
    pylint.run_pylint()
    ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/pylint/__init__.py", line 25, in run_pylint
    PylintRun(argv or sys.argv[1:])
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/pylint/lint/run.py", line 204, in __init__
    linter.check(args)
    ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/pylint/lint/pylinter.py", line 654, in check
    check_parallel(
    ^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/pylint/lint/parallel.py", line 141, in check_parallel
    jobs, initializer=initializer, initargs=[dill.dumps(linter)]
                                             ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 364, in dumps
    dump(obj, file, protocol, byref, fmode, recurse, **kwds)#, strictio)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 336, in dump
    Pickler(file, protocol, **_kwds).dump(obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 620, in dump
    StockPickler.dump(self, obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 487, in dump
    self.save(obj)
    ^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 717, in save_reduce
    save(state)
    ^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1251, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 998, in _batch_setitems
    save(v)
    ^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 717, in save_reduce
    save(state)
    ^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1251, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 998, in _batch_setitems
    save(v)
    ^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1251, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 998, in _batch_setitems
    save(v)
    ^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1251, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 1003, in _batch_setitems
    save(v)
    ^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1963, in save_function
    _save_with_postproc(pickler, (_create_function, (
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1140, in _save_with_postproc
    pickler.save_reduce(*reduction, obj=obj)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 692, in save_reduce
    save(args)
    ^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 902, in save_tuple
    save(element)
    ^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.0-beta.3/x64/lib/python3.11/pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
    ^^^^^^^^^^^^
  File "/home/runner/work/pylint/pylint/venv/lib/python3.11/site-packages/dill/_dill.py", line 1187, in save_code
    obj.co_firstlineno, obj.co_lnotab, obj.co_endlinetable,
                                       ^^^^^^^^^^^^^^^^^^^
AttributeError: 'code' object has no attribute 'co_endlinetable'. Did you mean: 'co_linetable'?

See https://github.com/PyCQA/pylint/runs/6950183172?check_suite_focus=true#step:7:3716 and pylint-dev/pylint#6551 for the context.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions