shepherd-core 2025.6.2__py3-none-any.whl → 2025.6.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,6 +48,24 @@ yaml.add_representer(IPv4Address, generic2str, SafeDumper)
48
48
  yaml.add_representer(UUID, generic2str, SafeDumper)
49
49
 
50
50
 
51
+ def path_to_str(old: dict) -> dict:
52
+ r"""Allow platform-independent pickling of ShpModel.
53
+
54
+ Helper Fn
55
+ Posix-Paths (/xyz/abc) in WindowsPath gets converted to \\xyz\\abc when exported
56
+ intended usage: pickle.dump(path_to_str(model.model_dump()))
57
+ """
58
+ new: dict = {}
59
+ for key, value in old.items():
60
+ if isinstance(value, Path):
61
+ new[key] = value.as_posix().replace("\\", "/")
62
+ elif isinstance(value, dict):
63
+ new[key] = path_to_str(value)
64
+ else:
65
+ new[key] = value
66
+ return new
67
+
68
+
51
69
  class ShpModel(BaseModel):
52
70
  """Pre-configured Pydantic Base-Model (specifically for shepherd).
53
71
 
@@ -135,21 +153,21 @@ class ShpModel(BaseModel):
135
153
  pickle: uses pickle to serialize data, on BBB >100x faster for large files
136
154
  comment: documentation.
137
155
  """
138
- model_dict = self.model_dump(exclude_unset=minimal)
139
156
  model_wrap = Wrapper(
140
157
  datatype=type(self).__name__,
141
158
  comment=comment,
142
159
  created=local_now(),
143
- parameters=model_dict,
160
+ parameters=self.model_dump(exclude_unset=minimal),
144
161
  )
162
+ model_dict = model_wrap.model_dump(exclude_unset=minimal, exclude_defaults=minimal)
145
163
  if use_pickle:
146
- model_serial = pickle.dumps(model_dict, fix_imports=True)
164
+ model_serial = pickle.dumps(path_to_str(model_dict))
147
165
  model_path = Path(path).resolve().with_suffix(".pickle")
148
166
  else:
149
167
  # TODO: x64 windows supports CSafeLoader/dumper,
150
168
  # there are examples that replace load if avail
151
169
  model_serial = yaml.safe_dump(
152
- model_wrap.model_dump(exclude_unset=minimal, exclude_defaults=minimal),
170
+ model_dict,
153
171
  default_flow_style=False,
154
172
  sort_keys=False,
155
173
  )
@@ -170,13 +188,13 @@ class ShpModel(BaseModel):
170
188
  raise FileNotFoundError
171
189
  if path.suffix.lower() == ".pickle":
172
190
  with Path(path).open("rb") as shp_file:
173
- shp_wrap = pickle.load(shp_file, fix_imports=True) # noqa: S301
191
+ shp_dict = pickle.load(shp_file) # noqa: S301
174
192
  else:
175
193
  with Path(path).open() as shp_file:
176
194
  shp_dict = yaml.safe_load(shp_file)
177
- shp_wrap = Wrapper(**shp_dict)
195
+ shp_wrap = Wrapper(**shp_dict)
178
196
  if shp_wrap.datatype != cls.__name__:
179
- raise ValueError("Model in file does not match the requirement")
197
+ raise ValueError("Model in file does not match the actual Class")
180
198
  return cls(**shp_wrap.parameters)
181
199
 
182
200
  def get_hash(self) -> str:
@@ -47,7 +47,8 @@ def prepare_task(config: Union[ShpModel, Path, str], observer: Optional[str] = N
47
47
 
48
48
  if isinstance(config, Path) and config.exists() and config.suffix.lower() == ".pickle":
49
49
  with config.resolve().open("rb") as shp_file:
50
- shp_wrap = pickle.load(shp_file, fix_imports=True) # noqa: S301
50
+ shp_dict = pickle.load(shp_file) # noqa: S301
51
+ shp_wrap = Wrapper(**shp_dict)
51
52
  elif isinstance(config, Path) and config.exists() and config.suffix.lower() == ".yaml":
52
53
  with config.resolve().open() as shp_file:
53
54
  shp_dict = yaml.safe_load(shp_file)
shepherd_core/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Separated string avoids circular imports."""
2
2
 
3
- version: str = "2025.06.2"
3
+ version: str = "2025.06.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shepherd_core
3
- Version: 2025.6.2
3
+ Version: 2025.6.3
4
4
  Summary: Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed
5
5
  Author-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
6
6
  Maintainer-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
@@ -4,7 +4,7 @@ shepherd_core/commons.py,sha256=_phovuhCgLmO5gcazQ5hyykUPc907dyK9KpY2lUtoIM,205
4
4
  shepherd_core/config.py,sha256=YegFEXuBUBnbq5mb67em8ozEnSkEQSPXjqHlKA2HXCQ,967
5
5
  shepherd_core/logger.py,sha256=se8uBmlOKhU2ODs_cx1L0Nxkj4n7nlk67BpCFYgcHns,1803
6
6
  shepherd_core/reader.py,sha256=oTh42tCDyLRGxO505v3etBPpy9BhqfOrWeVfn0SXeJQ,29480
7
- shepherd_core/version.py,sha256=FEJD7Y6nIjgA1GntHr4Eta4zDjWL0iegU8jCdhrGybA,76
7
+ shepherd_core/version.py,sha256=vYW_zqQqbw9dtRcdMGPw5ZffUDJau2hQDsEwAT2IvCA,76
8
8
  shepherd_core/writer.py,sha256=VRrM7cIv3RcX3JlYs4xq5DUK_3kD-6YH4Ie96tQ6Hcw,14591
9
9
  shepherd_core/data_models/__init__.py,sha256=jBsk2RpD5Gw5GNe1gql9YrWD-7Uv7F2jwRRx-CHdceQ,1909
10
10
  shepherd_core/data_models/readme.md,sha256=DHPVmkWqDksWomRHRTVWVHy9wXF9oMJrITgKs4Pnz2g,2494
@@ -13,7 +13,7 @@ shepherd_core/data_models/base/__init__.py,sha256=PSJ6acWViqBm0Eiom8DIgKfFVrp5lz
13
13
  shepherd_core/data_models/base/cal_measurement.py,sha256=c-vjACNxsQY8LU2Msw0COrsTY-8pToJ5ZWkOztJ9tVY,3380
14
14
  shepherd_core/data_models/base/calibration.py,sha256=25ls5q9d5ko5X2DwbNWFuUZIji2Zwh04l_UxdRt-AFk,10787
15
15
  shepherd_core/data_models/base/content.py,sha256=e8-UWjF7QW4mYMqnDSnbhZTY3ODxGyx50A_K4SgDnNs,2098
16
- shepherd_core/data_models/base/shepherd.py,sha256=m32eOpN_oGGVL0bJhN8IEQTQ04ZoQQoiTdRu64mtHLg,6871
16
+ shepherd_core/data_models/base/shepherd.py,sha256=JOrSPweiMDR8Ry3X1nqf0PIUijpSMldsrmk7zjtRAf8,7400
17
17
  shepherd_core/data_models/base/timezone.py,sha256=2T6E46hJ1DAvmqKfu6uIgCK3RSoAKjGXRyzYNaqKyjY,665
18
18
  shepherd_core/data_models/base/wrapper.py,sha256=Dkvosu2gcJOUgDHhyRUmIsuWdtmtICIUmKmRU9ChtEM,784
19
19
  shepherd_core/data_models/content/__init__.py,sha256=69aiNG0h5t1OF7HsLg_ke5eaQKsKyMK8o6Kfaby5vlY,525
@@ -30,7 +30,7 @@ shepherd_core/data_models/experiment/__init__.py,sha256=lorsx0M-JWPIrt_UZfexsLwa
30
30
  shepherd_core/data_models/experiment/experiment.py,sha256=X304nrNMv69LLIT2k9oiM7swgpf3uFr91a95vipZSow,4701
31
31
  shepherd_core/data_models/experiment/observer_features.py,sha256=dxbdmAbh8a-fz2_ppTNWEnIDbzSskxvAayXNI2LCJfs,9058
32
32
  shepherd_core/data_models/experiment/target_config.py,sha256=qI72kj5_rpJXU3A2_TmfoN9vATOZPFjphpXLZfc9riM,4260
33
- shepherd_core/data_models/task/__init__.py,sha256=GsWyipHYbE7vg0G4Lvpuh_HpoJMsqh75F2YJhylMIUc,3673
33
+ shepherd_core/data_models/task/__init__.py,sha256=IeXlmnP0NQpW9r_EuEW0f55-pCXtinMqosEvmvom8Uw,3694
34
34
  shepherd_core/data_models/task/emulation.py,sha256=7mOpB75qwunTT_KWCteLmrQwjbPVomcbm3LqCsrDiy8,7897
35
35
  shepherd_core/data_models/task/firmware_mod.py,sha256=wWfqWKvcbCXwepVXYYJhmdplDE97xsAE7ZnGFF3Pvm8,3484
36
36
  shepherd_core/data_models/task/harvest.py,sha256=OJKupuZ4yBuVl-WspuXjD6p-dvmwbfRwp4PsAUVeP1w,3813
@@ -76,8 +76,8 @@ shepherd_core/vsource/virtual_harvester_model.py,sha256=K9RnAHCz1ibdYMte5l_U7vrY
76
76
  shepherd_core/vsource/virtual_harvester_simulation.py,sha256=eK9uCn-j_8xSTa7BQhG879ep0oZDeatlnF31LeWEDiM,2547
77
77
  shepherd_core/vsource/virtual_source_model.py,sha256=-8RwBrkIdO0g4zpo7XHnqv8F_qNh_qf5hxEUJoIuAmg,3164
78
78
  shepherd_core/vsource/virtual_source_simulation.py,sha256=qfe4dQMaifpF54lCb_Vv_7imebdhqeKIhXj5xLPtWMM,5267
79
- shepherd_core-2025.6.2.dist-info/METADATA,sha256=WZcUnd9242FtTdD7Md5nnJEWYWlBP8bj5DeqVlizMFg,7778
80
- shepherd_core-2025.6.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
81
- shepherd_core-2025.6.2.dist-info/top_level.txt,sha256=wy-t7HRBrKARZxa-Y8_j8d49oVHnulh-95K9ikxVhew,14
82
- shepherd_core-2025.6.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
83
- shepherd_core-2025.6.2.dist-info/RECORD,,
79
+ shepherd_core-2025.6.3.dist-info/METADATA,sha256=0-DmTMOVOu4h1vnbCY4XCl7ghEteZNGoR3KAUICJxLA,7778
80
+ shepherd_core-2025.6.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
81
+ shepherd_core-2025.6.3.dist-info/top_level.txt,sha256=wy-t7HRBrKARZxa-Y8_j8d49oVHnulh-95K9ikxVhew,14
82
+ shepherd_core-2025.6.3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
83
+ shepherd_core-2025.6.3.dist-info/RECORD,,