From 6df36eaac423f8ecc312eafe776dfd1638dc103f Mon Sep 17 00:00:00 2001 From: Aaron Kaplan <33381112+esoteric-ephemera@users.noreply.github.com> Date: Wed, 2 Oct 2024 11:13:34 -0700 Subject: [PATCH] spglib 2.5 compatibility (#943) * update spglib symmetry dataset access and pin min version * move spglib version pin * ensure correct spglib installed in requirements * ensure correct spglib installed in requirements * add a few attempts to connect to dataset downloads in case internet has bad day * remove mac hidden ds_stores and add to gitignore * precommit * ensure backwards compat with older spglib, loosen lower pin on spglib version, upper pin on numpy * precommit * repin spglib == 2.5, add read permissions for workflow actions (somehow GH token not being read * Update .github/workflows/test.yml --------- Co-authored-by: Matthew Evans <7916000+ml-evs@users.noreply.github.com> --- .github/workflows/test.yml | 3 +++ .gitignore | 2 ++ matminer/datasets/tests/test_datasets.py | 11 ++++++++++- matminer/featurizers/structure/bonding.py | 4 ++-- pyproject.toml | 4 ++-- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 16a5b1d32..8a370aa0e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,6 +3,9 @@ # The ext package is also only tested in this workflow. Coverage is also computed based on this platform. name: Testing +permissions: + contents: read + env: PYTEST_ADDOPTS: "--color=yes" diff --git a/.gitignore b/.gitignore index e706c70ed..6288270f9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ docs/_build/*/*/* # C extensions *.so +.DS_Store + # Packages *.egg *.egg-info diff --git a/matminer/datasets/tests/test_datasets.py b/matminer/datasets/tests/test_datasets.py index 5c75dfa0c..ea3e108fb 100644 --- a/matminer/datasets/tests/test_datasets.py +++ b/matminer/datasets/tests/test_datasets.py @@ -1,5 +1,6 @@ import os import unittest +from time import sleep import numpy as np import requests @@ -20,6 +21,7 @@ def universal_dataset_check( numeric_headers=None, bool_headers=None, test_func=None, + max_connect_attempts: int = 5, ): # "Hard" integrity checks that take a long time. # These tests only run if the MATMINER_DATASET_FULL_TEST @@ -75,7 +77,14 @@ def universal_dataset_check( # This runs when on a system with the CI environment var present # (e.g. when running a continuous integration VCS system) else: - download_page = requests.head(self.dataset_dict[dataset_name]["url"]) + # try to be lenient in connecting to DB, in case a request fails once + for iconnect in range(max_connect_attempts): + download_page = requests.head(self.dataset_dict[dataset_name]["url"]) + if download_page.ok: + break + if iconnect < max_connect_attempts - 1: + sleep(5) + self.assertTrue(download_page.ok) diff --git a/matminer/featurizers/structure/bonding.py b/matminer/featurizers/structure/bonding.py index f22a3cdbc..69b1ecc9e 100644 --- a/matminer/featurizers/structure/bonding.py +++ b/matminer/featurizers/structure/bonding.py @@ -805,8 +805,8 @@ def get_equiv_sites(self, s, site): sga = SpacegroupAnalyzer(s, symprec=0.01) sg = sga.get_space_group_operations sym_data = sga.get_symmetry_dataset() - equiv_atoms = sym_data["equivalent_atoms"] - wyckoffs = sym_data["wyckoffs"] + equiv_atoms = getattr(sym_data, "equivalent_atoms", sym_data["equivalent_atoms"]) + wyckoffs = getattr(sym_data, "wyckoffs", sym_data["wyckoffs"]) sym_struct = SymmetrizedStructure(s, sg, equiv_atoms, wyckoffs) equivs = sym_struct.find_equivalent_sites(site) return equivs diff --git a/pyproject.toml b/pyproject.toml index 71ec89d26..77d85ff41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ # pin NumPy version used in the build - "numpy>=1.20.1", - "setuptools>=43.0.0" + "numpy>=1.20.1, <2", + "setuptools>=43.0.0", ] build-backend = "setuptools.build_meta"