python3Packages.matscipy: init at 1.2.0

This commit is contained in:
Gaetan Lepage
2026-06-12 23:21:12 +00:00
parent e749bb1151
commit 3e17027d91
2 changed files with 188 additions and 0 deletions
@@ -0,0 +1,186 @@
{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
pythonAtLeast,
fetchpatch,
# build-system
meson-python,
ninja,
numpy,
# dependencies
ase,
packaging,
scipy,
# optional-dependencies
# cli:
argcomplete,
# dislocation:
atomman,
nglview,
ovito,
# docs:
jupytext,
myst-nb,
numpydoc,
pydata-sphinx-theme,
sphinx,
sphinx-copybutton,
sphinx-rtd-theme,
sphinxcontrib-spelling,
# tests
pytest-subtests,
pytest-timeout,
pytest-xdist,
sympy,
# tests
pytestCheckHook,
}:
buildPythonPackage (finalAttrs: {
pname = "matscipy";
version = "1.2.0";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "libAtoms";
repo = "matscipy";
tag = "v${finalAttrs.version}";
hash = "sha256-XmY13B5S8tXYiUaec9gL6e0E3bSnbaMteHHiX2ij2sw=";
};
patches = [
# API: Fix compatibility with ASE 3.27.0
# https://github.com/libAtoms/matscipy/pull/301
(fetchpatch {
url = "https://github.com/libAtoms/matscipy/commit/6a91a4646e30796abe51ef3efa4b479d4471aae0.patch";
hash = "sha256-PH9I+7+nN6fSkugVbxPCs3LqjhP/fQ5NZjiNQ7F70YU=";
})
(fetchpatch {
url = "https://github.com/libAtoms/matscipy/commit/f6478347bbceeab8ec177042b6ed1243e742d55f.patch";
hash = "sha256-DKk+1TlP+OngcmycsCIE+7s2h/7wa7Gxv9APbuIAoZg=";
})
];
postPatch =
# Otherwise the script fails as it can't resolve the version with git
''
substituteInPlace discover_version.py \
--replace-fail \
"version = get_version_from_git()" \
"version = '${finalAttrs.version}'"
''
# Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead.
+ ''
substituteInPlace setup.cfg \
--replace-fail \
"[pytest]" \
"[tool:pytest]"
'';
build-system = [
# meson
meson-python
ninja
numpy
];
dependencies = [
ase
numpy
packaging
scipy
];
optional-dependencies = {
cli = [
argcomplete
];
dislocation = [
atomman
nglview
ovito
];
docs = [
jupytext
# matscipy
myst-nb
numpydoc
pydata-sphinx-theme
sphinx
sphinx-copybutton
sphinx-rtd-theme
sphinxcontrib-spelling
];
};
pythonImportsCheck = [ "matscipy" ];
nativeCheckInputs = [
pytest-subtests
pytest-timeout
pytest-xdist
pytestCheckHook
sympy
];
preCheck = ''
rm -rf matscipy
'';
disabledTestPaths = [
# The CLI tests look for the source scripts under `../matscipy/cli` relative to the test
# directory, which we remove in `preCheck` so that tests run against the installed package.
"tests/test_electrochemistry_cli.py"
]
++ lib.optionals (pythonAtLeast "3.14") [
# ValueError: cannot resize an array that may be referenced by another object
"tests/manybody/test_newmb.py"
"tests/test_neighbours.py"
];
disabledTests = [
# Numerical assertion failure
"test_birch_constants"
# numpy 2 / ase 3.28 incompatibilities in matscipy 1.2.0
# `ase.phonons` finite-difference reference no longer matches
"test_hessian_monoatomic"
"test_hessian_amorphous_alloy"
"test_hessian_crystalline_alloy"
# TypeError: only 0-dimensional arrays can be converted to Python scalars
"test_eam_read_write"
# AttributeError: 'Log' object has no attribute 'close'
"test_logger"
"test_usage"
]
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
# AssertionError: assert np.False (numerical precision)
"test_fixed_line_atoms"
]
++ lib.optionals (pythonAtLeast "3.14") [
# ValueError: cannot resize an array that may be referenced by another object
"test_harmonic_bond"
"test_read_molecules_from_atoms"
"test_read_molecules_from_lammps_data"
"test_read_write_lammps_data"
];
meta = {
description = "Materials science with Python at the atomic-scale";
homepage = "https://github.com/libAtoms/matscipy";
changelog = "https://github.com/libAtoms/matscipy/blob/${finalAttrs.src.tag}/ChangeLog.md";
license = lib.licenses.lgpl21Only;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
})
+2
View File
@@ -9752,6 +9752,8 @@ self: super: with self; {
matrix-nio = callPackage ../development/python-modules/matrix-nio { };
matscipy = callPackage ../development/python-modules/matscipy { };
matter-ble-proxy = callPackage ../development/python-modules/matter-ble-proxy { };
matter-python-client = callPackage ../development/python-modules/matter-python-client { };