Skip to content

Commit

Permalink
Do not require cloudpickle for PyPy (#892)
Browse files Browse the repository at this point in the history
* Do not require cloudpickle for PyPy

The cloudpickle package relies on CPython implementation details,
and does not even import on PyPy:

```
ImportError while importing test module '/tmp/attrs/tests/test_3rd_party.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/pypy3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_3rd_party.py:7: in <module>
    import cloudpickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/__init__.py:4: in <module>
    from cloudpickle.cloudpickle import *  # noqa
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/cloudpickle.py:57: in <module>
    from .compat import pickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/compat.py:13: in <module>
    from _pickle import Pickler  # noqa: F401
E   ModuleNotFoundError: No module named '_pickle'
```

Disable the dependency for PyPy and make the test handle missing
cloudpickle gracefully.

* Enable testing on pypy-3.8

* add a news entry

Co-authored-by: Hynek Schlawack <[email protected]>
  • Loading branch information
mgorny and hynek authored Dec 29, 2021
1 parent ce50f40 commit 03dd713
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "pypy-2.7", "pypy-3.7"]
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "pypy-2.7", "pypy-3.7", "pypy-3.8"]

steps:
- uses: actions/checkout@v2
Expand Down
1 change: 1 addition & 0 deletions changelog.d/892.change.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed the test suite on PyPy3.8 where cloudpickle does not work.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"docs": ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"],
"tests_no_zope": [
# For regression test to ensure cloudpickle compat doesn't break.
"cloudpickle",
'cloudpickle; python_implementation == "CPython"',
# 5.0 introduced toml; parallel was broken until 5.0.2
"coverage[toml]>=5.0.2",
"hypothesis",
Expand Down
5 changes: 4 additions & 1 deletion tests/test_3rd_party.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
Tests for compatibility against other Python modules.
"""

import cloudpickle
import pytest

from hypothesis import given

from .strategies import simple_classes


cloudpickle = pytest.importorskip("cloudpickle")


class TestCloudpickleCompat(object):
"""
Tests for compatibility with ``cloudpickle``.
Expand Down

0 comments on commit 03dd713

Please sign in to comment.