shepherd-core 2025.6.2__tar.gz → 2025.6.3__tar.gz

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.
Files changed (147) hide show
  1. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/PKG-INFO +1 -1
  2. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/shepherd.py +25 -7
  3. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/__init__.py +2 -1
  4. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/version.py +1 -1
  5. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/PKG-INFO +1 -1
  6. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/README.md +0 -0
  7. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/eenv_generator.py +0 -0
  8. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/experiment_from_yaml.yaml +0 -0
  9. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/experiment_generic_var1.py +0 -0
  10. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/experiment_generic_var2.py +0 -0
  11. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/experiment_models.py +0 -0
  12. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/firmware_model.py +0 -0
  13. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/firmware_modification.py +0 -0
  14. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/inventory.py +0 -0
  15. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/simulate_vharvester.py +0 -0
  16. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/simulate_vsource.py +0 -0
  17. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/uart_decode_waveform.py +0 -0
  18. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/uart_raw2.csv +0 -0
  19. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/examples/vsource_debug_sim.py +0 -0
  20. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/pyproject.toml +0 -0
  21. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/setup.cfg +0 -0
  22. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/__init__.py +0 -0
  23. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/calibration_hw_def.py +0 -0
  24. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/commons.py +0 -0
  25. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/config.py +0 -0
  26. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/__init__.py +0 -0
  27. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/__init__.py +0 -0
  28. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/cal_measurement.py +0 -0
  29. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/calibration.py +0 -0
  30. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/content.py +0 -0
  31. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/timezone.py +0 -0
  32. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/base/wrapper.py +0 -0
  33. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/__init__.py +0 -0
  34. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/_external_fixtures.yaml +0 -0
  35. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/energy_environment.py +0 -0
  36. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/energy_environment_fixture.yaml +0 -0
  37. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/firmware.py +0 -0
  38. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/firmware_datatype.py +0 -0
  39. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/virtual_harvester.py +0 -0
  40. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/virtual_harvester_fixture.yaml +0 -0
  41. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/virtual_source.py +0 -0
  42. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/content/virtual_source_fixture.yaml +0 -0
  43. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/experiment/__init__.py +0 -0
  44. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/experiment/experiment.py +0 -0
  45. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/experiment/observer_features.py +0 -0
  46. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/experiment/target_config.py +0 -0
  47. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/readme.md +0 -0
  48. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/emulation.py +0 -0
  49. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/firmware_mod.py +0 -0
  50. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/harvest.py +0 -0
  51. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/helper_paths.py +0 -0
  52. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/observer_tasks.py +0 -0
  53. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/programming.py +0 -0
  54. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/task/testbed_tasks.py +0 -0
  55. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/__init__.py +0 -0
  56. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/cape.py +0 -0
  57. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/cape_fixture.yaml +0 -0
  58. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/gpio.py +0 -0
  59. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/gpio_fixture.yaml +0 -0
  60. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/mcu.py +0 -0
  61. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/mcu_fixture.yaml +0 -0
  62. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/observer.py +0 -0
  63. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/observer_fixture.yaml +0 -0
  64. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/target.py +0 -0
  65. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/target_fixture.old1 +0 -0
  66. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/target_fixture.yaml +0 -0
  67. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/testbed.py +0 -0
  68. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/testbed/testbed_fixture.yaml +0 -0
  69. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/data_models/virtual_source_doc.txt +0 -0
  70. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/decoder_waveform/__init__.py +0 -0
  71. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/decoder_waveform/uart.py +0 -0
  72. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/fw_tools/__init__.py +0 -0
  73. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/fw_tools/converter.py +0 -0
  74. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/fw_tools/converter_elf.py +0 -0
  75. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/fw_tools/patcher.py +0 -0
  76. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/fw_tools/validation.py +0 -0
  77. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/inventory/__init__.py +0 -0
  78. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/inventory/python.py +0 -0
  79. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/inventory/system.py +0 -0
  80. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/inventory/target.py +0 -0
  81. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/logger.py +0 -0
  82. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/reader.py +0 -0
  83. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/__init__.py +0 -0
  84. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/cache_path.py +0 -0
  85. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/client_abc_fix.py +0 -0
  86. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/client_web.py +0 -0
  87. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/fixtures.py +0 -0
  88. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/testbed_client/user_model.py +0 -0
  89. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/__init__.py +0 -0
  90. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/target_model.py +0 -0
  91. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/virtual_converter_model.py +0 -0
  92. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/virtual_harvester_model.py +0 -0
  93. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/virtual_harvester_simulation.py +0 -0
  94. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/virtual_source_model.py +0 -0
  95. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/vsource/virtual_source_simulation.py +0 -0
  96. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core/writer.py +0 -0
  97. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/SOURCES.txt +0 -0
  98. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/dependency_links.txt +0 -0
  99. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/requires.txt +0 -0
  100. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/top_level.txt +0 -0
  101. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/shepherd_core.egg-info/zip-safe +0 -0
  102. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/__init__.py +0 -0
  103. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/conftest.py +0 -0
  104. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/__init__.py +0 -0
  105. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/conftest.py +0 -0
  106. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_cal_data.yaml +0 -0
  107. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_cal_data_faulty.yaml +0 -0
  108. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_cal_meas.yaml +0 -0
  109. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_cal_meas_faulty1.yaml +0 -0
  110. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_cal_meas_faulty2.yaml +0 -0
  111. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_emulator.yaml +0 -0
  112. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_experiment.yaml +0 -0
  113. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_experiment_alternative.yaml +0 -0
  114. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_harvester.yaml +0 -0
  115. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_testbed.yaml +0 -0
  116. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/example_config_virtsource.yaml +0 -0
  117. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_base_models.py +0 -0
  118. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_content_fixtures.py +0 -0
  119. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_content_models.py +0 -0
  120. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_examples.py +0 -0
  121. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_experiment_models.py +0 -0
  122. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_task_generation.py +0 -0
  123. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_task_models.py +0 -0
  124. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_testbed_fixtures.py +0 -0
  125. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/data_models/test_testbed_models.py +0 -0
  126. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/decoder_waveform/__init__.py +0 -0
  127. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/decoder_waveform/test_decoder.py +0 -0
  128. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/__init__.py +0 -0
  129. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/build_msp.elf +0 -0
  130. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/build_nrf.elf +0 -0
  131. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/conftest.py +0 -0
  132. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/test_converter.py +0 -0
  133. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/test_patcher.py +0 -0
  134. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/fw_tools/test_validation.py +0 -0
  135. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/inventory/__init__.py +0 -0
  136. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/inventory/test_inventory.py +0 -0
  137. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/test_cal_hw.py +0 -0
  138. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/test_examples.py +0 -0
  139. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/test_logger.py +0 -0
  140. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/test_reader.py +0 -0
  141. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/test_writer.py +0 -0
  142. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/testbed_client/__init__.py +0 -0
  143. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/vsource/__init__.py +0 -0
  144. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/vsource/conftest.py +0 -0
  145. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/vsource/test_converter.py +0 -0
  146. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/vsource/test_harvester.py +0 -0
  147. {shepherd_core-2025.6.2 → shepherd_core-2025.6.3}/tests/vsource/test_z.py +0 -0
@@ -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>
@@ -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)
@@ -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>