diff --git a/pkgs/development/python-modules/astropy-helpers/default.nix b/pkgs/development/python-modules/astropy-helpers/default.nix index c803ac0449c3..f0938e83a7ab 100644 --- a/pkgs/development/python-modules/astropy-helpers/default.nix +++ b/pkgs/development/python-modules/astropy-helpers/default.nix @@ -1,30 +1,35 @@ { lib, buildPythonPackage, - fetchPypi, - isPy3k, - pythonAtLeast, + fetchFromGitHub, + setuptools, }: buildPythonPackage rec { pname = "astropy-helpers"; version = "4.0.1"; - format = "setuptools"; + pyproject = true; - # ModuleNotFoundError: No module named 'imp' - disabled = !isPy3k || pythonAtLeast "3.12"; - - doCheck = false; # tests requires sphinx-astropy - - src = fetchPypi { - inherit pname version; - sha256 = "f1096414d108778218d6bea06d4d9c7b2ff7c83856a451331ac194e74de9f413"; + src = fetchFromGitHub { + owner = "astropy"; + repo = "astropy-helpers"; + tag = "v${version}"; + hash = "sha256-MjL/I+ApyoyoD2NmKuKWpDbyuEgvBb2OBhxqj/w/3lk="; }; - meta = with lib; { + patches = [ + # Fixes build with Python 3.12+ + ./python-imp.patch + ]; + + build-system = [ setuptools ]; + + pythonImportsCheck = [ "astropy_helpers" ]; + + meta = { description = "Utilities for building and installing Astropy, Astropy affiliated packages, and their respective documentation"; homepage = "https://github.com/astropy/astropy-helpers"; - license = licenses.bsd3; - maintainers = [ maintainers.smaret ]; + license = lib.licenses.bsd3; + maintainers = [ lib.maintainers.smaret ]; }; } diff --git a/pkgs/development/python-modules/astropy-helpers/python-imp.patch b/pkgs/development/python-modules/astropy-helpers/python-imp.patch new file mode 100644 index 000000000000..d12c2fb0e951 --- /dev/null +++ b/pkgs/development/python-modules/astropy-helpers/python-imp.patch @@ -0,0 +1,63 @@ +diff --git a/astropy_helpers/tests/test_git_helpers.py b/astropy_helpers/tests/test_git_helpers.py +index 6b826fc..3fb3a29 100644 +--- a/astropy_helpers/tests/test_git_helpers.py ++++ b/astropy_helpers/tests/test_git_helpers.py +@@ -1,5 +1,5 @@ + import glob +-import imp ++import importlib as imp + import os + import pkgutil + import re +diff --git a/astropy_helpers/utils.py b/astropy_helpers/utils.py +index 115c915..0cfc9e3 100644 +--- a/astropy_helpers/utils.py ++++ b/astropy_helpers/utils.py +@@ -1,12 +1,12 @@ + # Licensed under a 3-clause BSD style license - see LICENSE.rst + + import contextlib +-import imp + import os + import sys + import glob + + from importlib import machinery as import_machinery ++from importlib import util as importlib_util + + + # Note: The following Warning subclasses are simply copies of the Warnings in +@@ -54,9 +54,9 @@ def get_numpy_include_path(): + import builtins + if hasattr(builtins, '__NUMPY_SETUP__'): + del builtins.__NUMPY_SETUP__ +- import imp ++ import importlib + import numpy +- imp.reload(numpy) ++ importlib.reload(numpy) + + try: + numpy_include = numpy.get_include() +@@ -208,8 +208,6 @@ def import_file(filename, name=None): + # generates an underscore-separated name which is more likely to + # be unique, and it doesn't really matter because the name isn't + # used directly here anyway. +- mode = 'r' +- + if name is None: + basename = os.path.splitext(filename)[0] + name = '_'.join(os.path.relpath(basename).split(os.sep)[1:]) +@@ -221,8 +219,10 @@ def import_file(filename, name=None): + loader = import_machinery.SourceFileLoader(name, filename) + mod = loader.load_module() + else: +- with open(filename, mode) as fd: +- mod = imp.load_module(name, fd, filename, ('.py', mode, 1)) ++ importlib_util ++ spec = importlib_util.spec_from_file_location(name, filename) ++ mod = importlib_util.module_from_spec(spec) ++ spec.loader.exec_module(mod) + + return mod + diff --git a/pkgs/development/python-modules/astroquery/default.nix b/pkgs/development/python-modules/astroquery/default.nix index ff82ba44b9e3..7d7b6ee6240a 100644 --- a/pkgs/development/python-modules/astroquery/default.nix +++ b/pkgs/development/python-modules/astroquery/default.nix @@ -1,8 +1,10 @@ { - pkgs, + lib, buildPythonPackage, - fetchPypi, + fetchFromGitHub, + fetchpatch2, astropy, + boto3, requests, keyring, beautifulsoup4, @@ -17,22 +19,35 @@ pyvo, astropy-helpers, setuptools, - isPy3k, }: buildPythonPackage rec { pname = "astroquery"; version = "0.4.10"; - format = "pyproject"; + pyproject = true; - src = fetchPypi { - inherit pname version; - hash = "sha256-6s2R6do3jmQXQPvDEjhQ2qg7oJJqb/9MQMy/XcbVpAY="; + src = fetchFromGitHub { + owner = "astropy"; + repo = "astroquery"; + tag = "v${version}"; + hash = "sha256-5pNKV+XNfUQca7WoWboVphXffzyVIHCmfxwr4nBMaEk="; }; - disabled = !isPy3k; + patches = [ + # https://github.com/astropy/astroquery/pull/3311 + (fetchpatch2 { + name = "setuptools-package-index.patch"; + url = "https://github.com/astropy/astroquery/commit/9d43beb4b7bea424d73fff0b602ca90026155519.patch"; + hash = "sha256-3QdOwP1rlWeScGxHT9ZVPmffE7S1XE0cbtnQ8T4bIYw="; + }) + ]; - propagatedBuildInputs = [ + build-system = [ + astropy-helpers + setuptools + ]; + + dependencies = [ astropy requests keyring @@ -41,11 +56,6 @@ buildPythonPackage rec { pyvo ]; - nativeBuildInputs = [ - astropy-helpers - setuptools - ]; - # Disable automatic update of the astropy-helper module postPatch = '' substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False" @@ -54,6 +64,7 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook ]; checkInputs = [ + boto3 matplotlib pillow pytest @@ -76,10 +87,10 @@ buildPythonPackage rec { pythonImportsCheck = [ "astroquery" ]; - meta = with pkgs.lib; { + meta = { description = "Functions and classes to access online data resources"; homepage = "https://astroquery.readthedocs.io/"; - license = licenses.bsd3; - maintainers = [ maintainers.smaret ]; + license = lib.licenses.bsd3; + maintainers = [ lib.maintainers.smaret ]; }; }