From ae890363f7208fe9894063211e49e40daf2b5841 Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 14:51:58 +0200 Subject: [PATCH 1/7] Clean up Python API tests to add `pydantic` and `ty` --- neopdf_pyapi/pyproject.toml | 11 +- neopdf_pyapi/tests/conftest.py | 123 ++++--- neopdf_pyapi/tests/test_converter.py | 25 +- neopdf_pyapi/tests/test_gridpdf.py | 39 ++- neopdf_pyapi/tests/test_interpolations.py | 187 ++++++----- .../tests/test_lhapdf_compatibility.py | 312 +++++++++--------- neopdf_pyapi/tests/test_manage.py | 30 +- neopdf_pyapi/tests/test_metadata.py | 43 ++- neopdf_pyapi/tests/test_parser.py | 10 +- neopdf_pyapi/tests/test_pdfs.py | 215 ++++++------ neopdf_pyapi/tests/test_uncertainty.py | 191 ++++++----- neopdf_pyapi/tests/test_writer.py | 19 +- pixi.lock | 157 +++++++++ pixi.toml | 1 + 14 files changed, 797 insertions(+), 566 deletions(-) diff --git a/neopdf_pyapi/pyproject.toml b/neopdf_pyapi/pyproject.toml index 78d544d6..53d3c0c7 100644 --- a/neopdf_pyapi/pyproject.toml +++ b/neopdf_pyapi/pyproject.toml @@ -22,7 +22,7 @@ dynamic = ["version"] readme = "README.md" [project.optional-dependencies] -test = ["pytest", "pytest-cov", "pytest-mpl", "matplotlib"] +test = ["pytest", "pytest-cov", "pytest-mpl", "matplotlib", "pydantic>=2.0"] [project.urls] homepage = "https://github.com/Radonirinaunimi/neopdf" @@ -42,3 +42,12 @@ addopts = [ '--strict-markers', ] markers = ["multipleversions: test Python API with multiple versions"] + +[tool.ty.environment] +python-version = "3.13" + +[tool.ty.rules] +# neopdf and lhapdf are PyO3/C extensions without stubs; surface real +# annotation issues without blocking on unresolvable module paths. +unresolved-import = "warn" +unresolved-attribute = "warn" diff --git a/neopdf_pyapi/tests/conftest.py b/neopdf_pyapi/tests/conftest.py index dac32fdd..66e74cd6 100644 --- a/neopdf_pyapi/tests/conftest.py +++ b/neopdf_pyapi/tests/conftest.py @@ -1,79 +1,110 @@ -import lhapdf -import pytest +from __future__ import annotations + +import lhapdf # type: ignore[import-untyped] import numpy as np +import pytest + +from neopdf.pdf import PDF as NeoPDF # type: ignore[import-untyped] +from pydantic import BaseModel, Field +from typing import Any, Iterator, Protocol + + +class XQ2Range(BaseModel): + xmin: float = Field(gt=0) + xmax: float = Field(gt=0, le=1) + q2min: float = Field(gt=0) + q2max: float = Field(gt=0) + + +class PDFFactory(Protocol): + """Factory that loads (and caches) a single PDF member by set name.""" + + def __call__(self, pdfname: str) -> Any: ... + + +class PDFsFactory(Protocol): + """Factory that loads (and caches) all PDF members by set name.""" + + def __call__(self, pdfname: str) -> list[Any]: ... + + +class LazyPDFsFactory(Protocol): + """Factory that lazily streams PDF members from a compressed archive.""" + + def __call__(self, pdfname: str) -> Iterator[Any]: ... + + +class XQ2PointsFactory(Protocol): + """Factory that produces log-spaced (x, Q²) grid points from a range.""" -from neopdf.pdf import PDF as NeoPDF -from neopdf.pdf import LazyPDFs -from typing import List, Dict, Iterator + def __call__(self, r: XQ2Range) -> tuple[np.ndarray, np.ndarray]: ... @pytest.fixture(scope="session") -def neo_pdf(): - cached_pdf = {} +def neo_pdf() -> PDFFactory: + cached: dict[str, Any] = {} - def _init_pdf(pdfname: str) -> Dict[str, NeoPDF]: - if pdfname not in cached_pdf: - cached_pdf[pdfname] = NeoPDF(pdfname) - return cached_pdf[pdfname] + def _init(pdfname: str) -> Any: + if pdfname not in cached: + cached[pdfname] = NeoPDF(pdfname) + return cached[pdfname] - return _init_pdf + return _init @pytest.fixture(scope="session") -def neo_pdfs(): - cached_pdf = {} +def neo_pdfs() -> PDFsFactory: + cached: dict[str, list[Any]] = {} - def _init_pdf(pdfname: str) -> Dict[str, List[NeoPDF]]: - if pdfname not in cached_pdf: - cached_pdf[pdfname] = NeoPDF.mkPDFs(pdfname) - return cached_pdf[pdfname] + def _init(pdfname: str) -> list[Any]: + if pdfname not in cached: + cached[pdfname] = NeoPDF.mkPDFs(pdfname) + return cached[pdfname] - return _init_pdf + return _init @pytest.fixture(scope="session") -def neo_pdfs_lazy(): - cached_pdf = {} +def neo_pdfs_lazy() -> LazyPDFsFactory: + cached: dict[str, Iterator[Any]] = {} - def _init_pdf(pdfname: str) -> Dict[str, Iterator[LazyPDFs]]: - if pdfname not in cached_pdf: - cached_pdf[pdfname] = NeoPDF.mkPDFs_lazy(pdfname) - return cached_pdf[pdfname] + def _init(pdfname: str) -> Iterator[Any]: + if pdfname not in cached: + cached[pdfname] = NeoPDF.mkPDFs_lazy(pdfname) + return cached[pdfname] - return _init_pdf + return _init @pytest.fixture(scope="session") -def lha_pdf(): - cached_pdf = {} +def lha_pdf() -> PDFFactory: + cached: dict[str, Any] = {} - def _init_pdf(pdfname: str) -> Dict[str, lhapdf.PDF]: - if pdfname not in cached_pdf: - cached_pdf[pdfname] = lhapdf.mkPDF(pdfname) - return cached_pdf[pdfname] + def _init(pdfname: str) -> Any: + if pdfname not in cached: + cached[pdfname] = lhapdf.mkPDF(pdfname) # type: ignore[attr-defined] + return cached[pdfname] - return _init_pdf + return _init @pytest.fixture(scope="session") -def lha_pdfs(): - cached_pdf = {} +def lha_pdfs() -> PDFsFactory: + cached: dict[str, list[Any]] = {} - def _init_pdf(pdfname: str) -> Dict[str, List[lhapdf.PDF]]: - if pdfname not in cached_pdf: - cached_pdf[pdfname] = lhapdf.mkPDFs(pdfname) - return cached_pdf[pdfname] + def _init(pdfname: str) -> list[Any]: + if pdfname not in cached: + cached[pdfname] = lhapdf.mkPDFs(pdfname) # type: ignore[attr-defined] + return cached[pdfname] - return _init_pdf + return _init @pytest.fixture(scope="session") -def xq2_points(): - def _xq2_points( - xmin: float, xmax: float, q2min: float, q2max: float - ) -> tuple[np.ndarray, np.ndarray]: - xs = np.geomspace(xmin, xmax, num=200) - q2s = np.geomspace(q2min, q2max, num=200) +def xq2_points() -> XQ2PointsFactory: + def _xq2_points(r: XQ2Range) -> tuple[np.ndarray, np.ndarray]: + xs = np.geomspace(r.xmin, r.xmax, num=200) + q2s = np.geomspace(r.q2min, r.q2max, num=200) return xs, q2s return _xq2_points diff --git a/neopdf_pyapi/tests/test_converter.py b/neopdf_pyapi/tests/test_converter.py index 72fbb786..d62d560a 100644 --- a/neopdf_pyapi/tests/test_converter.py +++ b/neopdf_pyapi/tests/test_converter.py @@ -1,10 +1,14 @@ +from __future__ import annotations + +import os import neopdf import pytest -import os + +from pathlib import Path @pytest.fixture -def create_dummy_files(tmp_path): +def create_dummy_files(tmp_path: Path) -> str: dummy_content = """ --- Some contents @@ -13,18 +17,13 @@ def create_dummy_files(tmp_path): lhapdf_dir = tmp_path / "LHAPDF" lhapdf_dir.mkdir() base_name = "NNPDF40_nnlo_as_01180" - files = [f"{base_name}.info", f"{base_name}_0001.dat"] - - for filename in files: - set_path = lhapdf_dir / filename - set_path.write_text(dummy_content) - + for filename in [f"{base_name}.info", f"{base_name}_0001.dat"]: + (lhapdf_dir / filename).write_text(dummy_content) return str(tmp_path) -def test_convert_lhapdf(create_dummy_files): - lhapdf_path = create_dummy_files - os.environ["LHAPDF_DATA_PATH"] = lhapdf_path - output_path = os.path.join(lhapdf_path, "test.neopdf.lz4") - neopdf.converter.convert_lhapdf("NNPDF40_nnlo_as_01180", output_path) +def test_convert_lhapdf(create_dummy_files: str) -> None: + os.environ["LHAPDF_DATA_PATH"] = create_dummy_files + output_path = os.path.join(create_dummy_files, "test.neopdf.lz4") + neopdf.converter.convert_lhapdf("NNPDF40_nnlo_as_01180", output_path) # type: ignore[attr-defined] assert os.path.exists(output_path) diff --git a/neopdf_pyapi/tests/test_gridpdf.py b/neopdf_pyapi/tests/test_gridpdf.py index 53fe990d..89a27436 100644 --- a/neopdf_pyapi/tests/test_gridpdf.py +++ b/neopdf_pyapi/tests/test_gridpdf.py @@ -1,15 +1,20 @@ +from __future__ import annotations + import numpy as np -from neopdf.gridpdf import SubGrid, GridArray +from conftest import XQ2Range, XQ2PointsFactory +from neopdf.gridpdf import SubGrid, GridArray # type: ignore[import-untyped] + + +XQ2_RANGE = XQ2Range(xmin=1e-5, xmax=1.0, q2min=1.65, q2max=1.0e8) class TestGridPDF: - def test_subgrid(self, xq2_points): - xmin, xmax, q2min, q2max = (1e-5, 1.0, 1.65, 1.0e8) - xs, q2s = xq2_points(xmin, xmax, q2min, q2max) + def test_subgrid(self, xq2_points: XQ2PointsFactory) -> None: + xs, q2s = xq2_points(XQ2_RANGE) kts = [0.5, 1.0] - xis = [0.0] # dummy values - deltas = [0.0] # dummy values + xis = [0.0] + deltas = [0.0] nucleons = [1.0, 2.0] alphas = [0.118, 0.120] grid = np.random.rand( @@ -22,7 +27,6 @@ def test_subgrid(self, xq2_points): len(q2s), 1, ) - subgrid = SubGrid(xs, q2s, kts, xis, deltas, nucleons, alphas, grid) assert subgrid.alphas_range() == (0.118, 0.120) @@ -39,12 +43,11 @@ def test_subgrid(self, xq2_points): 1, ] - def test_gridarray(self, xq2_points): - xmin, xmax, q2min, q2max = (1e-5, 1.0, 1.65, 1.0e8) - xs, q2s = xq2_points(xmin, xmax, q2min, q2max) + def test_gridarray(self, xq2_points: XQ2PointsFactory) -> None: + xs, q2s = xq2_points(XQ2_RANGE) kts = [0.5, 1.0] - xis = [0.0] # dummy values - deltas = [0.0] # dummy values + xis = [0.0] + deltas = [0.0] nucleons = [1.0, 2.0] alphas = [0.118, 0.120] grid = np.random.rand( @@ -57,25 +60,21 @@ def test_gridarray(self, xq2_points): len(q2s), 1, ) - - subgrid1 = SubGrid(xs, q2s, kts, xis, deltas, nucleons, alphas, grid) - subgrid2 = SubGrid(xs, q2s, kts, xis, deltas, nucleons, alphas, grid) + subgrid = SubGrid(xs, q2s, kts, xis, deltas, nucleons, alphas, grid) pids = [21, -2, -1, 1, 2] - grid_array = GridArray(pids, [subgrid1, subgrid2]) + grid_array = GridArray(pids, [subgrid, subgrid]) assert grid_array.pids() == pids assert len(grid_array.subgrids()) == 2 - def test_subgrid_extra_ranges(self, xq2_points): - xmin, xmax, q2min, q2max = (1e-5, 1.0, 1.65, 1.0e8) - xs, q2s = xq2_points(xmin, xmax, q2min, q2max) + def test_subgrid_extra_ranges(self, xq2_points: XQ2PointsFactory) -> None: + xs, q2s = xq2_points(XQ2_RANGE) kts = [0.5, 1.0] xis = [0.1, 0.2] deltas = [0.3, 0.4] nucleons = [1.0, 2.0] alphas = [0.118, 0.120] - grid = np.random.rand(2, 2, 2, 2, 2, len(xs), len(q2s), 1) subgrid = SubGrid(xs, q2s, kts, xis, deltas, nucleons, alphas, grid) diff --git a/neopdf_pyapi/tests/test_interpolations.py b/neopdf_pyapi/tests/test_interpolations.py index 56e7b8b2..9f110c71 100644 --- a/neopdf_pyapi/tests/test_interpolations.py +++ b/neopdf_pyapi/tests/test_interpolations.py @@ -1,16 +1,25 @@ +from __future__ import annotations + import numpy as np import pytest + import matplotlib.pyplot as plt from pathlib import Path -from typing import Union, List, Optional, Dict, Any +from matplotlib.figure import Figure +from pydantic import BaseModel, Field -from neopdf.pdf import PDF as NEOPDF -from neopdf.writer import compress -from neopdf.gridpdf import GridArray, SubGrid -from neopdf.metadata import InterpolatorType, SetType, MetaData, PhysicsParameters +from neopdf.gridpdf import GridArray, SubGrid # type: ignore[import-untyped] +from neopdf.metadata import ( # type: ignore[import-untyped] + InterpolatorType, + MetaData, + PhysicsParameters, + SetType, +) +from neopdf.pdf import PDF as NEOPDF # type: ignore[import-untyped] +from neopdf.writer import compress # type: ignore[import-untyped] -def f_ubar_abmp16_nnlo(x: Union[float, np.ndarray]) -> Union[float, np.ndarray]: +def f_ubar_abmp16_nnlo(x: float | np.ndarray) -> float | np.ndarray: """Analytic u-bar parametrization from ABMP16 NNLO.""" return ( 0.0703 @@ -19,61 +28,65 @@ def f_ubar_abmp16_nnlo(x: Union[float, np.ndarray]) -> Union[float, np.ndarray]: ) -def f_gluon_herapdf20_nlo(x: Union[float, np.ndarray]) -> Union[float, np.ndarray]: +def f_gluon_herapdf20_nlo(x: float | np.ndarray) -> float | np.ndarray: """Analytic gluon parametrization from HERAPDF 2.0 NLO.""" - return ( - 4.34 * x ** (-0.015) * (1 - x) ** 9.11 - 1.048 * x ** (-0.167) * (1 - x) ** 25.0 - ) + return 4.34 * x**-0.015 * (1 - x) ** 9.11 - 1.048 * x**-0.167 * (1 - x) ** 25.0 def remove_near_nodes( x_samples: np.ndarray, nodes: np.ndarray, rel_tol: float = 1e-1, - abs_tol: Optional[float] = None, + abs_tol: float | None = None, ) -> np.ndarray: - """Remove points from x_samples that are too close to grid - nodes to avoid trivial matches. + """Remove points from *x_samples* that are too close to grid nodes. + + Prevents trivial (on-node) matches that would inflate accuracy metrics. """ x = np.asarray(x_samples) - nodes = np.sort(np.asarray(nodes)) - diffs = np.diff(nodes) + sorted_nodes = np.sort(np.asarray(nodes)) + diffs = np.diff(sorted_nodes) valid_diffs = diffs[diffs > 0] - min_spacing = np.min(valid_diffs) if valid_diffs.size > 0 else np.min(np.abs(nodes)) + min_spacing = ( + np.min(valid_diffs) if valid_diffs.size > 0 else np.min(np.abs(sorted_nodes)) + ) if abs_tol is None: abs_tol = max(min_spacing * rel_tol, np.finfo(float).eps) - keep_mask = np.ones_like(x, dtype=bool) - for n in nodes: - keep_mask &= np.abs(x - n) > abs_tol - return x[keep_mask] + keep = np.ones_like(x, dtype=bool) + for n in sorted_nodes: + keep &= np.abs(x - n) > abs_tol + return x[keep] def create_cheby_grid(n_points: int, x_min: float, x_max: float) -> np.ndarray: - """Create a Chebyshev grid with logarithmic spacing.""" - u_min = np.log(x_min) - u_max = np.log(x_max) - grid_points = [] - for j in range(n_points): - t_j = np.cos(np.pi * (n_points - 1 - j) / (n_points - 1)) - u_j = u_min + (u_max - u_min) * (t_j + 1.0) / 2.0 - grid_points.append(np.exp(u_j)) - return np.array(grid_points) + """Chebyshev nodes mapped to [log(x_min), log(x_max)].""" + u_min, u_max = np.log(x_min), np.log(x_max) + ts = np.cos(np.pi * np.arange(n_points - 1, -1, -1) / (n_points - 1)) + return np.exp(u_min + (u_max - u_min) * (ts + 1.0) / 2.0) + + +class InterpolationSetup(BaseModel): + """Holds the temporary paths and grid parameters created by the fixture.""" + + model_config = {"arbitrary_types_allowed": True} + + path: Path + x_nodes: np.ndarray = Field(repr=False) + n_cheb_nodes: int = Field(gt=0) + n_cheb_nodes_b: int = Field(gt=0) class TestInterpolations: @pytest.fixture(scope="class") def interpolation_sets( - self, - tmp_path_factory: pytest.TempPathFactory, - ) -> Dict[str, Any]: - """Fixture to generate toy NeoPDF sets with different interpolation - types. - """ + self, tmp_path_factory: pytest.TempPathFactory + ) -> InterpolationSetup: + """Generate toy NeoPDF sets with each supported interpolation type.""" tmp_dir = tmp_path_factory.mktemp("interp_sets") N_NODES = 100 - N_CHEB_NODES = 50 - N_CHEB_NODES_B = 25 + N_CHEB = 50 + N_CHEB_B = 25 q2_values = np.logspace(1, 6, 40) x_values = np.logspace(-6, 0, N_NODES) @@ -93,57 +106,54 @@ def interpolation_sets( ) x_cheb = [ - create_cheby_grid(N_CHEB_NODES, 1e-6, 0.2), - create_cheby_grid(N_CHEB_NODES, 0.2, 1.0), + create_cheby_grid(N_CHEB, 1e-6, 0.2), + create_cheby_grid(N_CHEB, 0.2, 1.0), ] self._generate_pdf( tmp_dir, - f"logchebyshev_{N_CHEB_NODES}", + f"logchebyshev_{N_CHEB}", InterpolatorType.LogChebyshev, x_cheb, q2_values, ) x_cheb_b = [ - create_cheby_grid(N_CHEB_NODES_B, 1e-6, 0.2), - create_cheby_grid(N_CHEB_NODES_B, 0.2, 1.0), + create_cheby_grid(N_CHEB_B, 1e-6, 0.2), + create_cheby_grid(N_CHEB_B, 0.2, 1.0), ] self._generate_pdf( tmp_dir, - f"logchebyshev_{N_CHEB_NODES_B}", + f"logchebyshev_{N_CHEB_B}", InterpolatorType.LogChebyshev, x_cheb_b, q2_values, ) - - return { - "path": tmp_dir, - "x_nodes": x_values, - "N_CHEB_NODES": N_CHEB_NODES, - "N_CHEB_NODES_B": N_CHEB_NODES_B, - } + return InterpolationSetup( + path=tmp_dir, + x_nodes=x_values, + n_cheb_nodes=N_CHEB, + n_cheb_nodes_b=N_CHEB_B, + ) def _generate_pdf( self, path: Path, name: str, interp_type: InterpolatorType, - x_vals_list: List[np.ndarray], + x_vals_list: list[np.ndarray], q2_vals: np.ndarray, ) -> None: - global_x_min = min(xv.min() for xv in x_vals_list) - global_x_max = max(xv.max() for xv in x_vals_list) - - meta = self._get_metadata(interp_type, global_x_min, global_x_max, q2_vals) + x_min = min(xv.min() for xv in x_vals_list) + x_max = max(xv.max() for xv in x_vals_list) + meta = self._build_metadata(interp_type, x_min, x_max, q2_vals) subgrids = [self._create_subgrid(xv, q2_vals) for xv in x_vals_list] - grid_member = GridArray(pids=[-2, 21], subgrids=subgrids) compress( - grids=[grid_member], + grids=[GridArray(pids=[-2, 21], subgrids=subgrids)], metadata=meta, path=str(path / f"interp_test_{name}.neopdf.lz4"), ) - def _get_metadata( + def _build_metadata( self, interp_type: InterpolatorType, x_min: float, @@ -156,23 +166,22 @@ def _get_metadata( alphas_order_qcd=2, m_z=91.1876, ) - _as_q = np.geomspace(np.sqrt(q2_vals.min()), np.sqrt(q2_vals.max()), 6) - + q_vals = np.geomspace(np.sqrt(q2_vals.min()), np.sqrt(q2_vals.max()), 6) return MetaData( set_desc="Toy NeoPDF set", set_index=123456, num_members=1, x_min=x_min, x_max=x_max, - q_min=np.sqrt(q2_vals.min()), - q_max=np.sqrt(q2_vals.max()), + q_min=float(np.sqrt(q2_vals.min())), + q_max=float(np.sqrt(q2_vals.max())), xsi_min=0.0, xsi_max=0.0, delta_min=0.0, delta_max=0.0, flavors=[-2, 21], format="neopdf", - alphas_q_values=_as_q, + alphas_q_values=q_vals, alphas_vals=np.random.uniform(0.1, 0.2, 6), polarised=False, set_type=SetType.SpaceLike, @@ -182,14 +191,10 @@ def _get_metadata( def _create_subgrid(self, x_vals: np.ndarray, q2_vals: np.ndarray) -> SubGrid: pids = [-2, 21] - xq2_flavors = [] - for pid in pids: - xf_func = f_gluon_herapdf20_nlo if pid == 21 else f_ubar_abmp16_nnlo - xq2_array = np.zeros((x_vals.size, q2_vals.size)) - for i, x in enumerate(x_vals): - xq2_array[i, :] = xf_func(x) - xq2_flavors.append(xq2_array) - + xf_funcs = {21: f_gluon_herapdf20_nlo, -2: f_ubar_abmp16_nnlo} + xq2_flavors = [ + np.outer(xf_funcs[pid](x_vals), np.ones(q2_vals.size)) for pid in pids + ] grid = np.array(xq2_flavors).reshape( 1, 1, @@ -214,36 +219,30 @@ def _create_subgrid(self, x_vals: np.ndarray, q2_vals: np.ndarray) -> SubGrid: @pytest.mark.mpl_image_compare(baseline_dir="baseline", tolerance=10) @pytest.mark.parametrize("pid, label", [(21, "gluon"), (-2, "ubar")]) def test_interpolation_visual( - self, interpolation_sets: Dict[str, Any], pid: int, label: str - ) -> plt.Figure: - """Generates error plots and checks numerical consistency.""" - base_path = interpolation_sets["path"] - - pdf_lin = NEOPDF(str(base_path / "interp_test_logbilinear.neopdf.lz4")) - pdf_cub = NEOPDF(str(base_path / "interp_test_logbicubic.neopdf.lz4")) + self, interpolation_sets: InterpolationSetup, pid: int, label: str + ) -> Figure: + """Generate relative-error plots and check numerical consistency.""" + p = interpolation_sets.path + n_cheb = interpolation_sets.n_cheb_nodes + n_cheb_b = interpolation_sets.n_cheb_nodes_b - n_cheb = interpolation_sets["N_CHEB_NODES"] - n_cheb_b = interpolation_sets["N_CHEB_NODES_B"] - pdf_cheb = NEOPDF( - str(base_path / f"interp_test_logchebyshev_{n_cheb}.neopdf.lz4") - ) - pdf_cheb_b = NEOPDF( - str(base_path / f"interp_test_logchebyshev_{n_cheb_b}.neopdf.lz4") - ) + pdf_lin = NEOPDF(str(p / "interp_test_logbilinear.neopdf.lz4")) + pdf_cub = NEOPDF(str(p / "interp_test_logbicubic.neopdf.lz4")) + pdf_cheb = NEOPDF(str(p / f"interp_test_logchebyshev_{n_cheb}.neopdf.lz4")) + pdf_cheb_b = NEOPDF(str(p / f"interp_test_logchebyshev_{n_cheb_b}.neopdf.lz4")) x_tests = np.logspace(-6, 0, 250) - x_clean = remove_near_nodes(x_tests, interpolation_sets["x_nodes"]) - - xf_ref_func = f_gluon_herapdf20_nlo if pid == 21 else f_ubar_abmp16_nnlo - ref = xf_ref_func(x_clean) + x_clean = remove_near_nodes(x_tests, interpolation_sets.x_nodes) q2_test = 1e2 + xf_ref = f_gluon_herapdf20_nlo if pid == 21 else f_ubar_abmp16_nnlo + ref = xf_ref(x_clean) + res_lin = np.array([pdf_lin.xfxQ2(pid, x, q2_test) for x in x_clean]) res_cub = np.array([pdf_cub.xfxQ2(pid, x, q2_test) for x in x_clean]) res_cheb = np.array([pdf_cheb.xfxQ2(pid, x, q2_test) for x in x_clean]) res_cheb_b = np.array([pdf_cheb_b.xfxQ2(pid, x, q2_test) for x in x_clean]) - # Plotting fig, ax = plt.subplots(figsize=(5.6, 3.9)) ax.loglog( x_clean, @@ -280,19 +279,17 @@ def test_interpolation_visual( color="C1", alpha=0.7, ) - ax.set_xlabel("x") ax.set_ylabel(r"|f_interp / f_ref - 1|") ax.set_title(f"Interpolation Error - {label.upper()}") ax.set_xlim(1e-6, 1) ax.set_ylim(1e-16, 1) - shift_ylegend = 0.20 if label == "ubar" else 0.35 + shift = 0.20 if label == "ubar" else 0.35 ax.legend( fontsize=10, ncols=2, loc="center", frameon=False, - bbox_to_anchor=(0.52, shift_ylegend), + bbox_to_anchor=(0.52, shift), ) - return fig diff --git a/neopdf_pyapi/tests/test_lhapdf_compatibility.py b/neopdf_pyapi/tests/test_lhapdf_compatibility.py index 9e47e17e..bb57ccc4 100644 --- a/neopdf_pyapi/tests/test_lhapdf_compatibility.py +++ b/neopdf_pyapi/tests/test_lhapdf_compatibility.py @@ -1,187 +1,180 @@ +from __future__ import annotations + + +import lhapdf # type: ignore[import-untyped] +import neopdf import numpy as np import pytest -import lhapdf -import neopdf -from neopdf.uncertainty import uncertainty, CL_1_SIGMA +from neopdf.uncertainty import CL_1_SIGMA, uncertainty # type: ignore[import-untyped] +from typing import Any, TypedDict PDF_SET = "NNPDF40_nnlo_as_01180" MEMBER = 7 @pytest.fixture(scope="module") -def neo_ps(): +def neo_ps() -> Any: return neopdf.getPDFSet(PDF_SET) @pytest.fixture(scope="module") -def lha_ps(): - return lhapdf.getPDFSet(PDF_SET) +def lha_ps() -> Any: + return lhapdf.getPDFSet(PDF_SET) # type: ignore[attr-defined] @pytest.fixture(scope="module") -def neo_p(): +def neo_p() -> Any: return neopdf.mkPDF(PDF_SET, MEMBER) @pytest.fixture(scope="module") -def lha_p(): - return lhapdf.mkPDF(PDF_SET, MEMBER) +def lha_p() -> Any: + return lhapdf.mkPDF(PDF_SET, MEMBER) # type: ignore[attr-defined] class TestModuleLevelFunctions: - def test_verbosity_roundtrip(self): + def test_verbosity_roundtrip(self) -> None: neopdf.setVerbosity(3) assert neopdf.verbosity() == 3 neopdf.setVerbosity(0) assert neopdf.verbosity() == 0 - def test_get_pdf_set_returns_pdfset(self): - ps = neopdf.getPDFSet(PDF_SET) - assert isinstance(ps, neopdf.PDFSet) + def test_get_pdf_set_returns_pdfset(self) -> None: + assert isinstance(neopdf.getPDFSet(PDF_SET), neopdf.PDFSet) - def test_mk_pdf_returns_pdf(self): - p = neopdf.mkPDF(PDF_SET, 0) - assert isinstance(p, neopdf.pdf.PDF) + def test_mk_pdf_returns_pdf(self) -> None: + assert isinstance(neopdf.mkPDF(PDF_SET, 0), neopdf.pdf.PDF) - def test_mk_pdf_default_member(self): - p = neopdf.mkPDF(PDF_SET) - assert p.memberID == 0 + def test_mk_pdf_default_member(self) -> None: + assert neopdf.mkPDF(PDF_SET).memberID == 0 - def test_mk_pdfs_length_matches_lhapdf(self): - neo = neopdf.mkPDFs(PDF_SET) - lha = lhapdf.mkPDFs(PDF_SET) - assert len(neo) == len(lha) + def test_mk_pdfs_length_matches_lhapdf(self) -> None: + assert len(neopdf.mkPDFs(PDF_SET)) == len(lhapdf.mkPDFs(PDF_SET)) # type: ignore[attr-defined] - def test_available_pdf_sets_is_list_of_str(self): - sets = neopdf.availablePDFSets() + def test_available_pdf_sets_is_list_of_str(self) -> None: + sets: list[Any] = neopdf.availablePDFSets() assert isinstance(sets, list) assert all(isinstance(s, str) for s in sets) - def test_available_pdf_sets_contains_test_set(self): + def test_available_pdf_sets_contains_test_set(self) -> None: assert PDF_SET in neopdf.availablePDFSets() - def test_paths_returns_list_of_str(self): - ps = neopdf.paths() + def test_paths_returns_list_of_str(self) -> None: + ps: list[Any] = neopdf.paths() assert isinstance(ps, list) assert len(ps) >= 1 assert all(isinstance(p, str) for p in ps) - def test_set_paths_no_op(self): + def test_set_paths_no_op(self) -> None: neopdf.setPaths(["/tmp/fake"]) - def test_paths_append_no_op(self): + def test_paths_append_no_op(self) -> None: neopdf.pathsAppend("/tmp/fake") - def test_paths_prepend_no_op(self): + def test_paths_prepend_no_op(self) -> None: neopdf.pathsPrepend("/tmp/fake") class TestPDFSetClass: - def test_name(self, neo_ps, lha_ps): + def test_name(self, neo_ps: Any, lha_ps: Any) -> None: assert neo_ps.name == lha_ps.name - def test_size(self, neo_ps, lha_ps): + def test_size(self, neo_ps: Any, lha_ps: Any) -> None: assert neo_ps.size == lha_ps.size - def test_lhapdf_id(self, neo_ps, lha_ps): + def test_lhapdf_id(self, neo_ps: Any, lha_ps: Any) -> None: assert neo_ps.lhapdfID == lha_ps.lhapdfID - def test_error_type(self, neo_ps, lha_ps): + def test_error_type(self, neo_ps: Any, lha_ps: Any) -> None: assert neo_ps.errorType == lha_ps.errorType - def test_description_non_empty(self, neo_ps): + def test_description_non_empty(self, neo_ps: Any) -> None: assert len(neo_ps.description) > 0 - def test_len(self, neo_ps, lha_ps): + def test_len(self, neo_ps: Any, lha_ps: Any) -> None: assert len(neo_ps) == len(lha_ps) - def test_mkpdf_member_id(self, neo_ps, lha_ps): - neo_p = neo_ps.mkPDF(MEMBER) - lha_p = lha_ps.mkPDF(MEMBER) - assert neo_p.memberID == lha_p.memberID + def test_mkpdf_member_id(self, neo_ps: Any, lha_ps: Any) -> None: + assert neo_ps.mkPDF(MEMBER).memberID == lha_ps.mkPDF(MEMBER).memberID - def test_mkpdf_lhapdf_id(self, neo_ps, lha_ps): - neo_p = neo_ps.mkPDF(MEMBER) - lha_p = lha_ps.mkPDF(MEMBER) - assert neo_p.lhapdfID == lha_p.lhapdfID + def test_mkpdf_lhapdf_id(self, neo_ps: Any, lha_ps: Any) -> None: + assert neo_ps.mkPDF(MEMBER).lhapdfID == lha_ps.mkPDF(MEMBER).lhapdfID - def test_mkpdfs_count(self, neo_ps, lha_ps): - neo_members = neo_ps.mkPDFs() - lha_members = lha_ps.mkPDFs() - assert len(neo_members) == len(lha_members) + def test_mkpdfs_count(self, neo_ps: Any, lha_ps: Any) -> None: + assert len(neo_ps.mkPDFs()) == len(lha_ps.mkPDFs()) - def test_mkpdfs_member_ids(self, neo_ps): - members = neo_ps.mkPDFs() - for i, m in enumerate(members): + def test_mkpdfs_member_ids(self, neo_ps: Any) -> None: + for i, m in enumerate(neo_ps.mkPDFs()): assert m.memberID == i @pytest.mark.parametrize( - "x,q,pid", - [(1e-4, 10.0, 21), (0.1, 100.0, 1), (0.5, 1000.0, -5)], + "x,q,pid", [(1e-4, 10.0, 21), (0.1, 100.0, 1), (0.5, 1000.0, -5)] ) class TestPDFXfxQ: - def test_xfxq_equals_xfxq2(self, x, q, pid, neo_p): + def test_xfxq_equals_xfxq2(self, x: float, q: float, pid: int, neo_p: Any) -> None: """xfxQ(id, x, Q) must equal xfxQ2(id, x, Q²).""" assert neo_p.xfxQ(pid, x, q) == neo_p.xfxQ2(pid, x, q * q) - def test_xfxq_matches_lhapdf(self, x, q, pid, neo_p, lha_p): + def test_xfxq_matches_lhapdf( + self, x: float, q: float, pid: int, neo_p: Any, lha_p: Any + ) -> None: np.testing.assert_equal(neo_p.xfxQ(pid, x, q), lha_p.xfxQ(pid, x, q)) class TestPDFAlphaS: @pytest.mark.parametrize("q", [2.0, 10.0, 91.2, 1000.0]) - def test_alphasq_equals_alphasq2(self, q, neo_p): + def test_alphasq_equals_alphasq2(self, q: float, neo_p: Any) -> None: assert neo_p.alphasQ(q) == neo_p.alphasQ2(q * q) @pytest.mark.parametrize("q", [2.0, 10.0, 91.2, 1000.0]) - def test_alphasq_matches_lhapdf(self, q, neo_p, lha_p): + def test_alphasq_matches_lhapdf(self, q: float, neo_p: Any, lha_p: Any) -> None: np.testing.assert_equal(neo_p.alphasQ(q), lha_p.alphasQ(q)) class TestPDFIdentity: - def test_member_id(self, neo_p, lha_p): + def test_member_id(self, neo_p: Any, lha_p: Any) -> None: assert neo_p.memberID == lha_p.memberID - def test_lhapdf_id(self, neo_p, lha_p): + def test_lhapdf_id(self, neo_p: Any, lha_p: Any) -> None: assert neo_p.lhapdfID == lha_p.lhapdfID - def test_order_qcd(self, neo_p, lha_p): + def test_order_qcd(self, neo_p: Any, lha_p: Any) -> None: assert neo_p.orderQCD == lha_p.orderQCD - def test_quark_mass_charm(self, neo_p, lha_p): + def test_quark_mass_charm(self, neo_p: Any, lha_p: Any) -> None: np.testing.assert_allclose(neo_p.quarkMass(4), lha_p.quarkMass(4)) - def test_quark_mass_bottom(self, neo_p, lha_p): + def test_quark_mass_bottom(self, neo_p: Any, lha_p: Any) -> None: np.testing.assert_allclose(neo_p.quarkMass(5), lha_p.quarkMass(5)) - def test_quark_threshold_equals_mass(self, neo_p): + def test_quark_threshold_equals_mass(self, neo_p: Any) -> None: assert neo_p.quarkThreshold(4) == neo_p.quarkMass(4) assert neo_p.quarkThreshold(5) == neo_p.quarkMass(5) - def test_x_max(self, neo_p, lha_p): + def test_x_max(self, neo_p: Any, lha_p: Any) -> None: np.testing.assert_allclose(neo_p.xMax, lha_p.xMax) - def test_q2_min(self, neo_p, lha_p): + def test_q2_min(self, neo_p: Any, lha_p: Any) -> None: np.testing.assert_allclose(neo_p.q2Min, lha_p.q2Min) - def test_q2_max(self, neo_p, lha_p): + def test_q2_max(self, neo_p: Any, lha_p: Any) -> None: np.testing.assert_allclose(neo_p.q2Max, lha_p.q2Max) class TestPDFFlavors: - def test_flavors_match_lhapdf(self, neo_p, lha_p): + def test_flavors_match_lhapdf(self, neo_p: Any, lha_p: Any) -> None: assert sorted(neo_p.flavors()) == sorted(lha_p.flavors()) - def test_has_flavor_gluon(self, neo_p, lha_p): + def test_has_flavor_gluon(self, neo_p: Any, lha_p: Any) -> None: assert neo_p.hasFlavor(21) == lha_p.hasFlavor(21) - def test_has_flavor_unknown(self, neo_p, lha_p): + def test_has_flavor_unknown(self, neo_p: Any, lha_p: Any) -> None: assert neo_p.hasFlavor(99) == lha_p.hasFlavor(99) @pytest.mark.parametrize("pid", [-5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 21]) - def test_has_flavor_all_standard(self, pid, neo_p): + def test_has_flavor_all_standard(self, pid: int, neo_p: Any) -> None: assert neo_p.hasFlavor(pid) is True @@ -195,98 +188,96 @@ class TestPDFRangeChecks: (1e-4, 1e13, False), ], ) - def test_in_range_xq2_matches_lhapdf(self, x, q2, expected, neo_p, lha_p): + def test_in_range_xq2_matches_lhapdf( + self, x: float, q2: float, expected: bool, neo_p: Any, lha_p: Any + ) -> None: assert neo_p.inRangeXQ2(x, q2) == lha_p.inRangeXQ2(x, q2) - def test_in_range_xq_matches_lhapdf(self, neo_p, lha_p): + def test_in_range_xq_matches_lhapdf(self, neo_p: Any, lha_p: Any) -> None: for x, q in [(1e-4, 10.0), (0.5, 100.0), (2.0, 10.0)]: assert neo_p.inRangeXQ(x, q) == lha_p.inRangeXQ(x, q) - def test_in_range_x_matches_lhapdf(self, neo_p, lha_p): + def test_in_range_x_matches_lhapdf(self, neo_p: Any, lha_p: Any) -> None: for x in [1e-6, 0.1, 0.9, 1.5]: assert neo_p.inRangeX(x) == lha_p.inRangeX(x) - def test_in_range_q2_matches_lhapdf(self, neo_p, lha_p): + def test_in_range_q2_matches_lhapdf(self, neo_p: Any, lha_p: Any) -> None: for q2 in [1.0, 100.0, 1e10, 1e13]: assert neo_p.inRangeQ2(q2) == lha_p.inRangeQ2(q2) - def test_in_range_q_matches_lhapdf(self, neo_p, lha_p): + def test_in_range_q_matches_lhapdf(self, neo_p: Any, lha_p: Any) -> None: for q in [1.0, 10.0, 1e5, 1e7]: assert neo_p.inRangeQ(q) == lha_p.inRangeQ(q) class TestPDFSetProperty: - def test_set_property_not_none(self, neo_p): + def test_set_property_not_none(self, neo_p: Any) -> None: assert neo_p.set is not None - def test_set_property_is_pdfset(self, neo_p): + def test_set_property_is_pdfset(self, neo_p: Any) -> None: assert isinstance(neo_p.set, neopdf.PDFSet) - def test_set_property_name(self, neo_p): + def test_set_property_name(self, neo_p: Any) -> None: assert neo_p.set.name == PDF_SET - def test_set_property_none_when_loaded_by_lhaid(self): - from neopdf.pdf import PDF + def test_set_property_none_when_loaded_by_lhaid(self) -> None: + from neopdf.pdf import PDF # type: ignore[import-untyped] + + assert PDF.mkPDF_lhaid(14400).set is None + - p = PDF.mkPDF_lhaid(14400) - assert p.set is None +class PDFSetSummary(TypedDict): + name: str + size: int + lhapdfID: int + errorType: str -def _compute_xfxQ2_central(backend, pdfname, pid, x, q2): - pdf = backend.mkPDF(pdfname, 0) - return pdf.xfxQ2(pid, x, q2) +def _compute_xfxq2_central( + backend: Any, pdfname: str, pid: int, x: float, q2: float +) -> float: + return backend.mkPDF(pdfname, 0).xfxQ2(pid, x, q2) -def _collect_all_member_values(backend, pdfname, pid, x, q2): - pdfs = backend.mkPDFs(pdfname) - return [p.xfxQ2(pid, x, q2) for p in pdfs] +def _collect_all_member_values( + backend: Any, pdfname: str, pid: int, x: float, q2: float +) -> list[float]: + return [p.xfxQ2(pid, x, q2) for p in backend.mkPDFs(pdfname)] -def _inspect_set(backend, pdfname): +def _inspect_set(backend: Any, pdfname: str) -> PDFSetSummary: ps = backend.getPDFSet(pdfname) - return { - "name": ps.name, - "size": ps.size, - "lhapdfID": ps.lhapdfID, - "errorType": ps.errorType, - } + return PDFSetSummary( + name=ps.name, size=ps.size, lhapdfID=ps.lhapdfID, errorType=ps.errorType + ) -def _check_kinematics(backend, pdfname, x, q): - pdf = backend.mkPDF(pdfname, 0) - return pdf.inRangeXQ(x, q) +def _check_kinematics(backend: Any, pdfname: str, x: float, q: float) -> bool: + return backend.mkPDF(pdfname, 0).inRangeXQ(x, q) -@pytest.mark.parametrize( - "pid,x,q2", - [(21, 1e-4, 100.0), (1, 0.1, 1e4), (-3, 0.3, 1e6)], -) +@pytest.mark.parametrize("pid,x,q2", [(21, 1e-4, 100.0), (1, 0.1, 1e4), (-3, 0.3, 1e6)]) class TestBackendSwap: - def test_central_member_xfxq2(self, pid, x, q2): - lha_val = _compute_xfxQ2_central(lhapdf, PDF_SET, pid, x, q2) - neo_val = _compute_xfxQ2_central(neopdf, PDF_SET, pid, x, q2) + def test_central_member_xfxq2(self, pid: int, x: float, q2: float) -> None: + lha_val = _compute_xfxq2_central(lhapdf, PDF_SET, pid, x, q2) + neo_val = _compute_xfxq2_central(neopdf, PDF_SET, pid, x, q2) np.testing.assert_equal(neo_val, lha_val) - def test_all_member_values(self, pid, x, q2): + def test_all_member_values(self, pid: int, x: float, q2: float) -> None: lha_vals = _collect_all_member_values(lhapdf, PDF_SET, pid, x, q2) neo_vals = _collect_all_member_values(neopdf, PDF_SET, pid, x, q2) np.testing.assert_array_equal(neo_vals, lha_vals) class TestBackendSwapMetadata: - def test_set_metadata(self): - lha_meta = _inspect_set(lhapdf, PDF_SET) - neo_meta = _inspect_set(neopdf, PDF_SET) - assert neo_meta == lha_meta + def test_set_metadata(self) -> None: + assert _inspect_set(neopdf, PDF_SET) == _inspect_set(lhapdf, PDF_SET) - def test_kinematics_in_range(self): + def test_kinematics_in_range(self) -> None: for x, q in [(1e-3, 10.0), (0.5, 300.0), (2.0, 10.0)]: - assert _check_kinematics( - neopdf, - PDF_SET, - x, - q, - ) == _check_kinematics(lhapdf, PDF_SET, x, q) + assert _check_kinematics(neopdf, PDF_SET, x, q) == _check_kinematics( + lhapdf, PDF_SET, x, q + ) @pytest.mark.parametrize("pdfname", ["CT18NNLO_as_0118", "MSHT20qed_an3lo"]) @@ -302,60 +293,57 @@ class TestHasKeyGetEntry: "Format", ] - def test_has_key_mandatory(self, pdfname): + def test_has_key_mandatory(self, pdfname: str) -> None: neo_ps = neopdf.getPDFSet(pdfname) for key in self.MANDATORY_KEYS: assert neo_ps.has_key(key), f"PDFSet missing mandatory key '{key}'" - def test_has_key_absent(self, pdfname): - neo_ps = neopdf.getPDFSet(pdfname) - assert not neo_ps.has_key("NonExistentKey_xyz") + def test_has_key_absent(self, pdfname: str) -> None: + assert not neopdf.getPDFSet(pdfname).has_key("NonExistentKey_xyz") - def test_get_entry_num_members(self, pdfname): - lha_ps = lhapdf.getPDFSet(pdfname) + def test_get_entry_num_members(self, pdfname: str) -> None: + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] neo_ps = neopdf.getPDFSet(pdfname) assert int(neo_ps.get_entry("NumMembers")) == int( lha_ps.get_entry("NumMembers") ) - def test_get_entry_error_type(self, pdfname): - lha_ps = lhapdf.getPDFSet(pdfname) + def test_get_entry_error_type(self, pdfname: str) -> None: + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] neo_ps = neopdf.getPDFSet(pdfname) assert neo_ps.get_entry("ErrorType") == lha_ps.get_entry("ErrorType") - def test_get_entry_raises_key_error(self, pdfname): - neo_ps = neopdf.getPDFSet(pdfname) + def test_get_entry_raises_key_error(self, pdfname: str) -> None: with pytest.raises(KeyError): - neo_ps.get_entry("NonExistentKey_xyz") + neopdf.getPDFSet(pdfname).get_entry("NonExistentKey_xyz") - def test_keys_contains_mandatory(self, pdfname): - neo_ps = neopdf.getPDFSet(pdfname) - ks = neo_ps.keys() + def test_keys_contains_mandatory(self, pdfname: str) -> None: + ks: list[str] = neopdf.getPDFSet(pdfname).keys() assert isinstance(ks, list) for key in self.MANDATORY_KEYS: assert key in ks, f"key '{key}' missing from keys()" - def test_error_conf_level_when_key_present(self, pdfname): + def test_error_conf_level_when_key_present(self, pdfname: str) -> None: neo_ps = neopdf.getPDFSet(pdfname) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] if not lha_ps.has_key("ErrorConfLevel"): assert neo_ps.errorConfLevel == -1.0 else: assert neo_ps.errorConfLevel == lha_ps.errorConfLevel - def test_has_key_error_conf_level(self, pdfname): + def test_has_key_error_conf_level(self, pdfname: str) -> None: neo_ps = neopdf.getPDFSet(pdfname) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] assert neo_ps.has_key("ErrorConfLevel") == lha_ps.has_key("ErrorConfLevel") - def test_metadata_has_key(self, pdfname): + def test_metadata_has_key(self, pdfname: str) -> None: neo_p = neopdf.mkPDF(pdfname, 0) for key in self.MANDATORY_KEYS: assert neo_p.has_key(key), f"PDF missing mandatory key '{key}'" - def test_metadata_get_entry(self, pdfname): + def test_metadata_get_entry(self, pdfname: str) -> None: neo_p = neopdf.mkPDF(pdfname, 0) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] assert int(neo_p.get_entry("NumMembers")) == int(lha_ps.get_entry("NumMembers")) @@ -364,56 +352,64 @@ def test_metadata_get_entry(self, pdfname): "pid,x,q", [(21, 0.1, 100.0), (2, 0.01, 10.0), (-3, 0.3, 1000.0)] ) class TestPDFSetUncertainty: - def _values(self, pdfname: str, pid: int, x: float, q: float): - pdfs = neopdf.mkPDFs(pdfname) + def _values(self, pdfname: str, pid: int, x: float, q: float) -> list[float]: + pdfs: list[Any] = neopdf.mkPDFs(pdfname) if len(pdfs) <= 1: - pytest.skip(f"{pdfname} has only {len(pdfs)} member(s) installed") + pytest.skip( + f"{pdfname} has only {len(pdfs)} member(s) installed" + ) # ty: ignore[too-many-positional-arguments] return [p.xfxQ(pid, x, q) for p in pdfs] - def test_uncertainty_returns_object(self, pdfname, pid, x, q): - from neopdf.uncertainty import Uncertainty + def test_uncertainty_returns_object( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: + from neopdf.uncertainty import Uncertainty # type: ignore[import-untyped] neo_ps = neopdf.getPDFSet(pdfname) - values = self._values(pdfname, pid, x, q) - unc = neo_ps.uncertainty(values) + unc = neo_ps.uncertainty(self._values(pdfname, pid, x, q)) assert isinstance(unc, Uncertainty) assert abs(unc.central) >= 0 - def test_uncertainty_matches_standalone(self, pdfname, pid, x, q): + def test_uncertainty_matches_standalone( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: neo_ps = neopdf.getPDFSet(pdfname) values = np.array(self._values(pdfname, pid, x, q)) - ecl = neo_ps.errorConfLevel + ecl: float = neo_ps.errorConfLevel unc_set = neo_ps.uncertainty(list(values), CL_1_SIGMA, False) unc_fn = uncertainty( - values, - neo_ps.errorType, - error_conf_level=ecl, - cl=CL_1_SIGMA, + values, neo_ps.errorType, error_conf_level=ecl, cl=CL_1_SIGMA ) np.testing.assert_allclose(unc_set.central, unc_fn.central, rtol=1e-10) np.testing.assert_allclose(unc_set.errminus, unc_fn.errminus, rtol=1e-10) np.testing.assert_allclose(unc_set.errplus, unc_fn.errplus, rtol=1e-10) - def test_uncertainty_central_matches_lhapdf(self, pdfname, pid, x, q): + def test_uncertainty_central_matches_lhapdf( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: values = self._values(pdfname, pid, x, q) neo_ps = neopdf.getPDFSet(pdfname) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] neo_unc = neo_ps.uncertainty(values, CL_1_SIGMA, False) lha_unc = lha_ps.uncertainty(values, CL_1_SIGMA, False) np.testing.assert_allclose(neo_unc.central, lha_unc.central, rtol=1e-10) - def test_uncertainty_errminus_matches_lhapdf(self, pdfname, pid, x, q): + def test_uncertainty_errminus_matches_lhapdf( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: values = self._values(pdfname, pid, x, q) neo_ps = neopdf.getPDFSet(pdfname) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] neo_unc = neo_ps.uncertainty(values, CL_1_SIGMA, False) lha_unc = lha_ps.uncertainty(values, CL_1_SIGMA, False) np.testing.assert_allclose(neo_unc.errminus, lha_unc.errminus, rtol=1e-2) - def test_uncertainty_errplus_matches_lhapdf(self, pdfname, pid, x, q): + def test_uncertainty_errplus_matches_lhapdf( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: values = self._values(pdfname, pid, x, q) neo_ps = neopdf.getPDFSet(pdfname) - lha_ps = lhapdf.getPDFSet(pdfname) + lha_ps = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] neo_unc = neo_ps.uncertainty(values, CL_1_SIGMA, False) lha_unc = lha_ps.uncertainty(values, CL_1_SIGMA, False) np.testing.assert_allclose(neo_unc.errplus, lha_unc.errplus, rtol=1e-3) diff --git a/neopdf_pyapi/tests/test_manage.py b/neopdf_pyapi/tests/test_manage.py index ff8714d7..dd5a8572 100644 --- a/neopdf_pyapi/tests/test_manage.py +++ b/neopdf_pyapi/tests/test_manage.py @@ -1,3 +1,7 @@ +from __future__ import annotations + +from typing import Any + import neopdf import pytest @@ -5,28 +9,24 @@ @pytest.fixture -def manage_data(tmp_path): - pdf_format = neopdf.manage.PdfSetFormat.Lhapdf - return neopdf.manage.ManageData(SETNAME, pdf_format) +def manage_data() -> Any: + pdf_format = neopdf.manage.PdfSetFormat.Lhapdf # type: ignore[attr-defined] + return neopdf.manage.ManageData(SETNAME, pdf_format) # type: ignore[attr-defined] -def test_manage_data(manage_data): +def test_manage_data(manage_data: Any) -> None: assert manage_data.is_pdf_installed() - set_name = manage_data.set_name() - assert set_name == SETNAME - set_path = manage_data.set_path() - data_path = manage_data.data_path() - assert set_path == f"{data_path}/{SETNAME}" + assert manage_data.set_name() == SETNAME + assert manage_data.set_path() == f"{manage_data.data_path()}/{SETNAME}" -def test_manage_data_status(manage_data): - status = manage_data.is_pdf_installed() - assert isinstance(status, bool) +def test_manage_data_status(manage_data: Any) -> None: + assert isinstance(manage_data.is_pdf_installed(), bool) -def test_manage_data_paths(manage_data): - d_path = manage_data.data_path() - s_path = manage_data.set_path() +def test_manage_data_paths(manage_data: Any) -> None: + d_path: str = manage_data.data_path() + s_path: str = manage_data.set_path() assert isinstance(d_path, str) assert isinstance(s_path, str) assert SETNAME in s_path diff --git a/neopdf_pyapi/tests/test_metadata.py b/neopdf_pyapi/tests/test_metadata.py index 27b0710b..d44b8f5b 100644 --- a/neopdf_pyapi/tests/test_metadata.py +++ b/neopdf_pyapi/tests/test_metadata.py @@ -1,23 +1,26 @@ -from math import sqrt -import neopdf.metadata as metadata +from __future__ import annotations + import numpy as np import pytest +from math import sqrt +import neopdf.metadata as metadata # type: ignore[import-untyped] +from typing import Any + class TestMetaData: @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) - def test_metadata_fields(self, neo_pdf, lha_pdf, pdfname): - neopdf = neo_pdf(pdfname) - lhapdf = lha_pdf(pdfname) - - neopdf_meta = neopdf.metadata() - np.testing.assert_equal(neopdf_meta.x_min(), lhapdf.xMin) - np.testing.assert_equal(neopdf_meta.x_max(), lhapdf.xMax) - np.testing.assert_equal(neopdf_meta.q_min(), sqrt(lhapdf.q2Min)) - np.testing.assert_equal(neopdf_meta.q_max(), sqrt(lhapdf.q2Max)) - np.testing.assert_equal(neopdf_meta.set_index(), lhapdf.lhapdfID) + def test_metadata_fields(self, neo_pdf: Any, lha_pdf: Any, pdfname: str) -> None: + neopdf_obj = neo_pdf(pdfname) + lhapdf_obj = lha_pdf(pdfname) + meta = neopdf_obj.metadata() + np.testing.assert_equal(meta.x_min(), lhapdf_obj.xMin) + np.testing.assert_equal(meta.x_max(), lhapdf_obj.xMax) + np.testing.assert_equal(meta.q_min(), sqrt(lhapdf_obj.q2Min)) + np.testing.assert_equal(meta.q_max(), sqrt(lhapdf_obj.q2Max)) + np.testing.assert_equal(meta.set_index(), lhapdf_obj.lhapdfID) - def test_metadata_creation(self): + def test_metadata_creation(self) -> None: phys_params = metadata.PhysicsParameters( flavor_scheme="test_scheme", order_qcd=2, @@ -31,7 +34,6 @@ def test_metadata_creation(self): m_bottom=4.18, m_top=172.9, ) - meta = metadata.MetaData( set_desc="test_desc", set_index=1, @@ -55,7 +57,6 @@ def test_metadata_creation(self): hadron_pid=2212, phys_params=phys_params, ) - assert meta.set_desc() == "test_desc" assert meta.set_index() == 1 assert meta.number_sets() == 1 @@ -77,11 +78,8 @@ def test_metadata_creation(self): assert meta.error_type() == "replicas" assert meta.hadron_pid() == 2212 - def test_metadata_to_dict(self): - phys_params = metadata.PhysicsParameters( - flavor_scheme="variable", - order_qcd=2, - ) + def test_metadata_to_dict(self) -> None: + phys_params = metadata.PhysicsParameters(flavor_scheme="variable", order_qcd=2) meta = metadata.MetaData( set_desc="test_desc", set_index=1, @@ -98,13 +96,12 @@ def test_metadata_to_dict(self): format="test_format", phys_params=phys_params, ) - - d = meta.to_dict() + d: dict[str, Any] = meta.to_dict() assert d["set_desc"] == "test_desc" assert d["set_index"] == 1 assert d["flavor_scheme"] == "variable" assert d["order_qcd"] == 2 - pd = phys_params.to_dict() + pd: dict[str, Any] = phys_params.to_dict() assert pd["flavor_scheme"] == "variable" assert pd["order_qcd"] == 2 diff --git a/neopdf_pyapi/tests/test_parser.py b/neopdf_pyapi/tests/test_parser.py index c6c7001f..e9cbed44 100644 --- a/neopdf_pyapi/tests/test_parser.py +++ b/neopdf_pyapi/tests/test_parser.py @@ -1,9 +1,13 @@ -import neopdf.parser as parser +from __future__ import annotations + +import neopdf.parser as parser # type: ignore[import-untyped] import pytest +from typing import Any + @pytest.mark.parametrize("pdf_name", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) -def test_lhapdf_set(pdf_name): - lhapdf_set = parser.LhapdfSet(pdf_name) +def test_lhapdf_set(pdf_name: str) -> None: + lhapdf_set: Any = parser.LhapdfSet(pdf_name) assert lhapdf_set.info() is not None assert len(lhapdf_set.members()) > 0 diff --git a/neopdf_pyapi/tests/test_pdfs.py b/neopdf_pyapi/tests/test_pdfs.py index bba441cc..b7483891 100644 --- a/neopdf_pyapi/tests/test_pdfs.py +++ b/neopdf_pyapi/tests/test_pdfs.py @@ -1,19 +1,28 @@ -import pytest -import numpy as np +from __future__ import annotations + import os from pathlib import Path +import numpy as np +import pytest +from conftest import ( + XQ2Range, + PDFFactory, + PDFsFactory, + LazyPDFsFactory, + XQ2PointsFactory, +) from itertools import product -from neopdf.pdf import ForcePositive +from neopdf.pdf import ForcePositive # type: ignore[import-untyped] @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) class TestPDF: - def test_mkpdfs(self, neo_pdfs, pdfname): + def test_mkpdfs(self, neo_pdfs: PDFsFactory, pdfname: str) -> None: pdfs = neo_pdfs(pdfname) assert len(pdfs) > 0 - def test_pdf_methods(self, neo_pdf, pdfname): + def test_pdf_methods(self, neo_pdf: PDFFactory, pdfname: str) -> None: neopdf = neo_pdf(pdfname) assert len(neopdf.pids()) > 0 assert len(neopdf.subgrids()) > 0 @@ -35,177 +44,173 @@ class TestPDFInterpolations: ], ) @pytest.mark.parametrize("pid", [nf for nf in range(-5, 6) if nf != 0]) - def test_xfxq2(self, neo_pdf, lha_pdf, xq2_points, pdfname, pid): + def test_xfxq2( + self, + neo_pdf: PDFFactory, + lha_pdf: PDFFactory, + xq2_points: XQ2PointsFactory, + pdfname: str, + pid: int, + ) -> None: neopdf = neo_pdf(pdfname) lhapdf = lha_pdf(pdfname) - - params_range = { - "xmin": lhapdf.xMin, - "xmax": lhapdf.xMax, - "q2min": lhapdf.q2Min, - "q2max": lhapdf.q2Max, - } - xs, q2s = xq2_points(**params_range) - + xs, q2s = xq2_points( + XQ2Range( + xmin=lhapdf.xMin, + xmax=lhapdf.xMax, + q2min=lhapdf.q2Min, + q2max=lhapdf.q2Max, + ) + ) for x, q2 in product(xs, q2s): - ref = lhapdf.xfxQ2(pid, x, q2) - res = neopdf.xfxQ2(pid, x, q2) - np.testing.assert_equal(res, ref) + np.testing.assert_equal(neopdf.xfxQ2(pid, x, q2), lhapdf.xfxQ2(pid, x, q2)) @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) @pytest.mark.parametrize("pid", [21]) - def test_xfxq2s(self, neo_pdf, lha_pdf, xq2_points, pdfname, pid): + def test_xfxq2s( + self, + neo_pdf: PDFFactory, + lha_pdf: PDFFactory, + xq2_points: XQ2PointsFactory, + pdfname: str, + pid: int, + ) -> None: neopdf = neo_pdf(pdfname) lhapdf = lha_pdf(pdfname) - - params_range = { - "xmin": lhapdf.xMin, - "xmax": lhapdf.xMax, - "q2min": lhapdf.q2Min, - "q2max": lhapdf.q2Max, - } - xs, q2s = xq2_points(**params_range) - + xs, q2s = xq2_points( + XQ2Range( + xmin=lhapdf.xMin, + xmax=lhapdf.xMax, + q2min=lhapdf.q2Min, + q2max=lhapdf.q2Max, + ) + ) res = neopdf.xfxQ2s([pid], xs, q2s) ref = [lhapdf.xfxQ2(pid, x, q2) for x, q2 in product(xs, q2s)] np.testing.assert_equal(res, [ref]) @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) - def test_xfxq2_allpids(self, neo_pdf, lha_pdf, xq2_points, pdfname): + def test_xfxq2_allpids( + self, + neo_pdf: PDFFactory, + lha_pdf: PDFFactory, + xq2_points: XQ2PointsFactory, + pdfname: str, + ) -> None: neopdf = neo_pdf(pdfname) lhapdf = lha_pdf(pdfname) - - params_range = { - "xmin": lhapdf.xMin, - "xmax": lhapdf.xMax, - "q2min": lhapdf.q2Min, - "q2max": lhapdf.q2Max, - } - xs, q2s = xq2_points(**params_range) - pids = neopdf.pids() - + xs, q2s = xq2_points( + XQ2Range( + xmin=lhapdf.xMin, + xmax=lhapdf.xMax, + q2min=lhapdf.q2Min, + q2max=lhapdf.q2Max, + ) + ) + pids: list[int] = neopdf.pids() for x, q2 in product(xs, q2s): - res = neopdf.xfxQ2_allpids(pids, x, q2) ref = [lhapdf.xfxQ2(pid, x, q2) for pid in pids] - np.testing.assert_allclose(res, ref) - - res_nd = neopdf.xfxQ2_allpids_ND(pids, [x, q2]) - np.testing.assert_allclose(res_nd, ref) + np.testing.assert_allclose(neopdf.xfxQ2_allpids(pids, x, q2), ref) + np.testing.assert_allclose(neopdf.xfxQ2_allpids_ND(pids, [x, q2]), ref) class TestAlphaSInterpolations: @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180", "MSHT20qed_an3lo"]) - def test_alphasQ2(self, neo_pdf, lha_pdf, pdfname): + def test_alphasQ2( + self, neo_pdf: PDFFactory, lha_pdf: PDFFactory, pdfname: str + ) -> None: neopdf = neo_pdf(pdfname) lhapdf = lha_pdf(pdfname) - qs = neopdf.metadata().alphas_q() + qs: list[float] = neopdf.metadata().alphas_q() q2_points = [q * q for q in np.linspace(qs[0], qs[-1], num=300)] - - for q2_point in q2_points: - ref = lhapdf.alphasQ2(q2_point) - res = neopdf.alphasQ2(q2_point) - np.testing.assert_equal(res, ref) + for q2 in q2_points: + np.testing.assert_equal(neopdf.alphasQ2(q2), lhapdf.alphasQ2(q2)) @pytest.mark.parametrize( "pdfname", ["ABMP16_5_nnlo", "ABMP16als118_5_nnlo", "MSHT20nlo_as_smallrange_nf4"], ) - def test_alphasQ2_member(self, neo_pdfs, lha_pdfs, pdfname): + def test_alphasQ2_member( + self, neo_pdfs: PDFsFactory, lha_pdfs: PDFsFactory, pdfname: str + ) -> None: neopdf = neo_pdfs(pdfname) lhapdf = lha_pdfs(pdfname) - for idx in range(len(neopdf)): - qs = neopdf[idx].metadata().alphas_q() + qs: list[float] = neopdf[idx].metadata().alphas_q() q2_points = [q * q for q in np.linspace(qs[0], qs[-1], num=100)] - - for q2_point in q2_points: - ref = lhapdf[idx].alphasQ2(q2_point) - res = neopdf[idx].alphasQ2(q2_point) - np.testing.assert_equal(res, ref) + for q2 in q2_points: + np.testing.assert_equal( + neopdf[idx].alphasQ2(q2), lhapdf[idx].alphasQ2(q2) + ) class TestLazyLoader: @pytest.mark.parametrize("pdfname", ["NNPDF40_nnlo_as_01180.neopdf.lz4"]) - def test_lazy_loader(self, neo_pdfs_lazy, pdfname): - neopdfs = neo_pdfs_lazy(pdfname) - - for pdf in neopdfs: - res = pdf.xfxQ2(21, 1e-5, 1e2) - assert isinstance(res, float) + def test_lazy_loader(self, neo_pdfs_lazy: LazyPDFsFactory, pdfname: str) -> None: + for pdf in neo_pdfs_lazy(pdfname): + assert isinstance(pdf.xfxQ2(21, 1e-5, 1e2), float) class TestLHAID: - def test_mkpdf_lhaid_base(self, neo_pdf): - # NNPDF40_nnlo_as_01180 has base LHAID 331100; member 0 = LHAID 331100 - from neopdf.pdf import PDF + def test_mkpdf_lhaid_base(self, neo_pdf: PDFFactory) -> None: + from neopdf.pdf import PDF # type: ignore[import-untyped] + # NNPDF40_nnlo_as_01180 has base LHAID 331100; member 0 = LHAID 331100 pdf_by_id = PDF.mkPDF_lhaid(331100) pdf_by_name = neo_pdf("NNPDF40_nnlo_as_01180") - x, q2, pid = 1e-4, 100.0, 21 np.testing.assert_equal( - pdf_by_id.xfxQ2(pid, x, q2), - pdf_by_name.xfxQ2(pid, x, q2), - ) - np.testing.assert_equal( - pdf_by_id.alphasQ2(q2), - pdf_by_name.alphasQ2(q2), + pdf_by_id.xfxQ2(pid, x, q2), pdf_by_name.xfxQ2(pid, x, q2) ) + np.testing.assert_equal(pdf_by_id.alphasQ2(q2), pdf_by_name.alphasQ2(q2)) - def test_mkpdf_lhaid_member_offset(self, neo_pdfs): - # ABMP16als118_5_nnlo owns range [42780, 42810); member 10 = LHAID 42790 - from neopdf.pdf import PDF + def test_mkpdf_lhaid_member_offset(self, neo_pdfs: PDFsFactory) -> None: + from neopdf.pdf import PDF # type: ignore[import-untyped] + # ABMP16als118_5_nnlo owns range [42780, 42810); member 10 = LHAID 42790 pdf_by_id = PDF.mkPDF_lhaid(42790) pdf_by_name = neo_pdfs("ABMP16als118_5_nnlo")[10] - x, q2, pid = 1e-3, 10.0, 1 np.testing.assert_equal( - pdf_by_id.xfxQ2(pid, x, q2), - pdf_by_name.xfxQ2(pid, x, q2), - ) - np.testing.assert_equal( - pdf_by_id.alphasQ2(q2), - pdf_by_name.alphasQ2(q2), + pdf_by_id.xfxQ2(pid, x, q2), pdf_by_name.xfxQ2(pid, x, q2) ) + np.testing.assert_equal(pdf_by_id.alphasQ2(q2), pdf_by_name.alphasQ2(q2)) class TestLoadFromFile: - def test_mkpdf_lhapdf_by_file(self): - from neopdf.pdf import PDF + def test_mkpdf_lhapdf_by_file(self) -> None: + from neopdf.pdf import PDF # type: ignore[import-untyped] neopdf_data_path = os.environ.get("NEOPDF_DATA_PATH") if not neopdf_data_path: - pytest.skip("NEOPDF_DATA_PATH environment variable not set.") - - path = Path(neopdf_data_path).joinpath( - "NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat" + pytest.skip( + "NEOPDF_DATA_PATH environment variable not set." + ) # ty: ignore[too-many-positional-arguments] + + path = ( + Path(neopdf_data_path) + / "NNPDF40_nnlo_as_01180" + / "NNPDF40_nnlo_as_01180_0000.dat" ) - if not path.exists(): - pytest.skip(f"Data file not found at {path}") - - pdf = PDF.mkPDF_lhapdf_file(str(path)) + pytest.skip( + f"Data file not found at {path}" + ) # ty: ignore[too-many-positional-arguments] - xf = pdf.xfxQ2(21, 1e-9, 1.65 * 1.65) + xf = PDF.mkPDF_lhapdf_file(str(path)).xfxQ2(21, 1e-9, 1.65 * 1.65) np.testing.assert_allclose(xf, 0.14844111, rtol=1e-8) class TestForcePositive: - def test_force_positive(self, neo_pdf): + def test_force_positive(self, neo_pdf: PDFFactory) -> None: neopdf = neo_pdf("nNNPDF30_nlo_as_0118_A56_Z26") assert neopdf.is_force_positive() == ForcePositive.NoClipping - neg_interp = neopdf.xfxQ2(21, 0.9, 1e2) - assert neg_interp < 0.0 + assert neopdf.xfxQ2(21, 0.9, 1e2) < 0.0 - # Clip negative values to zero neopdf.set_force_positive(ForcePositive.ClipNegative) assert neopdf.is_force_positive() == ForcePositive.ClipNegative - zero_interp = neopdf.xfxQ2(21, 0.9, 1e2) - assert zero_interp == 0.0 + assert neopdf.xfxQ2(21, 0.9, 1e2) == 0.0 - # Clip negative values to small positive definite neopdf.set_force_positive(ForcePositive.ClipSmall) assert neopdf.is_force_positive() == ForcePositive.ClipSmall - small_interp = neopdf.xfxQ2(21, 0.9, 1e2) - assert small_interp == 1e-10 + assert neopdf.xfxQ2(21, 0.9, 1e2) == 1e-10 diff --git a/neopdf_pyapi/tests/test_uncertainty.py b/neopdf_pyapi/tests/test_uncertainty.py index 43f85880..89cef3e5 100644 --- a/neopdf_pyapi/tests/test_uncertainty.py +++ b/neopdf_pyapi/tests/test_uncertainty.py @@ -1,27 +1,29 @@ """Tests for neopdf.uncertainty, benchmarked against LHAPDF.""" +from __future__ import annotations + + +import lhapdf # type: ignore[import-untyped] import numpy as np import pytest -import lhapdf -from neopdf.pdf import PDF as NeoPDF -from neopdf.uncertainty import CL_1_SIGMA, CL_2_SIGMA, uncertainty, Uncertainty +from neopdf.pdf import PDF as NeoPDF # type: ignore[import-untyped] +from neopdf.uncertainty import CL_1_SIGMA, CL_2_SIGMA, Uncertainty, uncertainty # type: ignore[import-untyped] +from typing import Any, NamedTuple def lha_values(pdfname: str, pid: int, x: float, q: float) -> np.ndarray: - """Return an array of xfxQ values (all members) from LHAPDF.""" - pdfs = lhapdf.mkPDFs(pdfname) - return np.array([p.xfxQ(pid, x, q) for p in pdfs]) + """Return xfxQ values for all members from LHAPDF.""" + return np.array([p.xfxQ(pid, x, q) for p in lhapdf.mkPDFs(pdfname)]) # type: ignore[attr-defined] def neo_values(pdfname: str, pid: int, x: float, q: float) -> np.ndarray: - """Return an array of xfxQ2 values (all members) from NeoPDF.""" - pdfs = NeoPDF.mkPDFs(pdfname) - return np.array([p.xfxQ2(pid, x, q * q) for p in pdfs]) + """Return xfxQ2 values for all members from NeoPDF.""" + return np.array([p.xfxQ2(pid, x, q * q) for p in NeoPDF.mkPDFs(pdfname)]) class TestUncertaintyClass: - def test_attributes(self): + def test_attributes(self) -> None: values = np.array([1.0, 0.9, 1.1, 0.95, 1.05]) unc = uncertainty(values, "replicas", cl=CL_1_SIGMA) assert hasattr(unc, "central") @@ -29,29 +31,29 @@ def test_attributes(self): assert hasattr(unc, "errplus") assert isinstance(unc, Uncertainty) - def test_central_replicas_is_mean(self): + def test_central_replicas_is_mean(self) -> None: values = np.array([5.0, 4.0, 6.0, 4.5, 5.5]) unc = uncertainty(values, "replicas", cl=CL_1_SIGMA) assert unc.central == np.mean(values[1:]) - def test_errsymm(self): + def test_errsymm(self) -> None: values = np.array([1.0, 0.8, 1.2, 0.9, 1.1]) unc = uncertainty(values, "hessian", cl=CL_1_SIGMA) assert np.isclose(unc.errsymm(), (unc.errminus + unc.errplus) / 2.0) - def test_repr(self): + def test_repr(self) -> None: values = np.array([1.0, 0.9, 1.1]) unc = uncertainty(values, "replicas", cl=CL_1_SIGMA) assert "Uncertainty" in repr(unc) assert "central" in repr(unc) - def test_raises_on_empty(self): + def test_raises_on_empty(self) -> None: with pytest.raises(Exception): uncertainty(np.array([]), "replicas", cl=CL_1_SIGMA) class TestUncertaintyAlgorithms: - def test_replicas_symmetric(self): + def test_replicas_symmetric(self) -> None: rng = np.random.default_rng(42) replicas = rng.normal(loc=0.0, scale=1.0, size=100) values = np.concatenate([[0.0], replicas]) @@ -60,7 +62,7 @@ def test_replicas_symmetric(self): assert np.isclose(unc.errminus, expected_std, rtol=1e-10) assert np.isclose(unc.errplus, expected_std, rtol=1e-10) - def test_replicas_alternative_asymmetric(self): + def test_replicas_alternative_asymmetric(self) -> None: rng = np.random.default_rng(0) replicas = rng.exponential(scale=1.0, size=1000) values = np.concatenate([[np.mean(replicas)], replicas]) @@ -69,33 +71,33 @@ def test_replicas_alternative_asymmetric(self): assert not np.isclose(unc_alt.errminus, unc_alt.errplus, rtol=1e-3) assert np.isclose(unc_sym.errminus, unc_sym.errplus, rtol=1e-10) - def test_hessian_symmetric_pairs(self): + def test_hessian_symmetric_pairs(self) -> None: values = np.array([1.0, 1.1, 0.9, 1.2, 0.8]) unc = uncertainty(values, "hessian", cl=CL_1_SIGMA) expected = np.sqrt(0.1**2 + 0.2**2) assert np.isclose(unc.errminus, expected, rtol=1e-10) assert np.isclose(unc.errplus, expected, rtol=1e-10) - def test_symmhessian_same_as_hessian(self): + def test_symmhessian_same_as_hessian(self) -> None: values = np.array([1.0, 1.1, 0.9, 1.3, 0.7]) unc_h = uncertainty(values, "hessian", cl=CL_1_SIGMA) unc_s = uncertainty(values, "symmhessian", cl=CL_1_SIGMA) assert np.isclose(unc_h.errminus, unc_s.errminus) assert np.isclose(unc_h.errplus, unc_s.errplus) - def test_asymhessian(self): + def test_asymhessian(self) -> None: values = np.array([1.0, 1.2, 0.8]) unc = uncertainty(values, "asymhessian", cl=CL_1_SIGMA) assert np.isclose(unc.errplus, 0.2, rtol=1e-10) assert np.isclose(unc.errminus, 0.2, rtol=1e-10) - def test_cl_rescaling_hessian(self): + def test_cl_rescaling_hessian(self) -> None: values = np.array([1.0, 1.1, 0.9, 1.2, 0.8]) unc_1s = uncertainty(values, "hessian", cl=68.27) unc_2s = uncertainty(values, "hessian", cl=95.45) assert np.isclose(unc_2s.errminus / unc_1s.errminus, 2.0, rtol=1e-2) - def test_cl_rescaling_replicas(self): + def test_cl_rescaling_replicas(self) -> None: rng = np.random.default_rng(7) replicas = rng.normal(0.0, 1.0, 500) values = np.concatenate([[0.0], replicas]) @@ -103,94 +105,123 @@ def test_cl_rescaling_replicas(self): unc_2s = uncertainty(values, "replicas", cl=95.45) assert np.isclose(unc_2s.errminus / unc_1s.errminus, 2.0, rtol=1e-2) - def test_error_conf_level_ct18_convention(self): + def test_error_conf_level_ct18_convention(self) -> None: values = np.array([1.0, 1.2, 0.8, 1.3, 0.7]) unc_68 = uncertainty( - values, - "hessian", - error_conf_level=CL_1_SIGMA, - cl=CL_1_SIGMA, - ) - unc_90 = uncertainty( - values, - "hessian", - error_conf_level=90.0, - cl=CL_1_SIGMA, + values, "hessian", error_conf_level=CL_1_SIGMA, cl=CL_1_SIGMA ) + unc_90 = uncertainty(values, "hessian", error_conf_level=90.0, cl=CL_1_SIGMA) assert unc_90.errminus < unc_68.errminus assert np.isclose( - unc_90.errminus / unc_68.errminus, - 1.0 / (1.6449 / 1.0), - rtol=1e-2, + unc_90.errminus / unc_68.errminus, 1.0 / (1.6449 / 1.0), rtol=1e-2 ) +class _UncertaintyContext(NamedTuple): + """Bundles the data needed to run a single uncertainty comparison test.""" + + pdfset: Any + values: np.ndarray + error_type: str + ecl: float + + @pytest.mark.parametrize( - "pdfname", - ["NNPDF40_nnlo_as_01180", "CT18NNLO_as_0118", "MSHT20qed_an3lo"], + "pdfname", ["NNPDF40_nnlo_as_01180", "CT18NNLO_as_0118", "MSHT20qed_an3lo"] ) @pytest.mark.parametrize( - "pid,x,q", - [(21, 0.1, 100.0), (2, 0.01, 10.0), (-3, 0.3, 1000.0)], + "pid,x,q", [(21, 0.1, 100.0), (2, 0.01, 10.0), (-3, 0.3, 1000.0)] ) class TestAgainstLhapdf: - def _setup(self, pdfname, pid, x, q): - pdfset = lhapdf.getPDFSet(pdfname) + def _setup(self, pdfname: str, pid: int, x: float, q: float) -> _UncertaintyContext: + pdfset = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] values = lha_values(pdfname, pid, x, q) - if len(values) <= 1: - pytest.skip(f"{pdfname} has only {len(values)} member(s) installed") - + pytest.skip( + f"{pdfname} has only {len(values)} member(s) installed" + ) # ty: ignore[too-many-positional-arguments] pdf0 = NeoPDF(pdfname, 0) - error_type = pdf0.metadata().error_type() - ecl = float(pdfset.errorConfLevel) # -1.0 when not set in the info file - return pdfset, values, error_type, ecl - - def test_central(self, pdfname, pid, x, q): - pdfset, values, error_type, ecl = self._setup(pdfname, pid, x, q) - lha = pdfset.uncertainty(values, CL_1_SIGMA, False) - neo = uncertainty(values, error_type, error_conf_level=ecl, cl=CL_1_SIGMA) + return _UncertaintyContext( + pdfset=pdfset, + values=values, + error_type=pdf0.metadata().error_type(), + ecl=float(pdfset.errorConfLevel), + ) + + def test_central(self, pdfname: str, pid: int, x: float, q: float) -> None: + ctx = self._setup(pdfname, pid, x, q) + lha = ctx.pdfset.uncertainty(ctx.values, CL_1_SIGMA, False) + neo = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, + cl=CL_1_SIGMA, + ) np.testing.assert_allclose(neo.central, lha.central, rtol=1e-10) - def test_errminus(self, pdfname, pid, x, q): - pdfset, values, error_type, ecl = self._setup(pdfname, pid, x, q) - lha = pdfset.uncertainty(values, CL_1_SIGMA, False) - neo = uncertainty(values, error_type, error_conf_level=ecl, cl=CL_1_SIGMA) + def test_errminus(self, pdfname: str, pid: int, x: float, q: float) -> None: + ctx = self._setup(pdfname, pid, x, q) + lha = ctx.pdfset.uncertainty(ctx.values, CL_1_SIGMA, False) + neo = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, + cl=CL_1_SIGMA, + ) # TODO: To be investigated further np.testing.assert_allclose(neo.errminus, lha.errminus, rtol=1e-2) - def test_errplus(self, pdfname, pid, x, q): - pdfset, values, error_type, ecl = self._setup(pdfname, pid, x, q) - lha = pdfset.uncertainty(values, CL_1_SIGMA, False) - neo = uncertainty(values, error_type, error_conf_level=ecl, cl=CL_1_SIGMA) + def test_errplus(self, pdfname: str, pid: int, x: float, q: float) -> None: + ctx = self._setup(pdfname, pid, x, q) + lha = ctx.pdfset.uncertainty(ctx.values, CL_1_SIGMA, False) + neo = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, + cl=CL_1_SIGMA, + ) np.testing.assert_allclose(neo.errplus, lha.errplus, rtol=1e-3) - def test_alternative_prescription(self, pdfname, pid, x, q): + def test_alternative_prescription( + self, pdfname: str, pid: int, x: float, q: float + ) -> None: if pdfname != "NNPDF40_nnlo_as_01180": - pytest.skip("alternative prescription only applies to replica sets") - pdfset, values, error_type, ecl = self._setup(pdfname, pid, x, q) - neo = uncertainty( - values, - error_type, - error_conf_level=ecl, + pytest.skip( + "alternative prescription only applies to replica sets" + ) # ty: ignore[too-many-positional-arguments] + ctx = self._setup(pdfname, pid, x, q) + neo_alt = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, cl=CL_1_SIGMA, alternative=True, ) neo_std = uncertainty( - values, - error_type, - error_conf_level=ecl, + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, cl=CL_1_SIGMA, ) - assert neo.errminus != neo.errplus, "expected asymmetric interval" - assert neo.errminus > 0 - assert neo.errplus > 0 - assert neo.errminus < 3 * neo_std.errminus - assert neo.errplus < 3 * neo_std.errplus - - def test_higher_cl(self, pdfname, pid, x, q): - pdfset, values, error_type, ecl = self._setup(pdfname, pid, x, q) - neo_1s = uncertainty(values, error_type, error_conf_level=ecl, cl=CL_1_SIGMA) - neo_2s = uncertainty(values, error_type, error_conf_level=ecl, cl=CL_2_SIGMA) + assert neo_alt.errminus != neo_alt.errplus, "expected asymmetric interval" + assert neo_alt.errminus > 0 + assert neo_alt.errplus > 0 + assert neo_alt.errminus < 3 * neo_std.errminus + assert neo_alt.errplus < 3 * neo_std.errplus + + def test_higher_cl(self, pdfname: str, pid: int, x: float, q: float) -> None: + ctx = self._setup(pdfname, pid, x, q) + neo_1s = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, + cl=CL_1_SIGMA, + ) + neo_2s = uncertainty( + ctx.values, + ctx.error_type, + error_conf_level=ctx.ecl, + cl=CL_2_SIGMA, + ) assert neo_2s.errminus >= neo_1s.errminus assert neo_2s.errplus >= neo_1s.errplus diff --git a/neopdf_pyapi/tests/test_writer.py b/neopdf_pyapi/tests/test_writer.py index 2c259703..6f76664b 100644 --- a/neopdf_pyapi/tests/test_writer.py +++ b/neopdf_pyapi/tests/test_writer.py @@ -1,20 +1,25 @@ -import neopdf.writer as writer -import neopdf.parser as parser +from __future__ import annotations + +from pathlib import Path import pytest +from typing import Any + +import neopdf.parser as parser # type: ignore[import-untyped] +import neopdf.writer as writer # type: ignore[import-untyped] @pytest.mark.parametrize("pdf_name", ["NNPDF40_nnlo_as_01180"]) -def test_writer(pdf_name, tmp_path): +def test_writer(pdf_name: str, tmp_path: Path) -> None: lhapdf_set = parser.LhapdfSet(pdf_name) - members = lhapdf_set.members() - metadata = lhapdf_set.info() + members: list[Any] = lhapdf_set.members() + metadata: Any = lhapdf_set.info() grids = [m[1] for m in members] output_path = tmp_path / f"{pdf_name}.neopdf.lz4" writer.compress(grids, metadata, str(output_path)) - decompressed_members = writer.decompress(str(output_path)) + decompressed_members: list[Any] = writer.decompress(str(output_path)) assert len(decompressed_members) == len(members) - extracted_metadata = writer.extract_metadata(str(output_path)) + extracted_metadata: Any = writer.extract_metadata(str(output_path)) assert extracted_metadata.set_index() == metadata.set_index() diff --git a/pixi.lock b/pixi.lock index 2365d5bd..eb287e33 100644 --- a/pixi.lock +++ b/pixi.lock @@ -12,6 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_1.conda @@ -165,6 +166,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.4-py313h843e2db_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -172,6 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mpl-0.19.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -190,6 +194,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -225,6 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/1f/d4/6fe9c62bec56212b96607bdc26ee1072518213414d77c4ff878c17c7889c/mkdocs_roamlinks_plugin-0.3.2-py3-none-any.whl osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda @@ -346,12 +353,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.46.4-py313h23ec8f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mpl-0.19.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -370,6 +380,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.5-py313hf59fe81_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -384,6 +396,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/1f/d4/6fe9c62bec56212b96607bdc26ee1072518213414d77c4ff878c17c7889c/mkdocs_roamlinks_plugin-0.3.2-py3-none-any.whl osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda @@ -508,12 +521,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.46.4-py313h212e517_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mpl-0.19.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -532,6 +548,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py313h0997733_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -547,6 +565,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1f/d4/6fe9c62bec56212b96607bdc26ee1072518213414d77c4ff878c17c7889c/mkdocs_roamlinks_plugin-0.3.2-py3-none-any.whl win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/binutils_impl_win-64-2.44-h095e170_1.conda @@ -668,6 +687,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.46.4-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -675,6 +696,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mpl-0.19.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.12-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -692,6 +714,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.5-py313h5ea7bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda @@ -759,6 +783,18 @@ packages: purls: [] size: 584660 timestamp: 1768327524772 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/annotated-types?source=hash-mapping + size: 18074 + timestamp: 1733247158254 - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac md5: 0a01c169f0ab0f91b26e77a3301fbfe4 @@ -6289,6 +6325,88 @@ packages: - pkg:pypi/pycparser?source=hash-mapping size: 110100 timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda + sha256: 69700e31165df070e9716315e042196aa92525dae5deb5107785847ab9f4189f + md5: 729843edafc0899b3348bd3f19525b9d + depends: + - typing-inspection >=0.4.2 + - typing_extensions >=4.14.1 + - python >=3.10 + - annotated-types >=0.6.0 + - pydantic-core ==2.46.4 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic?source=hash-mapping + size: 346511 + timestamp: 1778103405862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.4-py313h843e2db_0.conda + sha256: d6705962afa2655cc22edcd075ce1f7e67c4407c005137d6d63c0dc5eaa76f47 + md5: ef0f9efec6ec28b17e22f787c7672c67 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1893749 + timestamp: 1778084222642 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.46.4-py313h23ec8f2_0.conda + sha256: 66b1f30f0968f00b748710f7ee9ac410e98edccb6a53ae590aa1bd53f145a631 + md5: c6f73413ba12c55c2a0b6d2f3c1474d0 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1879854 + timestamp: 1778084387529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.46.4-py313h212e517_0.conda + sha256: 5bcc20f2c21d8a20d8f2821caf31d8c0ef2fa3bcdaf7a9bdce62e37be819f1d7 + md5: 32bb0d4dbb1be2064c06248a1190aa96 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1720475 + timestamp: 1778084300413 +- conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.46.4-py313hfbe8231_0.conda + sha256: 6466b7e441adb71e29308de2a87c9787d5d0100601ede2d02ed4f85c251699d6 + md5: 9981bc46be6341306a5473b290b2f366 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-core?source=hash-mapping + size: 1888029 + timestamp: 1778084253466 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -6431,6 +6549,22 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 28216 timestamp: 1749778064293 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mpl-0.19.0-pyhd8ed1ab_0.conda + sha256: 31d19101973885455efd75760f7499bf1807e55b667689b9dec3684d114ab06b + md5: db89279e1501c5709d414176149ecc0a + depends: + - jinja2 >=2.10.2 + - matplotlib-base >=3.5.3 + - packaging >=22.0.0 + - pillow >=8.1.1 + - pytest >=6.2.5 + - python >=3.10 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pytest-mpl?source=hash-mapping + size: 30401 + timestamp: 1774897789748 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda build_number: 100 sha256: 8a08fe5b7cb5a28aa44e2994d18dbf77f443956990753a4ca8173153ffb6eb56 @@ -7090,6 +7224,29 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 883689 timestamp: 1774358224157 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + sha256: 349951278fa8d0860ec6b61fcdc1e6f604e6fce74fabf73af2e39a37979d0223 + md5: 75be1a943e0a7f99fcf118309092c635 + depends: + - typing_extensions ==4.14.1 pyhe01879c_0 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 90486 + timestamp: 1751643513473 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda + sha256: 8b90d2f19f9458b8c58a55e1fcdc1d90c1603a847a47654d8a454549413ba60a + md5: 53f5409c5cfd6c5a66417d68e3f0a864 + depends: + - python >=3.10 + - typing_extensions >=4.12.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/typing-inspection?source=hash-mapping + size: 20935 + timestamp: 1777105465795 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda sha256: 4f52390e331ea8b9019b87effaebc4f80c6466d09f68453f52d5cdc2a3e1194f md5: e523f4f1e980ed7a4240d7e27e9ec81f diff --git a/pixi.toml b/pixi.toml index d39b6eaa..ff34d01c 100644 --- a/pixi.toml +++ b/pixi.toml @@ -17,6 +17,7 @@ NEOPDF_DATA_PATH = "$PWD/neopdf-data" maturin = "*" numpy = "*" matplotlib = "*" +pydantic = "*" pytest = "*" pytest-cov = "*" pytest-mpl = "*" From e16823fba9c86db94134df73a6babb4d3ff1af23 Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 15:06:49 +0200 Subject: [PATCH 2/7] Fix `ty` errors --- .pre-commit-config.yaml | 5 +++++ neopdf_pyapi/tests/test_lhapdf_compatibility.py | 4 +--- neopdf_pyapi/tests/test_pdfs.py | 9 +++------ neopdf_pyapi/tests/test_uncertainty.py | 8 ++------ 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 19f1b977..76c8ad0c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,6 +18,11 @@ repos: args: [--fix] - id: ruff-format args: [] + - repo: https://github.com/astral-sh/ty-pre-commit + rev: v0.0.49 + hooks: + - id: ty + args: [--no-python-downloads, --no-cache, --project, neopdf_pyapi] - repo: local hooks: - id: fmt diff --git a/neopdf_pyapi/tests/test_lhapdf_compatibility.py b/neopdf_pyapi/tests/test_lhapdf_compatibility.py index bb57ccc4..c49a9f71 100644 --- a/neopdf_pyapi/tests/test_lhapdf_compatibility.py +++ b/neopdf_pyapi/tests/test_lhapdf_compatibility.py @@ -355,9 +355,7 @@ class TestPDFSetUncertainty: def _values(self, pdfname: str, pid: int, x: float, q: float) -> list[float]: pdfs: list[Any] = neopdf.mkPDFs(pdfname) if len(pdfs) <= 1: - pytest.skip( - f"{pdfname} has only {len(pdfs)} member(s) installed" - ) # ty: ignore[too-many-positional-arguments] + pytest.skip(f"{pdfname} has only {len(pdfs)} member(s) installed") return [p.xfxQ(pid, x, q) for p in pdfs] def test_uncertainty_returns_object( diff --git a/neopdf_pyapi/tests/test_pdfs.py b/neopdf_pyapi/tests/test_pdfs.py index b7483891..55a71491 100644 --- a/neopdf_pyapi/tests/test_pdfs.py +++ b/neopdf_pyapi/tests/test_pdfs.py @@ -183,9 +183,8 @@ def test_mkpdf_lhapdf_by_file(self) -> None: neopdf_data_path = os.environ.get("NEOPDF_DATA_PATH") if not neopdf_data_path: - pytest.skip( - "NEOPDF_DATA_PATH environment variable not set." - ) # ty: ignore[too-many-positional-arguments] + pytest.skip("NEOPDF_DATA_PATH environment variable not set.") + assert neopdf_data_path path = ( Path(neopdf_data_path) @@ -193,9 +192,7 @@ def test_mkpdf_lhapdf_by_file(self) -> None: / "NNPDF40_nnlo_as_01180_0000.dat" ) if not path.exists(): - pytest.skip( - f"Data file not found at {path}" - ) # ty: ignore[too-many-positional-arguments] + pytest.skip(f"Data file not found at {path}") xf = PDF.mkPDF_lhapdf_file(str(path)).xfxQ2(21, 1e-9, 1.65 * 1.65) np.testing.assert_allclose(xf, 0.14844111, rtol=1e-8) diff --git a/neopdf_pyapi/tests/test_uncertainty.py b/neopdf_pyapi/tests/test_uncertainty.py index 89cef3e5..5ecd4f48 100644 --- a/neopdf_pyapi/tests/test_uncertainty.py +++ b/neopdf_pyapi/tests/test_uncertainty.py @@ -137,9 +137,7 @@ def _setup(self, pdfname: str, pid: int, x: float, q: float) -> _UncertaintyCont pdfset = lhapdf.getPDFSet(pdfname) # type: ignore[attr-defined] values = lha_values(pdfname, pid, x, q) if len(values) <= 1: - pytest.skip( - f"{pdfname} has only {len(values)} member(s) installed" - ) # ty: ignore[too-many-positional-arguments] + pytest.skip(f"{pdfname} has only {len(values)} member(s) installed") pdf0 = NeoPDF(pdfname, 0) return _UncertaintyContext( pdfset=pdfset, @@ -186,9 +184,7 @@ def test_alternative_prescription( self, pdfname: str, pid: int, x: float, q: float ) -> None: if pdfname != "NNPDF40_nnlo_as_01180": - pytest.skip( - "alternative prescription only applies to replica sets" - ) # ty: ignore[too-many-positional-arguments] + pytest.skip("alternative prescription only applies to replica sets") ctx = self._setup(pdfname, pid, x, q) neo_alt = uncertainty( ctx.values, From 90c6208986a76f09853fdf74f0d1a1dae1c5b10b Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 15:43:20 +0200 Subject: [PATCH 3/7] Add a workflow to re-generate the figures --- .github/workflows/regenerate-figures.yml | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/regenerate-figures.yml diff --git a/.github/workflows/regenerate-figures.yml b/.github/workflows/regenerate-figures.yml new file mode 100644 index 00000000..7f472b75 --- /dev/null +++ b/.github/workflows/regenerate-figures.yml @@ -0,0 +1,46 @@ +name: Regenerate MPL baseline figures 📊 + +on: + pull_request: + types: [labeled] + +permissions: + contents: write + +jobs: + regenerate: + if: github.event.label.name == 'regenerate-figures' + runs-on: ubuntu-22.04 + container: ghcr.io/qcdlab/neopdf-container:latest + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Python package 🐍 + run: | + cd neopdf_pyapi + python3 -m venv --system-site-packages myenv + . myenv/bin/activate + pip install maturin==1.12.4 + maturin develop --extras test + + - name: Regenerate baseline figures 🖼️ + run: | + cd neopdf_pyapi + . myenv/bin/activate + export NEOPDF_DATA_PATH=/usr/share/LHAPDF + pytest --mpl-generate-path=tests/baseline tests/test_interpolations.py + + - name: Commit and push updated baselines + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git" + git add neopdf_pyapi/tests/baseline/ + git diff --staged --quiet || git commit -m "chore: regenerate MPL baseline figures [skip ci]" + git push origin HEAD:${{ github.head_ref }} From 2b8d3f29d41088a231e7a8518bf83ec7bf76df1e Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 22:35:08 +0200 Subject: [PATCH 4/7] Add read permission --- .github/workflows/regenerate-figures.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/regenerate-figures.yml b/.github/workflows/regenerate-figures.yml index 7f472b75..bbe24dc4 100644 --- a/.github/workflows/regenerate-figures.yml +++ b/.github/workflows/regenerate-figures.yml @@ -6,6 +6,7 @@ on: permissions: contents: write + packages: read jobs: regenerate: From a4b3e90aa647799fb5f04182b5c7c6e32910288c Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 22:46:12 +0200 Subject: [PATCH 5/7] Fix commits --- .github/workflows/regenerate-figures.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regenerate-figures.yml b/.github/workflows/regenerate-figures.yml index bbe24dc4..c31fa755 100644 --- a/.github/workflows/regenerate-figures.yml +++ b/.github/workflows/regenerate-figures.yml @@ -39,8 +39,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" + git config --global --add safe.directory "${GITHUB_WORKSPACE}" + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git" git add neopdf_pyapi/tests/baseline/ git diff --staged --quiet || git commit -m "chore: regenerate MPL baseline figures [skip ci]" From 5a4c3ab96b2093b98a411901b28444ba00481cf7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Jun 2026 20:49:30 +0000 Subject: [PATCH 6/7] chore: regenerate MPL baseline figures [skip ci] --- .../test_interpolation_visual_-2-ubar.png | Bin 74500 -> 75808 bytes .../test_interpolation_visual_21-gluon.png | Bin 77885 -> 79454 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/neopdf_pyapi/tests/baseline/test_interpolation_visual_-2-ubar.png b/neopdf_pyapi/tests/baseline/test_interpolation_visual_-2-ubar.png index 07606aff4d26634317e673ec6a7b945bfee70396..e99dad4a5dfcc7bb345b79300987a3aa1c804fc5 100644 GIT binary patch literal 75808 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

)0Yudgo# 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�zQf+Oo1%?eAU@QhMB?w3j-&mmkEXh}VB%Z@NC?Ax1k0lG;Ep5E&(q zx*i%x>d`AR3qoauDuUeU_RfwqG$iRmmz;L@)3$`!o&WS`Yag%uPMF0&CAn_n!m=Tf z@iU0n;HS!;l`cUjGy0GJFG2ds5gT4@Jy(l+S|UbpKIHk7RoO`Ie=h%{O|>hCm!R+n z`bcq@LJH9s#NNgKry~rcZV};CDsFur`EgCl>f+(s{zw=LI;db$(LLrC7Hk%)HybX` zL3pt4p))Kx#w)!KU8F1^r{-_=F8YJjqR2hC9r`>mI7~jmXS=;~5G$;H(HXX{=sDW~ zao>+R?~a;z#X5bw`lOH-%>4N6;ZR(=*v0R_5FZ z;v<2fp`l&nNGIVD%$ykK7W;x>CC54uB6XXbg^ewv+4z34BqOVZ0+Kb*> z9VUU5W@BfcS%`-g(AmsyiOczuQ>GSzB%cbAK_>7Pre7t%##5pgIXH4u*4pQ7gtyyR z)Ioe@*I5K|$^y3&`yep4D%$IBwM3+0%!>la}8~+V(ItE2*FJ<;-kf9C) zJ15B=ITL4DW8$DwiI+oF_*C==v$?r>b8oL1)P|5n2i-D-6*HIeg6182Xl`Ef-Il5;g#PT%AcWRBY4Z2~3-X4T_B@e1!~O8c(}}O~=yud&?T1F6r~Xzm)S$ zDELJwnJ%K_2VyyrDSw6{kURaqcxoq0s4zM>08r?Ozty|4hYVE${ekk|RqOcwv&Rq1 zFEyQj?4V@YGwX=~L{nN%j|rsZ^GN@YVY@P+@RyH>sHleDNVmY~>fA(73_@i1aPjb%^$VgwL?HsC5nA2oHl+Si z3iySD8vH#h`uFWjMBaA3(ZeYZ)L%zJ5)dW1TmduH|7n4YprJtILjURMn?}UI{t0_% zuKeHs!w7{3S^dnSqV%AN1ak5JDB**i9E|rk#V{%y4i-s;{=los9uOiWASV}DM34iA x26NwANxWv{aG62z1U$+{3;i>;2%5kP>`l3TD}uG$ITZZ$_@RPSu7s}Fe*^uq!Eyiq diff --git a/neopdf_pyapi/tests/baseline/test_interpolation_visual_21-gluon.png b/neopdf_pyapi/tests/baseline/test_interpolation_visual_21-gluon.png index 73cb31d53198a97d9d976b3cc19263948807b1a9..bfb7fded29f3b09787caf88c55f0915f75e3afae 100644 GIT binary patch literal 79454 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Æ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

    SNmptQEfG zTYlz4>}rf+zX=^h2)u}M!VMS(8#LTz=?EhP1_tIWwHV*h*?D4SKbBv_ zQqpd(<_=5`iPlk1v4I3}kl`Tjx~-b>Rf)X9BoOMKMTRA7(9cxIRwgSuFGW-mj`ULHf{>=Ir9~xYWrIB?@OsVp3+r+e=N~X8N?_ za;8N!8Ru-uI{P!TvQCvL)^)VU9rQ|-kXpA6MQ>`=;Gjj-*Mfy?C;aH|{&h z<_->FsOUxyYu(HKANqa9je+p zlS@m@>KYn08O3_Utu(sOdy_Ktj_}mW{la-SWPaX7PhVdIe4sjT@4mjZFLWu(&XWGs z<5L(Ql`FNiwaKqv8^WJpy{@us#m sW~11gqN0$${_;2?D?6c}AS@Gi(MwFhca-r+I0$92>*Rn2ey2kArS6#xJL literal 77885 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Ν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 From a069a725ca909a1bb795f564bfaba7653ce7af48 Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Sun, 14 Jun 2026 23:09:11 +0200 Subject: [PATCH 7/7] Re-trigger the tests --- .github/workflows/regenerate-figures.yml | 2 +- .github/workflows/run-python.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regenerate-figures.yml b/.github/workflows/regenerate-figures.yml index c31fa755..d09acd48 100644 --- a/.github/workflows/regenerate-figures.yml +++ b/.github/workflows/regenerate-figures.yml @@ -44,5 +44,5 @@ jobs: git config --global user.email "github-actions[bot]@users.noreply.github.com" git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git" git add neopdf_pyapi/tests/baseline/ - git diff --staged --quiet || git commit -m "chore: regenerate MPL baseline figures [skip ci]" + git diff --staged --quiet || git commit -m "Regenerate MPL baseline figures" git push origin HEAD:${{ github.head_ref }} diff --git a/.github/workflows/run-python.yml b/.github/workflows/run-python.yml index 21ff27a2..524ca02c 100644 --- a/.github/workflows/run-python.yml +++ b/.github/workflows/run-python.yml @@ -1,4 +1,4 @@ -name: Python Versions 🐍 +name: Check Python Versions 🐍 on: [push]