python3Packages.astropy-helpers: fix build for py312+; python3Packages.astroquery: fix build (#424335)

Changed files
+110 -31
pkgs
development
python-modules
astropy-helpers
astroquery
+19 -14
pkgs/development/python-modules/astropy-helpers/default.nix
···
{
lib,
buildPythonPackage,
-
fetchPypi,
-
isPy3k,
-
pythonAtLeast,
+
fetchFromGitHub,
+
setuptools,
}:
buildPythonPackage rec {
pname = "astropy-helpers";
version = "4.0.1";
-
format = "setuptools";
+
pyproject = true;
+
+
src = fetchFromGitHub {
+
owner = "astropy";
+
repo = "astropy-helpers";
+
tag = "v${version}";
+
hash = "sha256-MjL/I+ApyoyoD2NmKuKWpDbyuEgvBb2OBhxqj/w/3lk=";
+
};
-
# ModuleNotFoundError: No module named 'imp'
-
disabled = !isPy3k || pythonAtLeast "3.12";
+
patches = [
+
# Fixes build with Python 3.12+
+
./python-imp.patch
+
];
-
doCheck = false; # tests requires sphinx-astropy
+
build-system = [ setuptools ];
-
src = fetchPypi {
-
inherit pname version;
-
sha256 = "f1096414d108778218d6bea06d4d9c7b2ff7c83856a451331ac194e74de9f413";
-
};
+
pythonImportsCheck = [ "astropy_helpers" ];
-
meta = with lib; {
+
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 ];
};
}
+63
pkgs/development/python-modules/astropy-helpers/python-imp.patch
···
+
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
+
+28 -17
pkgs/development/python-modules/astroquery/default.nix
···
{
-
pkgs,
+
lib,
buildPythonPackage,
-
fetchPypi,
+
fetchFromGitHub,
+
fetchpatch2,
astropy,
+
boto3,
requests,
keyring,
beautifulsoup4,
···
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=";
+
})
+
];
+
+
build-system = [
+
astropy-helpers
+
setuptools
+
];
-
propagatedBuildInputs = [
+
dependencies = [
astropy
requests
keyring
···
pyvo
];
-
nativeBuildInputs = [
-
astropy-helpers
-
setuptools
-
];
-
# Disable automatic update of the astropy-helper module
postPatch = ''
substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
···
nativeCheckInputs = [ pytestCheckHook ];
checkInputs = [
+
boto3
matplotlib
pillow
pytest
···
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 ];
};
}