From f0c1ec46c9833f896d518598cce44c4f1dbc3670 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Mar 2026 22:21:29 +0000 Subject: [PATCH 1/2] Initial plan From 73d0ec42392dd7fa7a16ddfd2edd379f98d8058b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Mar 2026 22:26:10 +0000 Subject: [PATCH 2/2] refactor: switch to stdlib importlib resources and metadata Co-authored-by: alexlib <747110+alexlib@users.noreply.github.com> --- openpiv/__init__.py | 14 ++++++++++---- openpiv/piv.py | 2 +- openpiv/settings.py | 2 +- openpiv/test/test_package_metadata.py | 7 +++++++ openpiv/test/test_piv.py | 2 +- openpiv/test/test_process.py | 2 +- openpiv/test/test_validation.py | 2 +- openpiv/test/test_windef.py | 2 +- openpiv/test/test_windef_coverage.py | 2 +- openpiv/test/test_windef_detailed.py | 2 +- openpiv/tutorials/masking_tutorial.py | 2 +- openpiv/tutorials/tutorial1.py | 2 +- openpiv/tutorials/tutorial2.py | 2 +- openpiv/tutorials/windef_tutorial.py | 2 +- poetry.lock | 20 ++------------------ pyproject.toml | 1 - recipe/meta.yaml | 1 - setup.py | 3 +-- 18 files changed, 32 insertions(+), 38 deletions(-) create mode 100644 openpiv/test/test_package_metadata.py diff --git a/openpiv/__init__.py b/openpiv/__init__.py index 8ab93ba5..22200226 100644 --- a/openpiv/__init__.py +++ b/openpiv/__init__.py @@ -1,4 +1,10 @@ -def test(): - import pytest - - pytest.main() +from importlib.metadata import version + + +__version__ = version("OpenPIV") + + +def test(): + import pytest + + pytest.main() diff --git a/openpiv/piv.py b/openpiv/piv.py index 6001cc94..427189b4 100644 --- a/openpiv/piv.py +++ b/openpiv/piv.py @@ -2,7 +2,7 @@ import matplotlib.pyplot as plt from openpiv import pyprocess, tools, validation, filters -from importlib_resources import files +from importlib.resources import files import matplotlib.animation as animation diff --git a/openpiv/settings.py b/openpiv/settings.py index eeb6fa50..db2b00be 100644 --- a/openpiv/settings.py +++ b/openpiv/settings.py @@ -1,7 +1,7 @@ import pathlib from dataclasses import dataclass -from importlib_resources import files +from importlib.resources import files from typing import Optional, Tuple, Union import numpy as np diff --git a/openpiv/test/test_package_metadata.py b/openpiv/test/test_package_metadata.py new file mode 100644 index 00000000..3538b11f --- /dev/null +++ b/openpiv/test/test_package_metadata.py @@ -0,0 +1,7 @@ +from importlib.metadata import version + +import openpiv + + +def test_package_version_matches_metadata(): + assert openpiv.__version__ == version("OpenPIV") diff --git a/openpiv/test/test_piv.py b/openpiv/test/test_piv.py index f45b3cc0..4ccf59a6 100644 --- a/openpiv/test/test_piv.py +++ b/openpiv/test/test_piv.py @@ -1,7 +1,7 @@ """Tests for the piv module""" import numpy as np import pytest -from importlib_resources import files +from importlib.resources import files from openpiv import piv, tools from openpiv.pyprocess import extended_search_area_piv import matplotlib diff --git a/openpiv/test/test_process.py b/openpiv/test/test_process.py index d35d0534..f5f2c7ad 100755 --- a/openpiv/test/test_process.py +++ b/openpiv/test/test_process.py @@ -5,7 +5,7 @@ from skimage import img_as_ubyte from scipy.ndimage import shift as shift_img # import pkg_resources as pkg -from importlib_resources import files +from importlib.resources import files from openpiv.pyprocess import extended_search_area_piv as piv from openpiv.pyprocess import fft_correlate_images, \ correlation_to_displacement diff --git a/openpiv/test/test_validation.py b/openpiv/test/test_validation.py index a2482877..95358ff0 100644 --- a/openpiv/test/test_validation.py +++ b/openpiv/test/test_validation.py @@ -1,7 +1,7 @@ """ Testing validation functions """ from typing import Tuple import numpy as np -from importlib_resources import files +from importlib.resources import files import matplotlib.pyplot as plt from openpiv.pyprocess import extended_search_area_piv as piv diff --git a/openpiv/test/test_windef.py b/openpiv/test/test_windef.py index 3166d3d5..5ddacc3b 100644 --- a/openpiv/test/test_windef.py +++ b/openpiv/test/test_windef.py @@ -8,7 +8,7 @@ import pathlib import numpy as np import warnings -from importlib_resources import files +from importlib.resources import files from openpiv import windef from openpiv.test import test_process from openpiv.tools import display_vector_field, display_vector_field_from_arrays, save diff --git a/openpiv/test/test_windef_coverage.py b/openpiv/test/test_windef_coverage.py index e136a6d0..7eccc1db 100644 --- a/openpiv/test/test_windef_coverage.py +++ b/openpiv/test/test_windef_coverage.py @@ -8,7 +8,7 @@ import tempfile import pathlib import types -from importlib_resources import files +from importlib.resources import files from openpiv import windef from openpiv.settings import PIVSettings diff --git a/openpiv/test/test_windef_detailed.py b/openpiv/test/test_windef_detailed.py index b075d9d7..9eeb0bef 100644 --- a/openpiv/test/test_windef_detailed.py +++ b/openpiv/test/test_windef_detailed.py @@ -5,7 +5,7 @@ import pytest import numpy as np import pathlib -from importlib_resources import files +from importlib.resources import files import matplotlib.pyplot as plt import tempfile import shutil diff --git a/openpiv/tutorials/masking_tutorial.py b/openpiv/tutorials/masking_tutorial.py index 4fe6e9f9..1c998ab2 100644 --- a/openpiv/tutorials/masking_tutorial.py +++ b/openpiv/tutorials/masking_tutorial.py @@ -1,5 +1,5 @@ import pathlib -from importlib_resources import files +from importlib.resources import files import numpy as np import matplotlib.pyplot as plt from openpiv import tools, scaling, pyprocess, validation, filters,preprocess diff --git a/openpiv/tutorials/tutorial1.py b/openpiv/tutorials/tutorial1.py index 1a1f2750..d59815e4 100644 --- a/openpiv/tutorials/tutorial1.py +++ b/openpiv/tutorials/tutorial1.py @@ -1,4 +1,4 @@ -from importlib_resources import files +from importlib.resources import files import numpy as np from openpiv import tools, pyprocess, scaling, validation, filters diff --git a/openpiv/tutorials/tutorial2.py b/openpiv/tutorials/tutorial2.py index 51cf0ad9..d161384c 100644 --- a/openpiv/tutorials/tutorial2.py +++ b/openpiv/tutorials/tutorial2.py @@ -1,5 +1,5 @@ """ Tutorial of using window deformation multi-pass """ -from importlib_resources import files +from importlib.resources import files from openpiv import tools, pyprocess, validation, filters diff --git a/openpiv/tutorials/windef_tutorial.py b/openpiv/tutorials/windef_tutorial.py index dff053ba..4dfb6bcd 100644 --- a/openpiv/tutorials/windef_tutorial.py +++ b/openpiv/tutorials/windef_tutorial.py @@ -1,4 +1,4 @@ -from importlib_resources import files +from importlib.resources import files from openpiv import windef diff --git a/poetry.lock b/poetry.lock index c2eb7622..092be4f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. [[package]] name = "colorama" @@ -216,22 +216,6 @@ rawpy = ["numpy (>2)", "rawpy"] test = ["fsspec[github]", "pytest", "pytest-cov"] tifffile = ["tifffile"] -[[package]] -name = "importlib-resources" -version = "5.12.0" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.7" -groups = ["main"] -files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8 ; python_version < \"3.12\"", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\""] - [[package]] name = "iniconfig" version = "2.0.0" @@ -871,4 +855,4 @@ telegram = ["requests"] [metadata] lock-version = "2.1" python-versions = ">=3.10" -content-hash = "18a4c5bcd109ce624b0d436a0401d4c0e3c9fea9fa3087a9167e7401e694e25f" +content-hash = "d4e0acb48ec0518f93ac096858a3258e54d61b459af0f5a7b9fb6b41d13738bf" diff --git a/pyproject.toml b/pyproject.toml index 6dbdeaf6..c690a1af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,6 @@ scikit-image = ">=0.23.0" scipy = ">=1.11.0" natsort = ">=8.4.0" tqdm = ">=4.66.0" -importlib_resources = ">=5.12.0" [tool.poetry.dev-dependencies] pytest = "^7.4.3" diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 19beb968..7443b1b9 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -27,7 +27,6 @@ requirements: - scipy - natsort - tqdm - - importlib_resources - arm_pyart test: diff --git a/setup.py b/setup.py index bcbb417f..0e44fd6b 100644 --- a/setup.py +++ b/setup.py @@ -25,8 +25,7 @@ 'scikit-image>=0.23.0', 'scipy>=1.11.0', 'natsort>=8.4.0', - 'tqdm>=4.66.0', - 'importlib_resources>=5.12.0' + 'tqdm>=4.66.0' ], extras_require={"tests": ["pytest"]}, classifiers=[