From 2bb69ab716f5ba184869a9f45dddc16970516dc1 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Wed, 29 Apr 2026 17:10:55 -0400 Subject: [PATCH 1/4] silence --- docs/changelog.rst | 12 ++++++++++++ qcmanybody/models/v1/__init__.py | 8 ++++---- qcmanybody/v1/__init__.py | 8 ++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 564579b..7cd62a6 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -33,6 +33,18 @@ Changelog :docs:`dev` for latest. +.. _`sec:cl071`: + +v0.7.1 / 2026-04-29 +=================== + +:docs:`v0.7.1` for current. :docs:`v0.5.2` for QCSchema v1. + +Enhancements +------------ +Warning printing throttled, so `import qcmanybody` is clean. Now depends on QCElemental >=0.50.0rc5 + + .. _`sec:cl070`: v0.7.0 / 2026-03-27 diff --git a/qcmanybody/models/v1/__init__.py b/qcmanybody/models/v1/__init__.py index ac40c33..4663b2f 100644 --- a/qcmanybody/models/v1/__init__.py +++ b/qcmanybody/models/v1/__init__.py @@ -21,10 +21,10 @@ "or migrate to qcmanybody.models.v2." ) -# Warn on import so users see the incompatibility when they explicitly import v1 -# Use FutureWarning (visible by default) so users notice the issue during import -if sys.version_info >= (3, 14): - warnings.warn(_MSG, FutureWarning, stacklevel=2) +# For a while, we used a FutureWarning (visible by default) so users notice the issue during import. +# Below works, but it interferes with clean `import qcmanybody`. So we'll rely on the instantiation errors. +# if sys.version_info >= (3, 14): +# warnings.warn(_MSG, FutureWarning, stacklevel=2) def _make_placeholder(name: str): diff --git a/qcmanybody/v1/__init__.py b/qcmanybody/v1/__init__.py index 70912e7..68c567a 100644 --- a/qcmanybody/v1/__init__.py +++ b/qcmanybody/v1/__init__.py @@ -9,10 +9,10 @@ "or migrate to qcmanybody.v2." ) -# Warn on import so users see the incompatibility when they explicitly import v1 -# Use FutureWarning (visible by default) so users notice the issue during import -if sys.version_info >= (3, 14): - warnings.warn(_MSG, FutureWarning, stacklevel=2) +# For a while, we used a FutureWarning (visible by default) so users notice the issue during import. +# Below works, but it interferes with clean `import qcmanybody`. So we'll rely on the instantiation errors. +# if sys.version_info >= (3, 14): +# warnings.warn(_MSG, FutureWarning, stacklevel=2) def _make_placeholder(name: str): From 9c1ecfc452ae2c1cc37d0dad7b315cab1401bd20 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Wed, 29 Apr 2026 17:22:50 -0400 Subject: [PATCH 2/4] review --- docs/changelog.rst | 3 ++- pyproject.toml | 2 +- qcmanybody/models/v1/__init__.py | 1 - qcmanybody/v1/__init__.py | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 7cd62a6..97db94c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -42,7 +42,8 @@ v0.7.1 / 2026-04-29 Enhancements ------------ -Warning printing throttled, so `import qcmanybody` is clean. Now depends on QCElemental >=0.50.0rc5 +* :pr:`48` Maint -- Warning printing silenced, so `import qcmanybody` is clean. + Now depends on QCElemental >=0.50.0rc5 .. _`sec:cl070`: diff --git a/pyproject.toml b/pyproject.toml index eac20b5..73c9a9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ dependencies = [ "numpy", "pydantic >=2.11; python_version <'3.14'", "pydantic >=2.12; python_version >='3.14'", - "qcelemental>=0.50.0rc3,<0.70.0", + "qcelemental>=0.50.0rc5,<0.70.0", ] [project.optional-dependencies] diff --git a/qcmanybody/models/v1/__init__.py b/qcmanybody/models/v1/__init__.py index 4663b2f..e690c23 100644 --- a/qcmanybody/models/v1/__init__.py +++ b/qcmanybody/models/v1/__init__.py @@ -12,7 +12,6 @@ import importlib import sys -import warnings _MSG = ( "qcmanybody.models.v1 is active but incompatible with Python 3.14+ " diff --git a/qcmanybody/v1/__init__.py b/qcmanybody/v1/__init__.py index 68c567a..adcc654 100644 --- a/qcmanybody/v1/__init__.py +++ b/qcmanybody/v1/__init__.py @@ -1,6 +1,5 @@ import importlib import sys -import warnings _MSG = ( "qcmanybody.v1 is active but incompatible with Python 3.14+ " From 8119cbb17e355a6bfd6b02c6a42264e5d3e73200 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Wed, 29 Apr 2026 17:24:30 -0400 Subject: [PATCH 3/4] review --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 908d4a0..54f6f7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: - setuptools-scm # Core - python - - qcelemental ==0.50.0rc3 + - qcelemental >=0.50.0rc5 - qcengine >=0.50rc1 # TODO temp - pydantic # Testing @@ -212,7 +212,7 @@ jobs: - setuptools-scm # Core - python - - qcelemental ==0.50.0rc3 + - qcelemental >=0.50.0rc5 # Docs - numpydoc - docutils From 4553e9070d5fb8b6681f2a9d83e0d52d246bfb09 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Thu, 30 Apr 2026 01:58:21 -0400 Subject: [PATCH 4/4] fix het4 rtd ee --- CITATION.cff | 4 ++-- docs/changelog.rst | 7 ++++++- qcmanybody/v1/computer.py | 5 +++-- qcmanybody/v2/computer.py | 5 +++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index d4c257c..3ba1949 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,8 +44,8 @@ keywords: - mbe - schema license: BSD-3-Clause -version: 0.6.1 -date-released: '2026-03-11' +version: 0.7.1 +date-released: '2026-04-30' preferred-citation: type: article authors: diff --git a/docs/changelog.rst b/docs/changelog.rst index 97db94c..c5baa03 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -35,7 +35,7 @@ Changelog .. _`sec:cl071`: -v0.7.1 / 2026-04-29 +v0.7.1 / 2026-04-30 =================== :docs:`v0.7.1` for current. :docs:`v0.5.2` for QCSchema v1. @@ -45,6 +45,11 @@ Enhancements * :pr:`48` Maint -- Warning printing silenced, so `import qcmanybody` is clean. Now depends on QCElemental >=0.50.0rc5 +Bug Fixes +--------- +* :pr:`48` EE -- Electrostatic embedding potential bug with Psi4 fixed embedding + charges might appear in keywords even when no charges on molecule. + .. _`sec:cl070`: diff --git a/qcmanybody/v1/computer.py b/qcmanybody/v1/computer.py index 98a1e6a..70e2c91 100644 --- a/qcmanybody/v1/computer.py +++ b/qcmanybody/v1/computer.py @@ -410,8 +410,9 @@ def from_manybodyinput(cls, input_model: ManyBodyInput, build_tasks: bool = True component_results = {} for chem, label, imol in computer_model.qcmb_core.iterate_molecules(): - inp = AtomicInput(molecule=imol, **specifications[chem]["specification"]) - # inp = AtomicInput(molecule=imol, **specifications[chem]["specification"], extras={"psiapi": True}) # faster for p4 + # deepcopy so function_kwargs edits are independent between iterations + inp = AtomicInput(molecule=imol, **copy.deepcopy(specifications[chem]["specification"])) + # inp = AtomicInput(molecule=imol, **copy.deepcopy(specifications[chem]["specification"]), extras={"psiapi": True}) if imol.extras.get("embedding_charges"): # or test on self.embedding_charges ? if specifications[chem]["program"] == "psi4": diff --git a/qcmanybody/v2/computer.py b/qcmanybody/v2/computer.py index 8a677b9..e391e42 100644 --- a/qcmanybody/v2/computer.py +++ b/qcmanybody/v2/computer.py @@ -417,8 +417,9 @@ def from_manybodyinput(cls, input_model: ManyBodyInput, build_tasks: bool = True component_results = {} for chem, label, imol in computer_model.qcmb_core.iterate_molecules(): - inp = AtomicInput(molecule=imol, specification=specifications[chem]["specification"]) - # inp = AtomicInput(molecule=imol, specification=specifications[chem]["specification"], extras={"psiapi": True}) # faster for p4 + # deepcopy so function_kwargs edits are independent between iterations + inp = AtomicInput(molecule=imol, specification=copy.deepcopy(specifications[chem]["specification"])) + # inp = AtomicInput(molecule=imol, specification=copy.deepcopy(specifications[chem]["specification"]), extras={"psiapi": True}) # faster for p4 if imol.extras.get("embedding_charges"): # or test on self.embedding_charges ? if specifications[chem]["program"] == "psi4":