diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d13978f1..82f4f81a 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/openff/interchange/components/interchange.py b/openff/interchange/components/interchange.py index c0757504..c71444e2 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 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 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 c4b8fdd9..83e26d45 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 5d4600ef..baacf57c 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 947eb58f..ff1af5e7 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):