From 36cdc28607d1b3da6c3f0d4a8a92c2f2b0b298f2 Mon Sep 17 00:00:00 2001 From: Felix Soubelet <19598248+fsoubelet@users.noreply.github.com> Date: Sat, 1 Jul 2023 17:09:28 +0200 Subject: [PATCH] Pydantic 2.x compatibility (#106) --- docs/release.rst | 16 ++++++++++++++++ docs/releases/v1.3.2.rst | 14 ++++++++++++++ docs/releases/v1.4.0.rst | 13 +++++++++++++ pyhdtoolkit/models/beam.py | 8 ++++---- pyhdtoolkit/models/htc.py | 4 +++- pyhdtoolkit/utils/htc_monitor.py | 14 +++++++------- pyhdtoolkit/version.py | 2 +- pyproject.toml | 3 ++- .../inputs/utils/correct_cluster_summary.pkl | Bin 474 -> 495 bytes tests/inputs/utils/correct_user_tasks.pkl | Bin 79958 -> 80053 bytes 10 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 docs/releases/v1.3.2.rst create mode 100644 docs/releases/v1.4.0.rst diff --git a/docs/release.rst b/docs/release.rst index 0bced694..669b1b74 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -3,6 +3,22 @@ Release Notes The full list of releases can be found in the GitHub repository's `releases page `_. +Version 1.4.0 +------------- + +.. toctree:: + :maxdepth: 2 + + releases/v1.4.0 + +Version 1.3.2 +------------- + +.. toctree:: + :maxdepth: 2 + + releases/v1.3.2 + Version 1.3.1 ------------- diff --git a/docs/releases/v1.3.2.rst b/docs/releases/v1.3.2.rst new file mode 100644 index 00000000..0f52de1b --- /dev/null +++ b/docs/releases/v1.3.2.rst @@ -0,0 +1,14 @@ +.. _release_1.4.0: + +1.4.0 +----- + +Release `1.4.0`` is a small compatibility release with `pydantic v2.x`. + +Maintenance +~~~~~~~~~~~ + +* The version requirement on `pydantic` has been updated to `>=2.0`. +* Carious places in the `PyhDToolkit` codebase have been updated to be compatible with `pydantic v2.x`. + +See `v1.4.0 release notes on GitHub `_ and the `full changes since v1.3.2 `_. diff --git a/docs/releases/v1.4.0.rst b/docs/releases/v1.4.0.rst new file mode 100644 index 00000000..df3fa308 --- /dev/null +++ b/docs/releases/v1.4.0.rst @@ -0,0 +1,13 @@ +.. _release_1.3.1: + +1.3.2 +----- + +Release `1.3.2` is a small compatibility release. + +Maintenance +~~~~~~~~~~~ + +* The version requirement on `pydantic` has been constrained to `>=1.0,<2.0` to guarantee code bases compatibility. + +See `v1.3.2 release notes on GitHub `_ and the `full changes since v1.3.1 `_. diff --git a/pyhdtoolkit/models/beam.py b/pyhdtoolkit/models/beam.py index 9bf00203..2b1755b7 100644 --- a/pyhdtoolkit/models/beam.py +++ b/pyhdtoolkit/models/beam.py @@ -20,12 +20,12 @@ class BeamParameters(BaseModel): One can find a usage example in the :ref:`beam enveloppe demo `. """ - pc_GeV: Optional[float] # Beam momentum [GeV] + pc_GeV: Optional[float] = None # Beam momentum [GeV] E_0_GeV: Optional[float] = 0.9382720813 # Particle rest mass energy [GeV], defaults to that of a proton charge: Optional[float] = 1 # Particle charge in [e], defaults to that of a proton - en_x_m: Optional[float] # Horizontal normalized emittance [m] - en_y_m: Optional[float] # Vertical normalized emittance [m] - deltap_p: Optional[float] # Momentum deviation + en_x_m: Optional[float] = None # Horizontal normalized emittance [m] + en_y_m: Optional[float] = None # Vertical normalized emittance [m] + deltap_p: Optional[float] = None # Momentum deviation @property def B_rho_Tm(self) -> float: diff --git a/pyhdtoolkit/models/htc.py b/pyhdtoolkit/models/htc.py index 68a33276..13dc853d 100644 --- a/pyhdtoolkit/models/htc.py +++ b/pyhdtoolkit/models/htc.py @@ -9,7 +9,7 @@ from typing import Union from pendulum import DateTime -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict class BaseSummary(BaseModel): @@ -47,6 +47,8 @@ class HTCTaskSummary(BaseModel): Class to encompass and validate a specific job's line in the ``condor_q`` output. """ + # This is so pydantic accepts pendulum.DateTime as a validated type + model_config = ConfigDict(arbitrary_types_allowed=True) owner: str batch_name: int diff --git a/pyhdtoolkit/utils/htc_monitor.py b/pyhdtoolkit/utils/htc_monitor.py index 74e64de2..f66fd3c1 100644 --- a/pyhdtoolkit/utils/htc_monitor.py +++ b/pyhdtoolkit/utils/htc_monitor.py @@ -152,13 +152,13 @@ def _make_cluster_table(owner_name: str, cluster: ClusterSummary) -> Table: for i, source in enumerate(["query", "user", "cluster"]): table.add_row( "Query" if i == 0 else ("All Users" if i == 2 else owner_name), - str(cluster.dict()[source]["jobs"]), - str(cluster.dict()[source]["completed"]), - str(cluster.dict()[source]["running"]), - str(cluster.dict()[source]["idle"]), - str(cluster.dict()[source]["held"]), - str(cluster.dict()[source]["suspended"]), - str(cluster.dict()[source]["removed"]), + str(cluster.model_dump()[source]["jobs"]), + str(cluster.model_dump()[source]["completed"]), + str(cluster.model_dump()[source]["running"]), + str(cluster.model_dump()[source]["idle"]), + str(cluster.model_dump()[source]["held"]), + str(cluster.model_dump()[source]["suspended"]), + str(cluster.model_dump()[source]["removed"]), ) return table diff --git a/pyhdtoolkit/version.py b/pyhdtoolkit/version.py index f3c84850..6e65fd1a 100644 --- a/pyhdtoolkit/version.py +++ b/pyhdtoolkit/version.py @@ -1,4 +1,4 @@ -VERSION = "1.3.2" +VERSION = "1.4.0" def version_info() -> str: diff --git a/pyproject.toml b/pyproject.toml index 7cb85dd0..0e23ec2d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ classifiers = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", @@ -61,7 +62,7 @@ dependencies = [ "loguru < 1.0", "cpymad >= 1.9", "rich >= 12.0", - "pydantic >= 1.0,<2.0", + "pydantic >= 2.0", "pendulum >= 2.0", "optics-functions >= 0.1", ] diff --git a/tests/inputs/utils/correct_cluster_summary.pkl b/tests/inputs/utils/correct_cluster_summary.pkl index 1a22bc8eeca44ac5941b26524b2259474d5e875f..6a7ffa9f1ebc9cdf1c807b6928eb7015a8ba6ff2 100644 GIT binary patch delta 217 zcmcb`{GM64fo19wMg}nG5i6+7NGZwB&&kd#(aX(GNzEzN%P2{nsI@avC_cWRG9@vu zBr`cawW6dbF+P5ZUynGFXj*1!PD*inacT)rs(*?`27iV~hG>RBhG2$JhVXMg}nGku9jqNGZwB&&kd#(JL*<%qiB(C`pdb&Ckm$$uF9yywjO4 zK0YloH7BJwzBsicK7LC76pajl48aWk4ABhX43P|>2|Y6L@dZVhWr-!J@rflRMVU#Z zKvr2|PHAc}P($sM$)=2^Vwn0eB!E&)jMjSCrAm`ZGr+nyGo&)uGZZF()R!jd0RV)f BL%je1 diff --git a/tests/inputs/utils/correct_user_tasks.pkl b/tests/inputs/utils/correct_user_tasks.pkl index 5397667bd2c3b06bdabe6ccf0a4937769e1a174b..06b7e242c5e6b29fdb206eb3c4c3c51569a7e363 100644 GIT binary patch delta 813 zcmccifo1DQmWC;ef{b&v3Nbz~R`c5N%PGZscH5NF(xj3pK~s8IQu6asr}QwIPw8PU zD$SeH!(?bOWjePBqd}HXe0)J=N@89~W^#OLMM+U&eEbx@9&semw9M3;l;Zf})Doan z{}hc3?yM913=CQ4fJ6pY)_D-ck#!0rbOuOF=n+BETu_u*mROPsGIV;s38P&ONNW$H z(G;)-pgSz5fOTb^1?dMF=`9L2vWLgQ#KO|h!dTBh*T`T>Y1T!coL|-@AW4K9vaWzs zPuDkPv{M5+7HmAojXg|8hS;o}KEaex#F$)5RM9Olw18OB!)QDO?ycztW>mEUXf!Cq zdl-S1!Gdo31q$piGGg;)@Mg#m0i_y9EW-mX>nG4Eh%P4mWC;ef{eCXg%}?gOZt_TCY4MHn$p9PlAo74#hbl{xu`U6iZ|bM2@^(x z5We{Mw9M3;l;Zf})ROr4Dg9G4vQG0eFl2CNodi-@CqTp*5OEwN%8|h}p+_b@zMv?x zEU_dtKCz^vC^M-P$SO