From 35c12a4cd4047171fdc591b76cfab648602f541d Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Thu, 22 Aug 2024 09:12:41 -0400 Subject: [PATCH 1/4] move models to models/v1 --- qcelemental/models/{ => v1}/__init__.py | 0 qcelemental/models/{ => v1}/align.py | 0 qcelemental/models/{ => v1}/basemodels.py | 0 qcelemental/models/{ => v1}/basis.py | 0 qcelemental/models/{ => v1}/common_models.py | 0 qcelemental/models/{ => v1}/molecule.py | 0 qcelemental/models/{ => v1}/procedures.py | 0 qcelemental/models/{ => v1}/results.py | 0 qcelemental/models/{ => v1}/types.py | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename qcelemental/models/{ => v1}/__init__.py (100%) rename qcelemental/models/{ => v1}/align.py (100%) rename qcelemental/models/{ => v1}/basemodels.py (100%) rename qcelemental/models/{ => v1}/basis.py (100%) rename qcelemental/models/{ => v1}/common_models.py (100%) rename qcelemental/models/{ => v1}/molecule.py (100%) rename qcelemental/models/{ => v1}/procedures.py (100%) rename qcelemental/models/{ => v1}/results.py (100%) rename qcelemental/models/{ => v1}/types.py (100%) diff --git a/qcelemental/models/__init__.py b/qcelemental/models/v1/__init__.py similarity index 100% rename from qcelemental/models/__init__.py rename to qcelemental/models/v1/__init__.py diff --git a/qcelemental/models/align.py b/qcelemental/models/v1/align.py similarity index 100% rename from qcelemental/models/align.py rename to qcelemental/models/v1/align.py diff --git a/qcelemental/models/basemodels.py b/qcelemental/models/v1/basemodels.py similarity index 100% rename from qcelemental/models/basemodels.py rename to qcelemental/models/v1/basemodels.py diff --git a/qcelemental/models/basis.py b/qcelemental/models/v1/basis.py similarity index 100% rename from qcelemental/models/basis.py rename to qcelemental/models/v1/basis.py diff --git a/qcelemental/models/common_models.py b/qcelemental/models/v1/common_models.py similarity index 100% rename from qcelemental/models/common_models.py rename to qcelemental/models/v1/common_models.py diff --git a/qcelemental/models/molecule.py b/qcelemental/models/v1/molecule.py similarity index 100% rename from qcelemental/models/molecule.py rename to qcelemental/models/v1/molecule.py diff --git a/qcelemental/models/procedures.py b/qcelemental/models/v1/procedures.py similarity index 100% rename from qcelemental/models/procedures.py rename to qcelemental/models/v1/procedures.py diff --git a/qcelemental/models/results.py b/qcelemental/models/v1/results.py similarity index 100% rename from qcelemental/models/results.py rename to qcelemental/models/v1/results.py diff --git a/qcelemental/models/types.py b/qcelemental/models/v1/types.py similarity index 100% rename from qcelemental/models/types.py rename to qcelemental/models/v1/types.py From 2d227ca96bf66727e1d3bbf07ff391de1e3633e6 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Mon, 26 Aug 2024 12:01:14 -0400 Subject: [PATCH 2/4] fix up imports. tests clean --- qcelemental/models/__init__.py | 1 + qcelemental/models/v1/align.py | 2 +- qcelemental/models/v1/basis.py | 2 +- qcelemental/models/v1/molecule.py | 24 ++++++++++++------------ qcelemental/models/v1/procedures.py | 2 +- qcelemental/models/v1/results.py | 2 +- qcelemental/molutil/align.py | 14 ++++++++++---- qcelemental/testing.py | 5 +++-- qcelemental/tests/test_model_results.py | 2 +- 9 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 qcelemental/models/__init__.py diff --git a/qcelemental/models/__init__.py b/qcelemental/models/__init__.py new file mode 100644 index 00000000..e7e2ac4b --- /dev/null +++ b/qcelemental/models/__init__.py @@ -0,0 +1 @@ +from .v1 import * diff --git a/qcelemental/models/v1/align.py b/qcelemental/models/v1/align.py index a994ee72..ca09504f 100644 --- a/qcelemental/models/v1/align.py +++ b/qcelemental/models/v1/align.py @@ -7,7 +7,7 @@ except ImportError: # Will also trap ModuleNotFoundError from pydantic import Field, validator -from ..util import blockwise_contract, blockwise_expand +from ...util import blockwise_contract, blockwise_expand from .basemodels import ProtoModel from .types import Array diff --git a/qcelemental/models/v1/basis.py b/qcelemental/models/v1/basis.py index dfd20b93..2a4b2c88 100644 --- a/qcelemental/models/v1/basis.py +++ b/qcelemental/models/v1/basis.py @@ -6,7 +6,7 @@ except ImportError: # Will also trap ModuleNotFoundError from pydantic import ConstrainedInt, Field, constr, validator -from ..exceptions import ValidationError +from ...exceptions import ValidationError from .basemodels import ProtoModel, qcschema_draft diff --git a/qcelemental/models/v1/molecule.py b/qcelemental/models/v1/molecule.py index ac278a02..d2261f63 100644 --- a/qcelemental/models/v1/molecule.py +++ b/qcelemental/models/v1/molecule.py @@ -17,15 +17,15 @@ from pydantic import ConstrainedFloat, ConstrainedInt, Field, constr, validator # molparse imports separated b/c https://github.com/python/mypy/issues/7203 -from ..molparse.from_arrays import from_arrays -from ..molparse.from_schema import from_schema -from ..molparse.from_string import from_string -from ..molparse.to_schema import to_schema -from ..molparse.to_string import to_string -from ..periodic_table import periodictable -from ..physical_constants import constants -from ..testing import compare, compare_values -from ..util import deserialize, measure_coordinates, msgpackext_loads, provenance_stamp, which_import +from ...molparse.from_arrays import from_arrays +from ...molparse.from_schema import from_schema +from ...molparse.from_string import from_string +from ...molparse.to_schema import to_schema +from ...molparse.to_string import to_string +from ...periodic_table import periodictable +from ...physical_constants import constants +from ...testing import compare, compare_values +from ...util import deserialize, measure_coordinates, msgpackext_loads, provenance_stamp, which_import from .basemodels import ProtoModel, qcschema_draft from .common_models import Provenance, qcschema_molecule_default from .types import Array @@ -831,7 +831,7 @@ def get_molecular_formula(self, order: str = "alphabetical") -> str: """ - from ..molutil import molecular_formula_from_symbols + from ...molutil import molecular_formula_from_symbols return molecular_formula_from_symbols(symbols=self.symbols, order=order) @@ -1209,7 +1209,7 @@ def align( from `concern_mol` and the optimally aligned geometry. """ - from ..molutil.align import B787 + from ...molutil.align import B787 rgeom = np.array(ref_mol.geometry) runiq = np.asarray( @@ -1358,7 +1358,7 @@ def scramble( transformations. """ - from ..molutil.align import compute_scramble + from ...molutil.align import compute_scramble ref_mol = self rgeom = ref_mol.geometry diff --git a/qcelemental/models/v1/procedures.py b/qcelemental/models/v1/procedures.py index 5aa7807f..90f3c7cf 100644 --- a/qcelemental/models/v1/procedures.py +++ b/qcelemental/models/v1/procedures.py @@ -6,7 +6,7 @@ except ImportError: # Will also trap ModuleNotFoundError from pydantic import Field, conlist, constr, validator -from ..util import provenance_stamp +from ...util import provenance_stamp from .basemodels import ProtoModel from .common_models import ( ComputeError, diff --git a/qcelemental/models/v1/results.py b/qcelemental/models/v1/results.py index 301e1734..44140729 100644 --- a/qcelemental/models/v1/results.py +++ b/qcelemental/models/v1/results.py @@ -9,7 +9,7 @@ except ImportError: # Will also trap ModuleNotFoundError from pydantic import Field, constr, validator -from ..util import provenance_stamp +from ...util import provenance_stamp from .basemodels import ProtoModel, qcschema_draft from .basis import BasisSet from .common_models import ComputeError, DriverEnum, Model, Provenance, qcschema_input_default, qcschema_output_default diff --git a/qcelemental/molutil/align.py b/qcelemental/molutil/align.py index 4b3d8295..8c925250 100644 --- a/qcelemental/molutil/align.py +++ b/qcelemental/molutil/align.py @@ -1,16 +1,18 @@ import collections import itertools import time -from typing import List, Optional, Union +from typing import TYPE_CHECKING, List, Optional, Union import numpy as np from ..exceptions import ValidationError -from ..models import AlignmentMill from ..physical_constants import constants from ..testing import compare_values from ..util import distance_matrix, linear_sum_assignment, random_rotation_matrix, uno, which_import +if TYPE_CHECKING: + from qcelemental.models import AlignmentMill # TODO: recheck if .v1 needed + def _nre(Z, geom): """Nuclear repulsion energy""" @@ -100,11 +102,13 @@ def B787( float, AlignmentMill First item is RMSD [A] between `rgeom` and the optimally aligned geometry computed. - Second item is a AlignmentMill with fields + Second item is an AlignmentMill with fields (shift, rotation, atommap, mirror) that prescribe the transformation from `cgeom` and the optimally aligned geometry. """ + from qcelemental.models import AlignmentMill + # validation if rgeom.shape != cgeom.shape or rgeom.shape[1] != 3: raise ValidationError("""natom doesn't match: {} != {}""".format(rgeom.shape, cgeom.shape)) @@ -564,7 +568,7 @@ def compute_scramble( do_rotate: Union[bool, List, np.ndarray] = True, deflection: float = 1.0, do_mirror: bool = False, -) -> AlignmentMill: +) -> "AlignmentMill": r"""Generate a random or directed translation, rotation, and atom shuffling. Parameters @@ -595,6 +599,8 @@ def compute_scramble( as requested: identity, random, or specified. """ + from qcelemental.models import AlignmentMill + rand_elord = np.arange(nat) if do_resort is True: np.random.shuffle(rand_elord) diff --git a/qcelemental/testing.py b/qcelemental/testing.py index 6cf2e38a..6db0ada6 100644 --- a/qcelemental/testing.py +++ b/qcelemental/testing.py @@ -2,7 +2,7 @@ import logging import pprint import sys -from typing import Callable, Dict, List, Tuple, Union +from typing import TYPE_CHECKING, Callable, Dict, List, Tuple, Union import numpy as np @@ -11,7 +11,8 @@ except ImportError: # Will also trap ModuleNotFoundError from pydantic import BaseModel -from qcelemental.models.basemodels import ProtoModel +if TYPE_CHECKING: + from qcelemental.models import ProtoModel # TODO: recheck if .v1 needed pp = pprint.PrettyPrinter(width=120) diff --git a/qcelemental/tests/test_model_results.py b/qcelemental/tests/test_model_results.py index 7ce94efe..b3bba757 100644 --- a/qcelemental/tests/test_model_results.py +++ b/qcelemental/tests/test_model_results.py @@ -2,7 +2,7 @@ import pytest import qcelemental as qcel -from qcelemental.models import basis +from qcelemental.models.v1 import basis # TODO: generalize at parameterize v1/v2 stage from .addons import drop_qcsk From f2da61faecd2e338d27ac3476b8311c57ae13ad9 Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Mon, 26 Aug 2024 13:21:34 -0400 Subject: [PATCH 3/4] check pre-commit on full repo --- .pre-commit-config.yaml | 2 ++ docs/model_molecule.rst | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 37a79b5c..2d04f661 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,6 +2,7 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks + # will fail with git < 1.8.5 rev: v4.4.0 hooks: - id: check-yaml @@ -12,6 +13,7 @@ repos: hooks: - id: detect-secrets stages: [commit] + exclude: "raw_data/nist_data/" # TODO: Update to 5.12.x once we drop Python3.7 support # https://levelup.gitconnected.com/fix-runtimeerror-poetry-isort-5db7c67b60ff - repo: https://github.com/PyCQA/isort diff --git a/docs/model_molecule.rst b/docs/model_molecule.rst index 79f5224a..0b76e76a 100644 --- a/docs/model_molecule.rst +++ b/docs/model_molecule.rst @@ -62,7 +62,7 @@ database. >>> mol = qcel.models.Molecule(**{"symbols": ["He", "He"], "geometry": [0, 0, -3, 0, 0, 3]}) >>> mol.get_hash() - '84872f975d19aafa62b188b40fbadaf26a3b1f84' + '84872f975d19aafa62b188b40fbadaf26a3b1f84' # pragma: allowlist secret Molecular Formula +++++++++++++++++ From 5ab11195bf5700af77df40502f22a6a4210303cc Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Tue, 3 Sep 2024 10:10:52 -0400 Subject: [PATCH 4/4] dummy --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index b574e7f9..4f5cec1d 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -20,6 +20,7 @@ Changelog .. +++++ + 0.28.0 / 2024-06-21 -------------------