Skip to content

Commit 4eae795

Browse files
authored
Modernize: Python 3.11+ (#65)
1 parent ef707cc commit 4eae795

29 files changed

Lines changed: 90 additions & 90 deletions

.github/workflows/tests.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,20 @@ concurrency:
1010
group: ${{ github.ref }}-${{ github.head_ref }}-pals-python
1111
cancel-in-progress: true
1212

13+
permissions:
14+
contents: read # access to check out code and install dependencies
15+
1316
jobs:
1417
tests:
1518
name: tests
1619
runs-on: ubuntu-latest
1720
strategy:
1821
matrix:
19-
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
22+
python-version: ["3.11", "3.12", "3.13", "3.14"]
2023
steps:
21-
- uses: actions/checkout@v4
24+
- uses: actions/checkout@v6
2225
- name: Set up Python
23-
uses: actions/setup-python@v5
26+
uses: actions/setup-python@v6
2427
with:
2528
python-version: ${{ matrix.python-version }}
2629
- name: Install

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dependencies = [
1010
"pyyaml",
1111
"toml",
1212
]
13-
requires-python = ">=3.10"
13+
requires-python = ">=3.11"
1414
authors = [
1515
{ name="Axel Huebl", email="axelhuebl@lbl.gov" },
1616
{ name="Edoardo Zoni", email="ezoni@lbl.gov" },

src/pals/PALS.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
from pydantic import BaseModel
22

33
from pydantic import model_validator
4-
from typing import List, Optional
4+
from typing import Self
55

66
from .kinds import Lattice
77
from .kinds.all_elements import get_all_elements_as_annotation
88
from .functions import load_file_to_dict, store_dict_to_file
99

1010

11-
Facility = List[get_all_elements_as_annotation()]
11+
Facility = list[get_all_elements_as_annotation()]
1212

1313

1414
class PALSroot(BaseModel):
1515
"""Represent the roo PALS structure"""
1616

17-
version: Optional[str] = None
17+
version: str | None = None
1818

1919
facility: Facility
2020

@@ -37,7 +37,7 @@ def model_dump(self, *args, **kwargs):
3737
return data
3838

3939
@staticmethod
40-
def from_file(filename: str) -> "PALSroot":
40+
def from_file(filename: str) -> Self:
4141
"""Load a facility from a text file"""
4242
pals_dict = load_file_to_dict(filename)
4343
return PALSroot(**pals_dict)

src/pals/kinds/BeamBeam.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import BaseElement
44
from ..parameters import BeamBeamParameters
@@ -13,4 +13,4 @@ class BeamBeam(BaseElement):
1313
kind: Literal["BeamBeam"] = "BeamBeam"
1414

1515
# Beam-beam-specific parameters
16-
BeamBeamP: Optional[BeamBeamParameters] = None
16+
BeamBeamP: BeamBeamParameters | None = None

src/pals/kinds/BeamLine.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pydantic import model_validator
2-
from typing import List, Literal
2+
from typing import Literal, Self
33

44
from .all_elements import get_all_elements_as_annotation
55
from .mixin import BaseElement
@@ -11,7 +11,7 @@ class BeamLine(BaseElement):
1111

1212
kind: Literal["BeamLine"] = "BeamLine"
1313

14-
line: List[get_all_elements_as_annotation()]
14+
line: list[get_all_elements_as_annotation()]
1515

1616
@model_validator(mode="before")
1717
@classmethod
@@ -28,7 +28,7 @@ def model_dump(self, *args, **kwargs):
2828
return dump_element_list(self, "line", *args, **kwargs)
2929

3030
@staticmethod
31-
def from_file(filename: str) -> "BeamLine":
31+
def from_file(filename: str) -> Self:
3232
"""Load a BeamLine from a text file"""
3333
pals_dict = load_file_to_dict(filename)
3434
return BeamLine(**pals_dict)

src/pals/kinds/Converter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import BaseElement
44
from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters
@@ -13,5 +13,5 @@ class Converter(BaseElement):
1313
kind: Literal["Converter"] = "Converter"
1414

1515
# Converter-specific parameters
16-
ElectricMultipoleP: Optional[ElectricMultipoleParameters] = None
17-
MagneticMultipoleP: Optional[MagneticMultipoleParameters] = None
16+
ElectricMultipoleP: ElectricMultipoleParameters | None = None
17+
MagneticMultipoleP: MagneticMultipoleParameters | None = None

src/pals/kinds/CrabCavity.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import ThickElement
44
from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters
@@ -13,5 +13,5 @@ class CrabCavity(ThickElement):
1313
kind: Literal["CrabCavity"] = "CrabCavity"
1414

1515
# CrabCavity-specific parameters
16-
ElectricMultipoleP: Optional[ElectricMultipoleParameters] = None
17-
MagneticMultipoleP: Optional[MagneticMultipoleParameters] = None
16+
ElectricMultipoleP: ElectricMultipoleParameters | None = None
17+
MagneticMultipoleP: MagneticMultipoleParameters | None = None

src/pals/kinds/EGun.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import ThickElement
44
from ..parameters import ElectricMultipoleParameters, MagneticMultipoleParameters
@@ -13,5 +13,5 @@ class EGun(ThickElement):
1313
kind: Literal["EGun"] = "EGun"
1414

1515
# EGun-specific parameters
16-
ElectricMultipoleP: Optional[ElectricMultipoleParameters] = None
17-
MagneticMultipoleP: Optional[MagneticMultipoleParameters] = None
16+
ElectricMultipoleP: ElectricMultipoleParameters | None = None
17+
MagneticMultipoleP: MagneticMultipoleParameters | None = None

src/pals/kinds/FloorShift.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import BaseElement
44
from ..parameters import FloorShiftParameters
@@ -11,4 +11,4 @@ class FloorShift(BaseElement):
1111
kind: Literal["FloorShift"] = "FloorShift"
1212

1313
# Floor shift-specific parameters
14-
FloorShiftP: Optional[FloorShiftParameters] = None
14+
FloorShiftP: FloorShiftParameters | None = None

src/pals/kinds/Fork.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Optional
1+
from typing import Literal
22

33
from .mixin import BaseElement
44
from ..parameters import ForkParameters
@@ -13,4 +13,4 @@ class Fork(BaseElement):
1313
kind: Literal["Fork"] = "Fork"
1414

1515
# Fork-specific parameters
16-
ForkP: Optional[ForkParameters] = None
16+
ForkP: ForkParameters | None = None

0 commit comments

Comments
 (0)