Repository: Quantum-Accelerators/quacc
Pull request #2384 (2024-08-04 22:08:20)

Bump ase from 3.23.0 to 3.24.0

codecov[bot]: ## [Codecov](https://app.codecov.io/gh/Quantum-Accelerators/quacc/pull/2384?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Quantum-Accelerators) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 98.65%. Comparing base [(`4d84793`)](https://app.codecov.io/gh/Quantum-Accelerators/quacc/commit/4d8479325cbfd865711ef49a03535fc53d93444b?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Quantum-Accelerators) to head [(`1f238d7`)](https://app.codecov.io/gh/Quantum-Accelerators/quacc/commit/1f238d7e11977d9c5a7764c7ad6bf1abf82f6ca2?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Quantum-Accelerators).

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##             main    #2384   +/-   ##
=======================================
  Coverage   98.65%   98.65%           
=======================================
  Files          85       85           
  Lines        3564     3564           
=======================================
  Hits         3516     3516           
  Misses         48       48           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/Quantum-Accelerators/quacc/pull/2384?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Quantum-Accelerators).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Quantum-Accelerators).

Andrew-S-Rosen: @tomdemeyere: FYI that something seems broken with the Espresso output reader and the dev version of ASE as noted [here](https://github.com/Quantum-Accelerators/quacc/actions/runs/12460509999/job/34778839114?pr=2384). I'm not quite sure what yet. But just keeping you in the loop.
tomdemeyere: @Andrew-S-Rosen 

This is ASE related. A recent PR (https://gitlab.com/ase/ase/-/merge_requests/3527) changed how the reader is supposed to read lattice parameters (`alat` specifically), now a `None` is moving around, until this line complain.

I will think about a fix.

Patch:
diff --git a/pyproject.toml b/pyproject.toml
index 61d42fd3..4cf1d566 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -26,7 +26,7 @@ classifiers = [
 ]
 requires-python = ">=3.10"
 dependencies = [
-    "ase>=3.23.0", # for Atoms object and calculators
+    "ase>=3.24.0", # for Atoms object and calculators
     "custodian>=2024.10.15", # for automated error corrections
     "emmet-core>=0.84.3rc6", # for pre-made schemas
     "maggma>=0.64.0", # for database handling
@@ -35,7 +35,7 @@ dependencies = [
     "psutil", # for getting compute architecture details
     "pydantic>=2.0.1", # for settings management
     "pydantic-settings>=2.2.0", # for settings management
-    "pymatgen>=2024.10.22", # for structure manipulation
+    "pymatgen>=2024.10.22", # for structure manipulation and I/O
     "ruamel.yaml>=0.17.40", # for YAML
     "typer>=0.12.1", # for the CLI
 ]
@@ -52,7 +52,7 @@ parsl = ["parsl[monitoring]>=2024.5.27; platform_system!='Windows'"]
 phonons = ["phonopy>=2.20.0", "seekpath>=2.1.0"]
 prefect = ["prefect[dask]>=2.19.0", "dask-jobqueue>=0.8.2"]
 redun = ["redun>=0.16.2"]
-sella = ["sella>=2.3.4"]
+sella = ["sella>=2.3.5"]
 tblite = ["tblite>=0.3.0; platform_system=='Linux'"]
 dev = ["pytest>=7.4.0", "pytest-cov>=3.0.0", "ruff>=0.0.285"]
 docs = [
diff --git a/src/quacc/calculators/vasp/vasp.py b/src/quacc/calculators/vasp/vasp.py
index ecb95873..1ce1c9b5 100644
--- a/src/quacc/calculators/vasp/vasp.py
+++ b/src/quacc/calculators/vasp/vasp.py
@@ -289,7 +289,7 @@ class Vasp(Vasp_):
         command: str | None = None,
         out: Path | str | None = None,
         directory: Path | str | None = None,
-    ) -> int:
+    ) -> tuple[int, str]:
         """
         Override the Vasp calculator's run method to use Custodian if necessary.
 
@@ -306,8 +306,8 @@ class Vasp(Vasp_):
 
         Returns
         -------
-        int
-            The return code.
+        int, str
+            The return code and stderr.
         """
         if command is None:
             command = self.command
@@ -316,10 +316,16 @@ class Vasp(Vasp_):
 
         if self.use_custodian:
             run_custodian(directory=directory)
-            return 0
-
-        if out:
-            with Path(out).open("w") as file:
-                return subprocess.call(command, shell=True, stdout=file, cwd=directory)
-        else:
-            return subprocess.call(command, shell=True, stdout=None, cwd=directory)
+            return 0, None
+
+        result = subprocess.run(
+            command,
+            shell=True,
+            cwd=directory,
+            capture_output=True,
+            text=True,
+            check=False,
+        )
+        if out is not None:
+            out.write(result.stdout)
+        return result.returncode, result.stderr
diff --git a/src/quacc/recipes/onetep/_base.py b/src/quacc/recipes/onetep/_base.py
index 749b7314..f3cb9492 100644
--- a/src/quacc/recipes/onetep/_base.py
+++ b/src/quacc/recipes/onetep/_base.py
@@ -124,7 +124,6 @@ def prep_calculator(
     settings = get_settings()
 
     return Onetep(
-        profile=OnetepProfile(command=f"{settings.ONETEP_CMD}"),
-        pseudo_path=str(settings.ONETEP_PP_PATH),
+        profile=OnetepProfile(f"{settings.ONETEP_CMD}", str(settings.ONETEP_PP_PATH)),
         **calc_flags,
     )


Test patch:
diff --git a/tests/core/calculators/vasp/test_vasp.py b/tests/core/calculators/vasp/test_vasp.py
index f0d090dc..b0c2c0d8 100644
--- a/tests/core/calculators/vasp/test_vasp.py
+++ b/tests/core/calculators/vasp/test_vasp.py
@@ -929,7 +929,7 @@ def test_run(monkeypatch, tmp_path):
 
     atoms = bulk("Cu")
     calc = Vasp(atoms, xc="PBE", use_custodian=False)
-    assert calc._run() > 0
+    assert calc._run()[0] > 0
 
     atoms = bulk("Cu")
     calc = Vasp(atoms, xc="PBE", use_custodian=True)
diff --git a/tests/core/recipes/espresso_recipes/test_core.py b/tests/core/recipes/espresso_recipes/test_core.py
index 75d14557..960dcc8b 100644
--- a/tests/core/recipes/espresso_recipes/test_core.py
+++ b/tests/core/recipes/espresso_recipes/test_core.py
@@ -325,6 +325,7 @@ def test_ase_relax_cell_job(tmp_path, monkeypatch):
         )
 
 
+@pytest.mark.skip(reason="ASE 3.24.0 broke parsing with alat")
 def test_relax_job_cell(tmp_path, monkeypatch):
     monkeypatch.chdir(tmp_path)
     monkeypatch.setenv("OMP_NUM_THREADS", "1")
diff --git a/tests/core/recipes/vasp_recipes/mocked/conftest.py b/tests/core/recipes/vasp_recipes/mocked/conftest.py
index 7992ec1f..4cbb5933 100644
--- a/tests/core/recipes/vasp_recipes/mocked/conftest.py
+++ b/tests/core/recipes/vasp_recipes/mocked/conftest.py
@@ -23,6 +23,7 @@ def mock_run(self, *args, **kwargs):
     from ase.io import write
 
     write(Path(self.directory, "CONTCAR"), self.atoms)
+    return None, None
 
 
 @pytest.fixture(autouse=True)
diff --git a/tests/jenkins/hpc_tests.sh b/tests/jenkins/hpc_tests.sh
index 5892382b..f8ff0f8d 100755
--- a/tests/jenkins/hpc_tests.sh
+++ b/tests/jenkins/hpc_tests.sh
@@ -22,9 +22,9 @@ module load gaussian/g16
 pytest tests/core/recipes/gaussian_recipes --noconftest
 
 # ORCA
-export PATH=$SOFTWARE/orca:$PATH
+export PATH=$SOFTWARE/orca_6_0_0_shared_openmpi416:$PATH
 module purge
-module load openmpi/gcc/4.1.2
+module load nvhpc/24.5 openmpi/nvhpc-24.5/4.1.6
 pytest tests/core/recipes/orca_recipes --noconftest
 
 # VASP
diff --git a/tests/requirements-parsl.txt b/tests/requirements-parsl.txt
index 96349258..d735d647 100644
--- a/tests/requirements-parsl.txt
+++ b/tests/requirements-parsl.txt
@@ -1,1 +1,1 @@
-parsl[monitoring]==2024.12.16
+parsl[monitoring]==2024.12.23
diff --git a/tests/requirements-phonons.txt b/tests/requirements-phonons.txt
index 7612cb62..ad064e8f 100644
--- a/tests/requirements-phonons.txt
+++ b/tests/requirements-phonons.txt
@@ -1,2 +1,2 @@
-phonopy==2.33.3
+phonopy==2.33.4
 seekpath==2.1.0
diff --git a/tests/requirements-prefect.txt b/tests/requirements-prefect.txt
index a4951fec..5177d0fa 100644
--- a/tests/requirements-prefect.txt
+++ b/tests/requirements-prefect.txt
@@ -1,2 +1,2 @@
 dask-jobqueue==0.9.0
-prefect[dask]==3.1.9
+prefect[dask]==3.1.10
diff --git a/tests/requirements.txt b/tests/requirements.txt
index a9af02a2..b9a6da05 100644
--- a/tests/requirements.txt
+++ b/tests/requirements.txt
@@ -1,7 +1,7 @@
-ase==3.23.0
+ase==3.24.0
 custodian==2024.10.16
 emmet-core==0.84.5
-maggma==0.70.0
+maggma==0.71.0
 monty==2024.12.10
 numpy==1.26.4
 psutil==6.1.1