diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84a6f51..7240492 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version - rev: v0.15.17 + rev: v0.17.0 hooks: # Run the linter - id: ruff-check diff --git a/examples/fodo.py b/examples/fodo.py index bf5ec43..e4689f1 100644 --- a/examples/fodo.py +++ b/examples/fodo.py @@ -1,9 +1,12 @@ -from pals import MagneticMultipoleParameters -from pals import Drift -from pals import Quadrupole -from pals import BeamLine -from pals import Lattice -from pals import load, store +from pals import ( + BeamLine, + Drift, + Lattice, + MagneticMultipoleParameters, + Quadrupole, + load, + store, +) def main(): diff --git a/src/pals/PALS.py b/src/pals/PALS.py index 0bc4a13..0c60251 100644 --- a/src/pals/PALS.py +++ b/src/pals/PALS.py @@ -1,12 +1,10 @@ -from pydantic import BaseModel, ConfigDict - -from pydantic import model_validator from typing import Self +from pydantic import BaseModel, ConfigDict, model_validator + +from .functions import load_file_to_dict, store_dict_to_file from .kinds import Lattice from .kinds.all_elements import get_all_elements_as_annotation -from .functions import load_file_to_dict, store_dict_to_file - Facility = list[get_all_elements_as_annotation()] diff --git a/src/pals/__init__.py b/src/pals/__init__.py index 30548f9..ce6b246 100644 --- a/src/pals/__init__.py +++ b/src/pals/__init__.py @@ -5,7 +5,7 @@ """ from .kinds import * # noqa -from .parameters import * # noqa +from .parameters import * from .PALS import Author, ExtensionLabels, PALSroot, load, store # noqa diff --git a/src/pals/kinds/BeamBeam.py b/src/pals/kinds/BeamBeam.py index ee71e1a..b5ad169 100644 --- a/src/pals/kinds/BeamBeam.py +++ b/src/pals/kinds/BeamBeam.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import BaseElement from ..parameters import BeamBeamParameters +from .mixin import BaseElement from .utils import under_construction diff --git a/src/pals/kinds/BeamLine.py b/src/pals/kinds/BeamLine.py index 731207e..5df5d9e 100644 --- a/src/pals/kinds/BeamLine.py +++ b/src/pals/kinds/BeamLine.py @@ -1,9 +1,10 @@ -from pydantic import model_validator from typing import Literal, Self +from pydantic import model_validator + +from ..functions import load_file_to_dict, store_dict_to_file from .all_elements import get_all_elements_as_annotation from .mixin import BaseElement -from ..functions import load_file_to_dict, store_dict_to_file class BeamLine(BaseElement): diff --git a/src/pals/kinds/Converter.py b/src/pals/kinds/Converter.py index 78aa93d..729c14d 100644 --- a/src/pals/kinds/Converter.py +++ b/src/pals/kinds/Converter.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import BaseElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import BaseElement from .utils import under_construction diff --git a/src/pals/kinds/CrabCavity.py b/src/pals/kinds/CrabCavity.py index 6c53dc9..d817d22 100644 --- a/src/pals/kinds/CrabCavity.py +++ b/src/pals/kinds/CrabCavity.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/EGun.py b/src/pals/kinds/EGun.py index d728a5c..4b0e3a4 100644 --- a/src/pals/kinds/EGun.py +++ b/src/pals/kinds/EGun.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/FloorShift.py b/src/pals/kinds/FloorShift.py index 589c9c6..d58f26e 100644 --- a/src/pals/kinds/FloorShift.py +++ b/src/pals/kinds/FloorShift.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import BaseElement from ..parameters import FloorShiftParameters +from .mixin import BaseElement class FloorShift(BaseElement): diff --git a/src/pals/kinds/Fork.py b/src/pals/kinds/Fork.py index fa7bb97..9a5c615 100644 --- a/src/pals/kinds/Fork.py +++ b/src/pals/kinds/Fork.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import BaseElement from ..parameters import ForkParameters +from .mixin import BaseElement from .utils import under_construction diff --git a/src/pals/kinds/Instrument.py b/src/pals/kinds/Instrument.py index 4d3f1f4..4e78056 100644 --- a/src/pals/kinds/Instrument.py +++ b/src/pals/kinds/Instrument.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Kicker.py b/src/pals/kinds/Kicker.py index aadfb47..d4f67c4 100644 --- a/src/pals/kinds/Kicker.py +++ b/src/pals/kinds/Kicker.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Lattice.py b/src/pals/kinds/Lattice.py index 61e7276..8740970 100644 --- a/src/pals/kinds/Lattice.py +++ b/src/pals/kinds/Lattice.py @@ -1,10 +1,11 @@ -from pydantic import model_validator from typing import Literal, Self +from pydantic import model_validator + +from ..functions import load_file_to_dict, store_dict_to_file from .BeamLine import BeamLine -from .PlaceholderName import PlaceholderName from .mixin import BaseElement -from ..functions import load_file_to_dict, store_dict_to_file +from .PlaceholderName import PlaceholderName class Lattice(BaseElement): @@ -39,8 +40,8 @@ def from_file(filename: str) -> Self: pals_dict = load_file_to_dict(filename) if isinstance(pals_dict, dict) and "PALS" in pals_dict: - from pals.PALS import PALSroot from pals.kinds.PlaceholderName import PlaceholderName + from pals.PALS import PALSroot pals_root = PALSroot(**pals_dict) facility = pals_root.facility or [] diff --git a/src/pals/kinds/Mask.py b/src/pals/kinds/Mask.py index bca82eb..2b287bd 100644 --- a/src/pals/kinds/Mask.py +++ b/src/pals/kinds/Mask.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Multipole.py b/src/pals/kinds/Multipole.py index 9c2f6fa..923f3c6 100644 --- a/src/pals/kinds/Multipole.py +++ b/src/pals/kinds/Multipole.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Octupole.py b/src/pals/kinds/Octupole.py index ef1685d..3354733 100644 --- a/src/pals/kinds/Octupole.py +++ b/src/pals/kinds/Octupole.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Patch.py b/src/pals/kinds/Patch.py index e6c0c3d..48082a6 100644 --- a/src/pals/kinds/Patch.py +++ b/src/pals/kinds/Patch.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import PatchParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/PlaceholderName.py b/src/pals/kinds/PlaceholderName.py index aef0ebf..6bc6919 100644 --- a/src/pals/kinds/PlaceholderName.py +++ b/src/pals/kinds/PlaceholderName.py @@ -1,6 +1,7 @@ -from pydantic import BaseModel, Field, model_serializer from typing import Annotated +from pydantic import BaseModel, Field, model_serializer + from .mixin import BaseElement diff --git a/src/pals/kinds/Quadrupole.py b/src/pals/kinds/Quadrupole.py index dd51b07..1b6c144 100644 --- a/src/pals/kinds/Quadrupole.py +++ b/src/pals/kinds/Quadrupole.py @@ -2,8 +2,8 @@ from pydantic import model_validator +from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters from .mixin import ThickElement -from ..parameters import MagneticMultipoleParameters, ElectricMultipoleParameters class Quadrupole(ThickElement): diff --git a/src/pals/kinds/RBend.py b/src/pals/kinds/RBend.py index 60b5011..1b790fd 100644 --- a/src/pals/kinds/RBend.py +++ b/src/pals/kinds/RBend.py @@ -1,11 +1,11 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ( BendParameters, ElectricMultipoleParameters, MagneticMultipoleParameters, ) +from .mixin import ThickElement class RBend(ThickElement): diff --git a/src/pals/kinds/RFCavity.py b/src/pals/kinds/RFCavity.py index 036c199..7dd40ca 100644 --- a/src/pals/kinds/RFCavity.py +++ b/src/pals/kinds/RFCavity.py @@ -1,12 +1,12 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ( - RFParameters, - SolenoidParameters, ElectricMultipoleParameters, MagneticMultipoleParameters, + RFParameters, + SolenoidParameters, ) +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/SBend.py b/src/pals/kinds/SBend.py index da68191..52783a1 100644 --- a/src/pals/kinds/SBend.py +++ b/src/pals/kinds/SBend.py @@ -1,11 +1,11 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ( BendParameters, ElectricMultipoleParameters, MagneticMultipoleParameters, ) +from .mixin import ThickElement class SBend(ThickElement): diff --git a/src/pals/kinds/Sextupole.py b/src/pals/kinds/Sextupole.py index 37aa7cc..1cb1554 100644 --- a/src/pals/kinds/Sextupole.py +++ b/src/pals/kinds/Sextupole.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Solenoid.py b/src/pals/kinds/Solenoid.py index b165fa3..8d63be0 100644 --- a/src/pals/kinds/Solenoid.py +++ b/src/pals/kinds/Solenoid.py @@ -1,11 +1,11 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ( - SolenoidParameters, ElectricMultipoleParameters, MagneticMultipoleParameters, + SolenoidParameters, ) +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/Wiggler.py b/src/pals/kinds/Wiggler.py index 5f151b8..0133beb 100644 --- a/src/pals/kinds/Wiggler.py +++ b/src/pals/kinds/Wiggler.py @@ -1,7 +1,7 @@ from typing import Literal -from .mixin import ThickElement from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters +from .mixin import ThickElement from .utils import under_construction diff --git a/src/pals/kinds/__init__.py b/src/pals/kinds/__init__.py index f0c682d..2151f29 100644 --- a/src/pals/kinds/__init__.py +++ b/src/pals/kinds/__init__.py @@ -4,8 +4,7 @@ from .ACKicker import ACKicker # noqa: F401 from .BeamBeam import BeamBeam # noqa: F401 -from .BeamLine import BeamLine # noqa: F401 -from .Lattice import Lattice # noqa: F401 +from .BeamLine import BeamLine from .BeginningEle import BeginningEle # noqa: F401 from .Converter import Converter # noqa: F401 from .CrabCavity import CrabCavity # noqa: F401 @@ -19,6 +18,7 @@ from .Girder import Girder # noqa: F401 from .Instrument import Instrument # noqa: F401 from .Kicker import Kicker # noqa: F401 +from .Lattice import Lattice from .Marker import Marker # noqa: F401 from .Mask import Mask # noqa: F401 from .Match import Match # noqa: F401 @@ -34,10 +34,9 @@ from .Sextupole import Sextupole # noqa: F401 from .Solenoid import Solenoid # noqa: F401 from .Taylor import Taylor # noqa: F401 -from .UnionEle import UnionEle # noqa: F401 +from .UnionEle import UnionEle from .Wiggler import Wiggler # noqa: F401 - # Rebuild pydantic models that depend on other classes UnionEle.model_rebuild() BeamLine.model_rebuild() diff --git a/src/pals/kinds/all_elements.py b/src/pals/kinds/all_elements.py index 29acd12..56f9256 100644 --- a/src/pals/kinds/all_elements.py +++ b/src/pals/kinds/all_elements.py @@ -13,7 +13,6 @@ from .CrabCavity import CrabCavity from .Drift import Drift from .EGun import EGun -from .PlaceholderName import PlaceholderName from .Feedback import Feedback from .Fiducial import Fiducial from .FloorShift import FloorShift @@ -29,6 +28,7 @@ from .NullEle import NullEle from .Octupole import Octupole from .Patch import Patch +from .PlaceholderName import PlaceholderName from .Quadrupole import Quadrupole from .RBend import RBend from .RFCavity import RFCavity diff --git a/src/pals/kinds/mixin/BaseElement.py b/src/pals/kinds/mixin/BaseElement.py index 4f07653..de46a4e 100644 --- a/src/pals/kinds/mixin/BaseElement.py +++ b/src/pals/kinds/mixin/BaseElement.py @@ -1,13 +1,14 @@ -from pydantic import BaseModel from typing import Literal +from pydantic import BaseModel + from pals.parameters import ( ApertureParameters, BodyShiftParameters, FloorParameters, MetaParameters, - ReferenceParameters, ReferenceChangeParameters, + ReferenceParameters, TrackingParameters, ) diff --git a/src/pals/kinds/mixin/ThickElement.py b/src/pals/kinds/mixin/ThickElement.py index e8dfffb..2bcf977 100644 --- a/src/pals/kinds/mixin/ThickElement.py +++ b/src/pals/kinds/mixin/ThickElement.py @@ -1,4 +1,5 @@ from typing import Annotated, Literal + from annotated_types import Ge from . import BaseElement diff --git a/src/pals/kinds/mixin/all_element_mixin.py b/src/pals/kinds/mixin/all_element_mixin.py index 3b40795..6da1e22 100644 --- a/src/pals/kinds/mixin/all_element_mixin.py +++ b/src/pals/kinds/mixin/all_element_mixin.py @@ -4,8 +4,8 @@ BeamLine and UnionEle classes. """ -from . import BaseElement from ..PlaceholderName import PlaceholderName +from . import BaseElement def unpack_element_items(items: list, container_type: str) -> list: diff --git a/src/pals/parameters/ApertureParameters.py b/src/pals/parameters/ApertureParameters.py index 3db501d..01c7876 100644 --- a/src/pals/parameters/ApertureParameters.py +++ b/src/pals/parameters/ApertureParameters.py @@ -1,5 +1,6 @@ -from annotated_types import Ge from typing import Annotated, Literal + +from annotated_types import Ge from pydantic import BaseModel, Field, field_validator diff --git a/src/pals/parameters/ElectricMultipoleParameters.py b/src/pals/parameters/ElectricMultipoleParameters.py index af16624..a7f8dd5 100644 --- a/src/pals/parameters/ElectricMultipoleParameters.py +++ b/src/pals/parameters/ElectricMultipoleParameters.py @@ -1,6 +1,7 @@ -from pydantic import BaseModel, ConfigDict, model_validator from typing import Any +from pydantic import BaseModel, ConfigDict, model_validator + # Valid parameter prefixes, their expected format and description _PARAMETER_PREFIXES = { "tilt": ("tiltN", "Tilt"), diff --git a/src/pals/parameters/ForkParameters.py b/src/pals/parameters/ForkParameters.py index 0738943..e47e6fa 100644 --- a/src/pals/parameters/ForkParameters.py +++ b/src/pals/parameters/ForkParameters.py @@ -1,4 +1,5 @@ from typing import Literal + from pydantic import BaseModel diff --git a/src/pals/parameters/MagneticMultipoleParameters.py b/src/pals/parameters/MagneticMultipoleParameters.py index 7c4b176..0c3bdc1 100644 --- a/src/pals/parameters/MagneticMultipoleParameters.py +++ b/src/pals/parameters/MagneticMultipoleParameters.py @@ -1,6 +1,7 @@ -from pydantic import BaseModel, ConfigDict, model_validator from typing import Any +from pydantic import BaseModel, ConfigDict, model_validator + # Valid parameter prefixes, their expected format and description _PARAMETER_PREFIXES = { "tilt": ("tiltN", "Tilt"), diff --git a/src/pals/parameters/PatchParameters.py b/src/pals/parameters/PatchParameters.py index c9e946e..5ff2ffd 100644 --- a/src/pals/parameters/PatchParameters.py +++ b/src/pals/parameters/PatchParameters.py @@ -1,4 +1,5 @@ from typing import Literal + from pydantic import BaseModel diff --git a/src/pals/parameters/RFParameters.py b/src/pals/parameters/RFParameters.py index d2ae54b..01a6c10 100644 --- a/src/pals/parameters/RFParameters.py +++ b/src/pals/parameters/RFParameters.py @@ -1,6 +1,6 @@ -from annotated_types import Ge from typing import Annotated, Literal +from annotated_types import Ge from pydantic import BaseModel diff --git a/src/pals/parameters/ReferenceParameters.py b/src/pals/parameters/ReferenceParameters.py index c1e84a3..2a2afba 100644 --- a/src/pals/parameters/ReferenceParameters.py +++ b/src/pals/parameters/ReferenceParameters.py @@ -1,4 +1,5 @@ from typing import Literal + from pydantic import BaseModel