From 843ede398e209da8f28708ffda8cf39a790a2b69 Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Sat, 11 Oct 2025 13:27:59 -0400 Subject: [PATCH 1/2] python3Packages.sunpy: 7.0.1 -> 7.0.2; unbreak --- .../python-modules/sunpy/default.nix | 194 +++++++++++------- 1 file changed, 120 insertions(+), 74 deletions(-) diff --git a/pkgs/development/python-modules/sunpy/default.nix b/pkgs/development/python-modules/sunpy/default.nix index e09eae34658e..e991d99cbab8 100644 --- a/pkgs/development/python-modules/sunpy/default.nix +++ b/pkgs/development/python-modules/sunpy/default.nix @@ -1,67 +1,103 @@ { lib, - stdenv, asdf, + asdf-astropy, astropy, - astropy-extension-helpers, - astropy-helpers, beautifulsoup4, buildPythonPackage, + contourpy, + dask, drms, - fetchPypi, + extension-helpers, + fetchFromGitHub, + fsspec, glymur, h5netcdf, + h5py, hypothesis, lxml, matplotlib, numpy, + opencv-python, + packaging, pandas, parfive, + pyerfa, pytest-astropy, pytestCheckHook, pytest-mock, python-dateutil, pythonOlder, + reproject, + requests, scikit-image, scipy, + setuptools, setuptools-scm, - sqlalchemy, tqdm, + writableTmpDirAsHomeHook, zeep, }: buildPythonPackage rec { pname = "sunpy"; - version = "7.0.1"; - format = "setuptools"; + version = "7.0.2"; + pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.11"; - src = fetchPypi { - inherit pname version; - hash = "sha256-9ZCG9CtTpgGGlqtXcl2epRBzFcbVvIMzZcXk5CQ5/+A="; + src = fetchFromGitHub { + owner = "sunpy"; + repo = "sunpy"; + tag = "v${version}"; + hash = "sha256-1LT6Dr9OZYIZkOICSYD8lt5v3Gn1gZGN4GWeJL6IH5w="; }; - nativeBuildInputs = [ - astropy-extension-helpers - setuptools-scm + # As of 2025-10-15, this requires numpy >=1.25.0,<2.3. + # (The >=1.25.0 constraint is in dependencies, the <2.3 in build-system) + # We can't use 1.x because it's not supported on Python 3.13+. + # And since numpy 2.x is at 2.3.2, it's not supported. + # However, the upper bound is "for matching the numpy deprecation policy", + # so relaxing it should be OK. (It silently was overridden previously, + # due to the use of `format = "setuptools"` instead of `pyproject = true`) + postPatch = '' + substituteInPlace pyproject.toml --replace-fail "numpy>=2.0.0rc1,<2.3" "numpy" + ''; + + build-system = [ + extension-helpers + setuptools + setuptools-scm # Technically needs setuptools-scm[toml], but that's our default. + numpy ]; - propagatedBuildInputs = [ + dependencies = [ astropy - astropy-helpers + fsspec numpy + packaging parfive - ]; + pyerfa + requests + ] + ++ parfive.optional-dependencies.ftp; optional-dependencies = { asdf = [ asdf - # asdf-astropy + asdf-astropy ]; - database = [ sqlalchemy ]; - image = [ - scikit-image + dask = [ dask ] ++ dask.optional-dependencies.array; + image = [ scipy ]; + jpeg2000 = [ + glymur + lxml + ]; + map = [ + contourpy + matplotlib + # mpl-animators + reproject scipy ]; net = [ @@ -71,93 +107,103 @@ buildPythonPackage rec { tqdm zeep ]; - jpeg2000 = [ - glymur - lxml - ]; + opencv = [ opencv-python ]; + scikit-image = [ scikit-image ]; + # spice = [ spiceypy ]; timeseries = [ # cdflib h5netcdf - # h5py + h5py matplotlib pandas ]; + visualization = [ + matplotlib + # mpl-animators + ]; + + # We can't use `with` here because "map" would still be the builtin, and + # we can't below because scikit-image would still be this package's argument. + core = lib.concatLists [ + optional-dependencies.image + optional-dependencies.map + optional-dependencies.net + optional-dependencies.timeseries + optional-dependencies.visualization + ]; + all = lib.concatLists [ + optional-dependencies.core + optional-dependencies.asdf + optional-dependencies.jpeg2000 + optional-dependencies.opencv + # optional-dependencies.spice + optional-dependencies.scikit-image + ]; }; nativeCheckInputs = [ hypothesis pytest-astropy - pytest-mock pytestCheckHook + pytest-mock + writableTmpDirAsHomeHook ] - ++ optional-dependencies.asdf - ++ optional-dependencies.database - ++ optional-dependencies.image - ++ optional-dependencies.net - ++ optional-dependencies.timeseries; - - postPatch = '' - substituteInPlace setup.cfg \ - --replace " --dist no" "" - ''; - - # darwin has write permission issues - doCheck = stdenv.hostPlatform.isLinux; - - preCheck = '' - export HOME=$(mktemp -d) - ''; + ++ optional-dependencies.all; disabledTests = [ - "rst" - "test_sunpy_warnings_logging" + "rst" # Docs + "test_print_params" # Needs to be online + "test_find_dependencies" # Needs cdflib + # Needs mpl-animators + "sunpy.coordinates.utils.GreatArc" + "test_expand_list_generator_map" + "test_great_arc_different_observer" + "test_great_arc_points_differentiates" + "test_great_arc_wrongly_formatted_points" + "test_main_exclude_remote_data" + "test_main_include_remote_data" "test_main_nonexisting_module" + "test_main_only_remote_data" "test_main_stdlib_module" - "test_find_dependencies" + "test_main_submodule_map" + "test_tai_seconds" + "test_utime" ]; disabledTestPaths = [ # Tests are very slow "sunpy/net/tests/test_fido.py" + "sunpy/net/tests/test_scraper.py" # asdf.extensions plugin issue + "sunpy/io/special/asdf/resources/manifests/*.yaml" "sunpy/io/special/asdf/resources/schemas/" - "sunpy/io/special/asdf/resources/manifests/sunpy-1.0.0.yaml" - # Requires mpl-animators package - "sunpy/map/tests/test_compositemap.py" - "sunpy/map/tests/test_mapbase.py" - "sunpy/map/tests/test_mapsequence.py" - "sunpy/map/tests/test_plotting.py" - "sunpy/map/tests/test_reproject_to.py" - "sunpy/net/tests/test_helioviewer.py" - "sunpy/timeseries/tests/test_timeseriesbase.py" - "sunpy/visualization/animator/tests/test_basefuncanimator.py" - "sunpy/visualization/animator/tests/test_mapsequenceanimator.py" - "sunpy/visualization/animator/tests/test_wcs.py" - "sunpy/visualization/colormaps/tests/test_cm.py" - # Requires cdflib package - "sunpy/timeseries/tests/test_timeseries_factory.py" - # Requires jplephem + # Requires mpl-animators + "sunpy/coordinates/tests/test_wcs_utils.py" + "sunpy/image/tests/test_resample.py" "sunpy/image/tests/test_transform.py" - "sunpy/io/special/asdf/tests/test_coordinate_frames.py" "sunpy/io/special/asdf/tests/test_genericmap.py" - # distutils is deprecated - "sunpy/io/setup_package.py" + "sunpy/map" + "sunpy/net/jsoc/tests/test_jsoc.py" + "sunpy/physics/differential_rotation.py" + "sunpy/physics/tests/test_differential_rotation.py" + "sunpy/visualization" + # Requires cdflib + "sunpy/io/tests/test_cdf.py" + "sunpy/timeseries" + # Requires jplephem + "sunpy/io/special/asdf/tests/test_coordinate_frames.py" + # Requires spiceypy + "sunpy/coordinates/tests/test_spice.py" ]; - pytestFlags = [ - "-Wignore::DeprecationWarning" - ]; + pytestFlags = [ "-Wignore::DeprecationWarning" ]; - # Wants a configuration file - # pythonImportsCheck = [ - # "sunpy" - # ]; + pythonImportsCheck = [ "sunpy" ]; meta = with lib; { description = "Python for Solar Physics"; homepage = "https://sunpy.org"; license = licenses.bsd2; maintainers = [ ]; - broken = true; }; } From 777bff68be6cb3c0f8878b6e172cd5f8da61d9ca Mon Sep 17 00:00:00 2001 From: Michael Daniels Date: Wed, 15 Oct 2025 17:06:14 -0400 Subject: [PATCH 2/2] python3Packages.{astropy-extension-helpers,extension-helpers}: combine at 1.4.0 astropy-extension-helpers was at 1.1.0. extension-helpers was at 1.4.0. They are both the same package; they were just packaged twice. --- .../astropy-extension-helpers/default.nix | 68 ------------------- .../astropy-healpix/default.nix | 4 +- .../extension-helpers/default.nix | 12 ++-- pkgs/top-level/python-aliases.nix | 1 + pkgs/top-level/python-packages.nix | 2 - 5 files changed, 9 insertions(+), 78 deletions(-) delete mode 100644 pkgs/development/python-modules/astropy-extension-helpers/default.nix diff --git a/pkgs/development/python-modules/astropy-extension-helpers/default.nix b/pkgs/development/python-modules/astropy-extension-helpers/default.nix deleted file mode 100644 index 6cebb395c8c2..000000000000 --- a/pkgs/development/python-modules/astropy-extension-helpers/default.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - fetchpatch, - findutils, - pytestCheckHook, - pythonOlder, - pip, - setuptools, - setuptools-scm, - tomli, - wheel, -}: - -buildPythonPackage rec { - pname = "extension-helpers"; - version = "1.1.0"; - pyproject = true; - - disabled = pythonOlder "3.7"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-SUYMeKP40fjOwXRHn16FrURZSMzEFgM8WqPm3fLFAik="; - }; - - patches = [ - # Not needed to allow this package to build, but meant for it's dependent - # packages, like astropy. See explanation at: - # https://github.com/astropy/extension-helpers/pull/59 - (fetchpatch { - url = "https://github.com/astropy/extension-helpers/commit/796f3e7831298df2d26b6d994b13fd57061a56d1.patch"; - hash = "sha256-NnqK9HQq1hQ66RUJf9gTCuLyA0BVqVtL292mSXJ9860="; - }) - ]; - - nativeBuildInputs = [ - setuptools - setuptools-scm - wheel - ]; - - propagatedBuildInputs = [ tomli ]; - - nativeCheckInputs = [ - findutils - pip - pytestCheckHook - ]; - - # avoid import mismatch errors, as conftest.py is copied to build dir - enabledTestPaths = [ "extension_helpers" ]; - - disabledTests = [ - # https://github.com/astropy/extension-helpers/issues/43 - "test_write_if_different" - ]; - - pythonImportsCheck = [ "extension_helpers" ]; - - meta = with lib; { - description = "Utilities for building and installing packages in the Astropy ecosystem"; - homepage = "https://github.com/astropy/extension-helpers"; - license = licenses.bsd3; - maintainers = with maintainers; [ rmcgibbo ]; - }; -} diff --git a/pkgs/development/python-modules/astropy-healpix/default.nix b/pkgs/development/python-modules/astropy-healpix/default.nix index 236050ea25c3..d6fed0f21447 100644 --- a/pkgs/development/python-modules/astropy-healpix/default.nix +++ b/pkgs/development/python-modules/astropy-healpix/default.nix @@ -5,7 +5,7 @@ fetchPypi, numpy, astropy, - astropy-extension-helpers, + extension-helpers, setuptools, setuptools-scm, pytestCheckHook, @@ -25,7 +25,7 @@ buildPythonPackage rec { }; nativeBuildInputs = [ - astropy-extension-helpers + extension-helpers numpy setuptools setuptools-scm diff --git a/pkgs/development/python-modules/extension-helpers/default.nix b/pkgs/development/python-modules/extension-helpers/default.nix index 6908f66127ef..ba036029682a 100644 --- a/pkgs/development/python-modules/extension-helpers/default.nix +++ b/pkgs/development/python-modules/extension-helpers/default.nix @@ -4,6 +4,8 @@ fetchFromGitHub, build, cython, + findutils, + pip, pytestCheckHook, pythonOlder, setuptools-scm, @@ -17,8 +19,6 @@ buildPythonPackage rec { version = "1.4.0"; pyproject = true; - disabled = pythonOlder "3.8"; - src = fetchFromGitHub { owner = "astropy"; repo = "extension-helpers"; @@ -36,6 +36,8 @@ buildPythonPackage rec { nativeCheckInputs = [ build cython + findutils + pip pytestCheckHook wheel ]; @@ -45,10 +47,8 @@ buildPythonPackage rec { enabledTestPaths = [ "extension_helpers/tests" ]; disabledTests = [ - # Test require network access - "test_only_pyproject" - # ModuleNotFoundError - "test_no_setup_py" + # https://github.com/astropy/extension-helpers/issues/43 + "test_write_if_different" ]; meta = with lib; { diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 0521f9bc947b..a1b9434ef09d 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -87,6 +87,7 @@ mapAliases { argon2_cffi = argon2-cffi; # added 2022-05-09 arnparse = throw "arnparse has been removed because the upstream repository was archived in 2023"; # Added 2024-10-04 APScheduler = apscheduler; # added 2023-02-19 + astropy-extension-helpers = extension-helpers; # Added 2025-10-15 async_generator = async-generator; # added 2023-08-08 async_stagger = async-stagger; # added 2023-08-08 asyncio-mqtt = throw "asyncio-mqtt has been replaced by aiomqtt, which is not API compatible."; # added 2024-07-07 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5f5db002b880..f851762b2e0e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1001,8 +1001,6 @@ self: super: with self; { astropy = callPackage ../development/python-modules/astropy { }; - astropy-extension-helpers = callPackage ../development/python-modules/astropy-extension-helpers { }; - astropy-healpix = callPackage ../development/python-modules/astropy-healpix { }; astropy-helpers = callPackage ../development/python-modules/astropy-helpers { };