diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2327f5b..5d63911 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.10', '3.11', '3.12'] + python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v2 diff --git a/conftest.py b/conftest.py index 3cf9d22..dcbc835 100644 --- a/conftest.py +++ b/conftest.py @@ -1,13 +1,48 @@ +# type: ignore +import re +import doctest + collect_ignore = ['setup.py'] pytest_plugins = ("pytest_cov", "subtests") +OutputChecker = doctest.OutputChecker + + +numpy2_float64_pattern = r'np\.float64\((?Pinf|[+-]?\d*\.\d+)\)' + +def ensure_numpy_1_style_repr(repr_: str)-> str: + return re.sub( + numpy2_float64_pattern, + lambda m: m['num'], + repr_, + ) + + +class Numpy1Numpy2AgnosticOutputChecker(doctest.OutputChecker): + + def check_output(self, want, got, optionflags): + + numpy_1_style_want = ensure_numpy_1_style_repr(want) + numpy_1_style_got = ensure_numpy_1_style_repr(got) + + return super().check_output(numpy_1_style_want, numpy_1_style_got, optionflags) + + + + def pytest_configure(config): import sys sys._called_from_test = True + doctest.OutputChecker = Numpy1Numpy2AgnosticOutputChecker + def pytest_unconfigure(config): import sys del sys._called_from_test + doctest.OutputChecker = OutputChecker + + + diff --git a/pyproject.toml b/pyproject.toml index 84e10e7..e9d2c0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ docs = [ ] test = [ "array-api-strict", - "numpy<2", # NumPy 2 changes array repr, affecting doctests. + "numpy", "pytest", "pytest-cov", "pytest-subtests", @@ -78,4 +78,4 @@ build-backend = "setuptools.build_meta" include = ["dcor*"] [tool.setuptools.dynamic] -version = {attr = "dcor.__version__"} \ No newline at end of file +version = {attr = "dcor.__version__"}