Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
15 changes: 9 additions & 6 deletions examples/fodo.py
Original file line number Diff line number Diff line change
@@ -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():
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@ Issues = "https://github.com/campa-consortium/pals-python/issues"

[tool.setuptools.packages.find]
where = ["src"]

[tool.ruff.lint]
ignore = ["N999"]
8 changes: 3 additions & 5 deletions src/pals/PALS.py
Original file line number Diff line number Diff line change
@@ -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()]

Expand Down
7 changes: 3 additions & 4 deletions src/pals/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
simpler import statements like `from pals import Drift`.
"""

from .kinds import * # noqa
from .parameters import * # noqa
from .PALS import Author, ExtensionLabels, PALSroot, load, store # noqa

from .kinds import *
from .PALS import Author, ExtensionLabels, PALSroot, load, store # noqa: F401
from .parameters import *

# Rebuild pydantic models that depend on other classes
PALSroot.model_rebuild()
12 changes: 6 additions & 6 deletions src/pals/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ def load_file_to_dict(

# Attempt to strip two levels of file extensions to determine the schema.
# Examples: fodo.pals.yaml, fodo.pals.json, ...
file_noext, extension, file_noext_noext, extension_inner = inspect_file_extensions(
filename, sub_level=sub_level
).values()
_file_noext, extension, _file_noext_noext, _extension_inner = (
inspect_file_extensions(filename, sub_level=sub_level).values()
)

# examples: fodo.pals.yaml, fodo.pals.json
with open(filename, "r") as file:
Expand Down Expand Up @@ -178,9 +178,9 @@ def _numpy_to_native(obj):


def store_dict_to_file(filename: str, pals_dict: dict):
file_noext, extension, file_noext_noext, extension_inner = inspect_file_extensions(
filename
).values()
_file_noext, extension, _file_noext_noext, _extension_inner = (
inspect_file_extensions(filename).values()
)

# examples: fodo.pals.yaml, fodo.pals.json
if extension == ".json":
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/BeamBeam.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
5 changes: 3 additions & 2 deletions src/pals/kinds/BeamLine.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Converter.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/CrabCavity.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/EGun.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/FloorShift.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Literal

from .mixin import BaseElement
from ..parameters import FloorShiftParameters
from .mixin import BaseElement


class FloorShift(BaseElement):
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Fork.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Instrument.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Kicker.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
9 changes: 5 additions & 4 deletions src/pals/kinds/Lattice.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down Expand Up @@ -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 []
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Mask.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Multipole.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Octupole.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Patch.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
3 changes: 2 additions & 1 deletion src/pals/kinds/PlaceholderName.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Quadrupole.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/RBend.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
6 changes: 3 additions & 3 deletions src/pals/kinds/RFCavity.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/SBend.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Sextupole.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
4 changes: 2 additions & 2 deletions src/pals/kinds/Solenoid.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
5 changes: 3 additions & 2 deletions src/pals/kinds/UnionEle.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from pydantic import model_validator # noqa
from typing import Literal

from pydantic import Field, model_validator

from .all_elements import get_all_elements_as_annotation
from .mixin import BaseElement

Expand All @@ -12,7 +13,7 @@ class UnionEle(BaseElement):
kind: Literal["UnionEle"] = "UnionEle"

# Elements in the union - uses the same union type as BeamLine
elements: list[get_all_elements_as_annotation()] = []
elements: list[get_all_elements_as_annotation()] = Field(default_factory=list)

@model_validator(mode="before")
@classmethod
Expand Down
2 changes: 1 addition & 1 deletion src/pals/kinds/Wiggler.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
7 changes: 3 additions & 4 deletions src/pals/kinds/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions src/pals/kinds/all_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -91,4 +91,4 @@ def get_all_elements_as_annotation(extra_types: tuple | None = None):
"""
types = get_all_element_types(extra_types) + (PlaceholderName,)
# We can't use discriminator with PlaceholderName in the union since it has no 'kind' field
return Union[types]
return Union[types] # noqa: UP007
Loading
Loading