From e212be4c9e851166d4273451f3c9474814bd7e3c Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 26 Oct 2022 10:06:30 +0200 Subject: [PATCH] Fix compatibility with pytest 7.2 (#106) With pytest 7.2, the remaining parts of the "py.path" library got vendored, to get rid of the dependency: https://github.com/pytest-dev/pytest/pull/10396 However, this breaks due to pytest_mypy_plugins importing private API: File ".../pytest_mypy_plugins/collect.py", line 13, in from py._path.local import LocalPath ModuleNotFoundError: No module named 'py._path'; 'py' is not a package Use py.path.local instead (the public name of the same type), which is part of the shim included in pytest. --- CHANGELOG.md | 6 ++++++ pytest_mypy_plugins/collect.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4b01a5..be0fd68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Version history +## Version 1.10.1 + +### Bugfixes + +- Fixes compatibility with pytest 7.2, broken due to a private import from + `py._path`. ## Version 1.10.0 diff --git a/pytest_mypy_plugins/collect.py b/pytest_mypy_plugins/collect.py index a8ad8a0..637049d 100644 --- a/pytest_mypy_plugins/collect.py +++ b/pytest_mypy_plugins/collect.py @@ -6,11 +6,11 @@ from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Mapping, Optional, Set import pkg_resources +import py.path import pytest import yaml from _pytest.config.argparsing import Parser from _pytest.nodes import Node -from py._path.local import LocalPath from pytest_mypy_plugins import utils @@ -151,7 +151,7 @@ def pytest_collect_file(file_path: pathlib.Path, parent: Node) -> Optional[YamlT else: - def pytest_collect_file(path: LocalPath, parent: Node) -> Optional[YamlTestFile]: # type: ignore[misc] + def pytest_collect_file(path: py.path.local, parent: Node) -> Optional[YamlTestFile]: # type: ignore[misc] if path.ext in {".yaml", ".yml"} and path.basename.startswith(("test-", "test_")): return YamlTestFile.from_parent(parent, fspath=path) return None