labfreed 1.0.0a4__py3-none-any.whl → 1.0.0a6__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.
labfreed/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  Python implementation of LabFREED building blocks
3
3
  '''
4
4
 
5
- __version__ = "1.0.0a4"
5
+ __version__ = "1.0.0a6"
6
6
 
7
7
  from labfreed.pac_id import * # noqa: F403
8
8
  from labfreed.pac_cat import * # noqa: F403
@@ -57,7 +57,7 @@ class Category(LabFREED_BaseModel):
57
57
  k = f"{field_name}"
58
58
  out.update({k : v } )
59
59
 
60
- for s in getattr(self, 'additional_segments'):
60
+ for s in getattr(self, 'additional_segments', []):
61
61
  out.update( {s.key or '' : s.value })
62
62
  return out
63
63
 
@@ -116,9 +116,9 @@ class Material_Consumable(PredefinedCategory):
116
116
  return self
117
117
 
118
118
  class Material_Misc(Material_Consumable):
119
- '''Represents the -MC category'''
119
+ '''Represents the -MX category'''
120
120
  # same fields as Consumable
121
- key: str = Field(default='-MM', frozen=True)
121
+ key: str = Field(default='-MX', frozen=True)
122
122
  product_number:str|None = Field( alias='240')
123
123
  batch_number:str|None = Field(default=None, alias='10')
124
124
  packaging_size:str|None = Field(default=None, alias='20')
@@ -187,15 +187,63 @@ class Data_Static(Data_Abstract):
187
187
  additional_segments: list[IDSegment] = Field(default_factory=list, exclude=True)
188
188
  ''' Category segments, which are not defined in the specification'''
189
189
 
190
+ class Data_Misc(Data_Abstract):
191
+ '''Represents the -DX category'''
192
+ key: str = Field(default='-DX', frozen=True)
193
+ id:str|None = Field( alias='21')
194
+ additional_segments: list[IDSegment] = Field(default_factory=list, exclude=True)
195
+ ''' Category segments, which are not defined in the specification'''
196
+
197
+
198
+
199
+
200
+ class Processor_Abstract(PredefinedCategory, ABC):
201
+ '''@private'''
202
+ key: str
203
+ processor_instance:str|None = Field( alias='21')
204
+ processor_code:str|None = Field( alias='240')
205
+ additional_segments: list[IDSegment] = Field(default_factory=list, exclude=True)
206
+ ''' Category segments, which are not defined in the specification'''
207
+
208
+ @model_validator(mode='after')
209
+ def _validate_mandatory_fields(self):
210
+ if not self.id:
211
+ self._add_validation_message(
212
+ source=f"Category {self.key}",
213
+ level = ValidationMsgLevel.ERROR,
214
+ msg=f"Category key {self.key} is missing mandatory field 'processor instance'",
215
+ highlight_pattern = f"{self.key}"
216
+ )
217
+ return self
218
+
219
+ class Processor_Software(Processor_Abstract):
220
+ '''Represents the -PS category'''
221
+ key: str = Field(default='-PS', frozen=True)
222
+ processor_instance:str|None = Field( alias='21')
223
+ processor_code:str|None = Field( alias='240')
224
+ additional_segments: list[IDSegment] = Field(default_factory=list, exclude=True)
225
+ ''' Category segments, which are not defined in the specification'''
226
+
227
+ class Processor_Misc(Processor_Abstract):
228
+ '''Represents the -PX category'''
229
+ key: str = Field(default='-PX', frozen=True)
230
+ processor_instance:str|None = Field( alias='21')
231
+ processor_code:str|None = Field( alias='240')
232
+ additional_segments: list[IDSegment] = Field(default_factory=list, exclude=True)
233
+ ''' Category segments, which are not defined in the specification'''
234
+
190
235
 
191
236
  category_key_to_class_map = {
192
237
  '-MD': Material_Device,
193
238
  '-MS': Material_Substance,
194
239
  '-MC': Material_Consumable,
195
- '-MM': Material_Misc,
240
+ '-MX': Material_Misc,
196
241
  '-DM': Data_Method,
197
242
  '-DR': Data_Result,
198
243
  '-DC': Data_Calibration,
199
244
  '-DP': Data_Progress,
200
- '-DS': Data_Static
245
+ '-DS': Data_Static,
246
+ '-DX': Data_Misc,
247
+ '-PS': Processor_Software,
248
+ '-PX': Processor_Misc
201
249
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labfreed
3
- Version: 1.0.0a4
3
+ Version: 1.0.0a6
4
4
  Summary: Python implementation of LabFREED building blocks
5
5
  Author-email: Reto Thürer <thuerer.r@buchi.com>
6
6
  Requires-Python: >=3.11
@@ -1,4 +1,4 @@
1
- labfreed/__init__.py,sha256=KvTe62tzFkrePSSCB795dWb5vRFo6eLISovRwLNjT50,338
1
+ labfreed/__init__.py,sha256=QDD9hO42SH5U1i2nyJ30gD2f7LQKcGLPuewQwzxIxXQ,338
2
2
  labfreed/labfreed_infrastructure.py,sha256=YZmU-kgopyB1tvpTR_k_uIt1Q2ezexMrWvu-HaP65IE,10104
3
3
  labfreed/labfreed_extended/app/app_infrastructure.py,sha256=qn6KesHiOrhTPgXwMZNqFArKlWluxFbk5bgp5u8KDb8,3990
4
4
  labfreed/labfreed_extended/app/formatted_print.py,sha256=DcwWP0ix1e_wYNIdceIp6cETkJdG2DqpU8Gs3aZAL40,1930
@@ -25,9 +25,9 @@ labfreed/pac_attributes/server/attribute_data_sources.py,sha256=gfaERhFrn3SIoSNR
25
25
  labfreed/pac_attributes/server/server.py,sha256=_Rzi_vzX02o0g03lbm-fdg5AJHJnESDWD7cJEKRFs8w,8841
26
26
  labfreed/pac_attributes/server/translation_data_sources.py,sha256=axALOqfP840sOSdVCRYtrens97mm-hpfONMUyuVlCrY,2145
27
27
  labfreed/pac_cat/__init__.py,sha256=KNPtQzBD1XVohvG_ucOs7RJj-oi6biUTGB1k-T2o6pk,568
28
- labfreed/pac_cat/category_base.py,sha256=wVejYgDnUIUQ71q05ctophtZY2w9fD-PZ0xk3wUAEkQ,2522
28
+ labfreed/pac_cat/category_base.py,sha256=D7BzsdF0-JIgag5L2XZJRF4T2LOH5RLh1MMszflkmV8,2526
29
29
  labfreed/pac_cat/pac_cat.py,sha256=wcb_fhvgjS2xmqTsxS8_Oibvr1nsQt5zr8aUajLfK1E,5578
30
- labfreed/pac_cat/predefined_categories.py,sha256=5wnMCj-CrACV2W4lH13w7qynWIwi506G3uLNcxuJQGg,8832
30
+ labfreed/pac_cat/predefined_categories.py,sha256=U1Phgy-q4VKbMv3ruoa8uKKTlxkpZOKnWPqtHLzYUqU,11105
31
31
  labfreed/pac_id/__init__.py,sha256=NGMbzkwQ4txKeT5pxdIZordwHO8J3_q84jzPanjKoHg,675
32
32
  labfreed/pac_id/extension.py,sha256=NgLexs1LbRMMm4ETrn5m4EY2iWoMDgOTb0UV556jatQ,2227
33
33
  labfreed/pac_id/id_segment.py,sha256=r5JU1SJuRXhZJJxy5T3xjrb598wIDTLpivSJhIUAzjQ,4526
@@ -64,7 +64,7 @@ labfreed/well_known_keys/labfreed/well_known_keys.py,sha256=p-hXwEEIs7p2SKn9DQeL
64
64
  labfreed/well_known_keys/unece/UneceUnits.json,sha256=kwfQSp_nTuWbADfBBgqTWrvPl6XtM5SedEVLbMJrM7M,898953
65
65
  labfreed/well_known_keys/unece/__init__.py,sha256=MSP9lmjg9_D9iqG9Yq2_ajYfQSNS9wIT7FXA1c--59M,122
66
66
  labfreed/well_known_keys/unece/unece_units.py,sha256=J20d64H69qKDE3XlGdJoXIIh0G-d0jKoiIDsg9an5pk,1655
67
- labfreed-1.0.0a4.dist-info/licenses/LICENSE,sha256=gHFOv9FRKHxO8cInP3YXyPoJnuNeqrvcHjaE_wPSsQ8,1100
68
- labfreed-1.0.0a4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
69
- labfreed-1.0.0a4.dist-info/METADATA,sha256=Qn-9eoDdKw6CvJjtaMHWsfShqNI1iqYQkA65GM8A1UA,19740
70
- labfreed-1.0.0a4.dist-info/RECORD,,
67
+ labfreed-1.0.0a6.dist-info/licenses/LICENSE,sha256=gHFOv9FRKHxO8cInP3YXyPoJnuNeqrvcHjaE_wPSsQ8,1100
68
+ labfreed-1.0.0a6.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
69
+ labfreed-1.0.0a6.dist-info/METADATA,sha256=llcvfZgrszwp3i_ayvI5HSqO72pp7vRhJZ07-SKUp70,19740
70
+ labfreed-1.0.0a6.dist-info/RECORD,,