From b5639f00a99e48eec169b478d782308806b95d33 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Thu, 16 Jan 2025 10:02:26 -0600 Subject: [PATCH] MAINT: Only test with OpenMM --- .github/workflows/ci.yaml | 2 +- devtools/conda-envs/examples_env.yaml | 1 - openff/interchange/components/interchange.py | 14 +++++++++----- openff/interchange/foyer/_base.py | 7 ++++++- openff/interchange/foyer/_create.py | 5 ++++- openff/interchange/foyer/_nonbonded.py | 5 ++++- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d13978f1f..82f4f81af 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -33,10 +33,10 @@ jobs: - false openmm: - true - - false env: OE_LICENSE: ${{ github.workspace }}/oe_license.txt + COV: --cov=openff/interchange --cov-report=xml --cov-config=pyproject.toml --cov-append steps: - uses: actions/checkout@v4 diff --git a/devtools/conda-envs/examples_env.yaml b/devtools/conda-envs/examples_env.yaml index cd51766f5..00d197cc6 100644 --- a/devtools/conda-envs/examples_env.yaml +++ b/devtools/conda-envs/examples_env.yaml @@ -30,7 +30,6 @@ dependencies: - mdtraj - pytest - pytest-xdist - - pytest-cov - nbval # Examples - openmmforcefields diff --git a/openff/interchange/components/interchange.py b/openff/interchange/components/interchange.py index c07575049..f81c2986f 100644 --- a/openff/interchange/components/interchange.py +++ b/openff/interchange/components/interchange.py @@ -49,7 +49,11 @@ from openff.toolkit import ForceField if has_package("foyer"): - from foyer import Forcefield as FoyerForcefield + try: + from foyer.forcefield import Forcefield as FoyerForcefield + except ModuleNotFoundError: + # case of openff/interchange/foyer/ being detected as the real package + pass if has_package("nglview"): import nglview @@ -836,13 +840,13 @@ def from_foyer( >>> from openff.interchange import Interchange >>> from openff.toolkit import Molecule, Topology - >>> from foyer import Forcefield + >>> from foyer.forcefield import Forcefield # doctest: +SKIP >>> mol = Molecule.from_smiles("CC") >>> mol.generate_conformers(n_conformers=1) >>> top = Topology.from_molecules([mol]) - >>> oplsaa = Forcefield(name="oplsaa") - >>> interchange = Interchange.from_foyer(topology=top, force_field=oplsaa) - >>> interchange + >>> oplsaa = Forcefield(name="oplsaa") # doctest: +SKIP + >>> interchange = Interchange.from_foyer(topology=top, force_field=oplsaa) # doctest: +SKIP + >>> interchange # doctest: +SKIP Interchange with 8 collections, non-periodic topology with 8 atoms. """ diff --git a/openff/interchange/foyer/_base.py b/openff/interchange/foyer/_base.py index c4b8fdd94..83e26d45a 100644 --- a/openff/interchange/foyer/_base.py +++ b/openff/interchange/foyer/_base.py @@ -3,12 +3,17 @@ from typing import TYPE_CHECKING from openff.toolkit import Topology +from openff.utilities import has_package from openff.interchange.components.potentials import Collection, Potential from openff.interchange.models import PotentialKey, TopologyKey if TYPE_CHECKING: - from foyer import Forcefield + if has_package("foyer"): + try: + from foyer.forcefield import Forcefield + except ModuleNotFoundError: + pass # Is this the safest way to achieve PotentialKey id separation? diff --git a/openff/interchange/foyer/_create.py b/openff/interchange/foyer/_create.py index 5d4600eff..baacf57c9 100644 --- a/openff/interchange/foyer/_create.py +++ b/openff/interchange/foyer/_create.py @@ -22,7 +22,10 @@ from openff.interchange.models import TopologyKey if has_package("foyer"): - from foyer.forcefield import Forcefield + try: + from foyer.forcefield import Forcefield + except ModuleNotFoundError: + pass _CollectionAlias = type[Collection] diff --git a/openff/interchange/foyer/_nonbonded.py b/openff/interchange/foyer/_nonbonded.py index 947eb58ff..ff1af5e7b 100644 --- a/openff/interchange/foyer/_nonbonded.py +++ b/openff/interchange/foyer/_nonbonded.py @@ -11,7 +11,10 @@ from openff.interchange.models import PotentialKey, TopologyKey if has_package("foyer"): - from foyer import Forcefield + try: + from foyer.forcefield import Forcefield + except ModuleNotFoundError: + pass class FoyerVDWHandler(vdWCollection):