From 4d6d315255a98a9306cbe98811936eb1b5ddc9e5 Mon Sep 17 00:00:00 2001 From: Seung Hyun Kim Date: Sun, 30 Jun 2024 02:11:23 -0500 Subject: [PATCH] partially resolve #402: move analytical.py into tests --- Makefile | 1 - elastica/__init__.py | 3 +- elastica/timestepper/symplectic_steppers.py | 9 +++--- pyproject.toml | 2 -- {elastica/systems => tests}/analytical.py | 0 tests/test_math/test_timestepper.py | 28 ++++++++----------- .../test_rigid_body_data_structures.py | 4 +-- 7 files changed, 20 insertions(+), 27 deletions(-) rename {elastica/systems => tests}/analytical.py (100%) diff --git a/Makefile b/Makefile index 89b4b1799..3bce77a7a 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,6 @@ flake8: .PHONY: autoflake-check autoflake-check: poetry run autoflake --version - poetry run autoflake $(AUTOFLAKE_ARGS) elastica tests examples poetry run autoflake --check $(AUTOFLAKE_ARGS) elastica tests examples .PHONY: autoflake-format diff --git a/elastica/__init__.py b/elastica/__init__.py index b5a1e8ea2..5f0703060 100644 --- a/elastica/__init__.py +++ b/elastica/__init__.py @@ -75,10 +75,9 @@ from elastica.utils import isqrt from elastica.timestepper import ( integrate, - PositionVerlet, - PEFRL, extend_stepper_interface, ) +from elastica.timestepper.symplectic_steppers import PositionVerlet, PEFRL from elastica.memory_block.memory_block_rigid_body import MemoryBlockRigidBody from elastica.memory_block.memory_block_rod import MemoryBlockCosseratRod from elastica.restart import save_state, load_state diff --git a/elastica/timestepper/symplectic_steppers.py b/elastica/timestepper/symplectic_steppers.py index 9928997c8..6f2405074 100644 --- a/elastica/timestepper/symplectic_steppers.py +++ b/elastica/timestepper/symplectic_steppers.py @@ -1,14 +1,11 @@ __doc__ = """Symplectic time steppers and concepts for integrating the kinematic and dynamic equations of rod-like objects. """ -from typing import Any, Final +from typing import TYPE_CHECKING, Any from itertools import zip_longest from elastica.typing import ( - SystemType, SystemCollectionType, - # StepOperatorType, - # PrefactorOperatorType, StepType, SteppersOperatorsType, ) @@ -308,3 +305,7 @@ def _third_kinematic_step( System.omega_collection, ) # System.kinematic_states += prefac * System.kinematic_rates(time, prefac) + + +if TYPE_CHECKING: + pass diff --git a/pyproject.toml b/pyproject.toml index bbd4e9ce4..eef6872b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -145,7 +145,6 @@ warn_unused_configs = true warn_unused_ignores = false exclude = [ - "elastica/systems/analytical.py", "elastica/experimental/*", ] @@ -183,7 +182,6 @@ branch = true omit = [ "*/.local/*", "setup.py", - "elastica/systems/analytical.py", "elastica/experimental/*", "elastica/**/protocol.py", ] diff --git a/elastica/systems/analytical.py b/tests/analytical.py similarity index 100% rename from elastica/systems/analytical.py rename to tests/analytical.py diff --git a/tests/test_math/test_timestepper.py b/tests/test_math/test_timestepper.py index 6a6169856..62f79a453 100644 --- a/tests/test_math/test_timestepper.py +++ b/tests/test_math/test_timestepper.py @@ -3,18 +3,7 @@ import pytest from numpy.testing import assert_allclose -from elastica.systems.analytical import ( - ScalarExponentialDecaySystem, - # UndampedSimpleHarmonicOscillatorSystem, - SymplecticUndampedSimpleHarmonicOscillatorSystem, - # DampedSimpleHarmonicOscillatorSystem, - # MultipleFrameRotationSystem, - # SecondOrderHybridSystem, - SymplecticUndampedHarmonicOscillatorCollectiveSystem, - ScalarExponentialDampedHarmonicOscillatorCollectiveSystem, -) from elastica.timestepper import integrate, extend_stepper_interface - from elastica.experimental.timestepper.explicit_steppers import ( RungeKutta4, EulerForward, @@ -25,10 +14,20 @@ PEFRL, SymplecticStepperMixin, ) - - from elastica.utils import Tolerance +from tests.analytical import ( + ScalarExponentialDecaySystem, + # UndampedSimpleHarmonicOscillatorSystem, + SymplecticUndampedSimpleHarmonicOscillatorSystem, + # DampedSimpleHarmonicOscillatorSystem, + # MultipleFrameRotationSystem, + # SecondOrderHybridSystem, + SymplecticUndampedHarmonicOscillatorCollectiveSystem, + ScalarExponentialDampedHarmonicOscillatorCollectiveSystem, + make_simple_system_with_positions_directors, +) + class TestExtendStepperInterface: """TODO add documentation""" @@ -309,9 +308,6 @@ class TestSteppersAgainstRodLikeSystems: @pytest.mark.parametrize("symplectic_stepper", SymplecticSteppers) def test_symplectics_against_ellipse_motion(self, symplectic_stepper): - from elastica.systems.analytical import ( - make_simple_system_with_positions_directors, - ) random_start_position = np.random.randn(3, 1) random_end_position = np.random.randn(3, 1) diff --git a/tests/test_rigid_body/test_rigid_body_data_structures.py b/tests/test_rigid_body/test_rigid_body_data_structures.py index 844199529..0ede2bd89 100644 --- a/tests/test_rigid_body/test_rigid_body_data_structures.py +++ b/tests/test_rigid_body/test_rigid_body_data_structures.py @@ -5,11 +5,11 @@ from elastica.utils import Tolerance from elastica.rigidbody.data_structures import _RigidRodSymplecticStepperMixin from elastica._rotations import _rotate -from elastica.timestepper import ( +from elastica.timestepper.symplectic_steppers import ( PEFRL, PositionVerlet, - integrate, ) +from elastica.timestepper import integrate def make_simple_system_with_positions_directors(start_position, start_director):