Skip to content

Upgrade pytest from 8.3.3 to 8.3.4 triggers AttributeError: module 'code' has no attribute '__path__'. Did you mean: '__all__'? #13026

@petervandenabeele

Description

@petervandenabeele
  • a detailed description of the bug or problem you are having

I have a number of pytest tests that used to work in 8.3.3.

Since I upgraded to pytest 8.3.4, these tests fail reliably in 2 different projects.
(see details below).

  • output of pip list from the virtual environment you are using
poetry run pip list
Package                   Version
------------------------- --------------
anyio                     4.6.2.post1
appnope                   0.1.4
argon2-cffi               23.1.0
argon2-cffi-bindings      21.2.0
arrow                     1.3.0
asttokens                 3.0.0
async-lru                 2.0.4
attrs                     24.2.0
babel                     2.16.0
beautifulsoup4            4.12.3
black                     24.10.0
bleach                    6.2.0
boto3                     1.35.74
botocore                  1.35.74
build                     1.2.2.post1
CacheControl              0.14.0
certifi                   2024.8.30
cffi                      1.17.1
charset-normalizer        3.4.0
cleo                      2.1.0
click                     8.1.7
comm                      0.2.2
crashtest                 0.4.1
debugpy                   1.8.9
decorator                 5.1.1
defusedxml                0.7.1
distlib                   0.3.9
dulwich                   0.21.7
executing                 2.1.0
fastjsonschema            2.21.1
filelock                  3.16.1
fqdn                      1.5.1
h11                       0.14.0
httpcore                  1.0.7
httpx                     0.28.0
idna                      3.10
iniconfig                 2.0.0
installer                 0.7.0
ipykernel                 6.29.5
ipython                   8.30.0
isoduration               20.11.0
jaraco.classes            3.4.0
jedi                      0.19.2
Jinja2                    3.1.4
jmespath                  1.0.1
json5                     0.10.0
jsonpointer               3.0.0
jsonschema                4.23.0
jsonschema-specifications 2024.10.1
jupyter_client            8.6.3
jupyter_core              5.7.2
jupyter-events            0.10.0
jupyter-lsp               2.2.5
jupyter_server            2.14.2
jupyter_server_terminals  0.5.3
jupyterlab                4.3.2
jupyterlab_pygments       0.3.0
jupyterlab_server         2.27.3
keyring                   24.3.1
MarkupSafe                3.0.2
matplotlib-inline         0.1.7
mistune                   3.0.2
more-itertools            10.5.0
msgpack                   1.1.0
mypy-extensions           1.0.0
nbclient                  0.10.1
nbconvert                 7.16.4
nbformat                  5.10.4
nest-asyncio              1.6.0
notebook_shim             0.2.4
numpy                     2.1.3
overrides                 7.7.0
packaging                 24.2
pandas                    2.2.3
pandocfilters             1.5.1
parso                     0.8.4
pathspec                  0.12.1
pexpect                   4.9.0
pip                       24.2
pkginfo                   1.11.2
platformdirs              4.3.6
plotly                    5.24.1
pluggy                    1.5.0
poetry                    1.8.4
poetry-core               1.9.1
poetry-plugin-export      1.8.0
prometheus_client         0.21.1
prompt_toolkit            3.0.48
psutil                    6.1.0
ptyprocess                0.7.0
pure_eval                 0.2.3
pycparser                 2.22
Pygments                  2.18.0
pyproject_hooks           1.2.0
pytest                    8.3.3
python-dateutil           2.9.0.post0
python-json-logger        2.0.7
pytz                      2024.2
PyYAML                    6.0.2
pyzmq                     26.2.0
RapidFuzz                 3.10.1
referencing               0.35.1
requests                  2.32.3
requests-toolbelt         1.0.0
rfc3339-validator         0.1.4
rfc3986-validator         0.1.1
rpds-py                   0.22.3
s3transfer                0.10.4
Send2Trash                1.8.3
setuptools                75.6.0
shellingham               1.5.4
six                       1.16.0
sniffio                   1.3.1
soupsieve                 2.6
stack-data                0.6.3
tenacity                  9.0.0
terminado                 0.18.1
tinycss2                  1.4.0
tokenize_rt               6.1.0
tomlkit                   0.13.2
tornado                   6.4.2
traitlets                 5.14.3
trove-classifiers         2024.10.21.16
types-python-dateutil     2.9.0.20241003
tzdata                    2024.2
uri-template              1.3.0
urllib3                   2.2.3
virtualenv                20.27.1
wcwidth                   0.2.13
webcolors                 24.11.1
webencodings              0.5.1
websocket-client          1.8.0
xattr                     1.1.0
  • pytest and operating system versions
pytest 8.3.4
Mac OS X updated
python 3.13.0

Maybe related to this code below:

[tool.pytest.ini_options]
addopts = [
"--import-mode=importlib",
]
pythonpath = "code"

✗ cat pyproject.toml
[tool.poetry]
name = "..."
version = "0.1.0"
description = "Analysis for ..."
authors = ["Peter Vandenabeele <peter.vandenabeele@...>"]
license = "Proprietary"
readme = "README.md"
package-mode = false

[tool.poetry.dependencies]
python = "^3.13"
numpy = "^2.1.2"
pandas = "^2.2.3"
jupyterlab = "^4.2.5"
boto3 = "^1.35.51"
plotly = "^5.24.1"

[tool.poetry.group.dev.dependencies]
pytest = "8.3.4"  # FAILS with 8.3.4 ;  SUCCESS with 8.3.3 
black = {version="*", extras=["jupyter"]}

[tool.pytest.ini_options]
addopts = [
    "--import-mode=importlib",
]
pythonpath = "code"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
  • minimal example if possible
___________________________________________ ERROR collecting code/tests/..._test.py ___________________________________________
<frozen importlib._bootstrap_external>:1564: in find_spec
    ???
<frozen importlib._bootstrap_external>:1362: in __init__
    ???
<frozen importlib._bootstrap_external>:1378: in _get_parent_path
    ???
E   AttributeError: module 'code' has no attribute '__path__'. Did you mean: '__all__'?
======================================================== short test summary info =========================================================
ERROR code/tests/....._test.py - AttributeError: module 'code' has no attribute '__path__'. Did you mean: '__all__'?
same 2/4
same 3/4
same 4/4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 4 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=========================================================== 4 errors in 0.09s ============================================================

✗ vim pyproject.toml  # CHANGE pytest back to 8.3.3

✗ poetry lock
Updating dependencies
Resolving dependencies... (4.0s)
Writing lock file

✗ poetry install
Installing dependencies from lock file

Package operations: 0 installs, 1 update, 0 removals

  - Downgrading pytest (8.3.4 -> 8.3.3)

✗ pytest
========================================================== test session starts ===========================================================
platform darwin -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
rootdir: /Users/peter_v/BF/github/...
configfile: pyproject.toml
plugins: anyio-4.6.2.post1
collected 58 items

code/tests/..._test.py ..                                                                                         [  3%]
code/tests/..._test.py ......                                                                                        [ 13%]
code/tests/..._test.py ..............                                                                              [ 37%]
code/tests/..._test.py ....................................                                                             [100%]

=========================================================== 58 passed in 0.39s ===========================================================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions