sapiopycommons 2025.6.19a564__py3-none-any.whl → 2026.1.22a847__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.
Files changed (63) hide show
  1. sapiopycommons/ai/__init__.py +0 -0
  2. sapiopycommons/ai/agent_service_base.py +2051 -0
  3. sapiopycommons/ai/converter_service_base.py +163 -0
  4. sapiopycommons/ai/external_credentials.py +131 -0
  5. sapiopycommons/ai/protoapi/agent/agent_pb2.py +87 -0
  6. sapiopycommons/ai/protoapi/agent/agent_pb2.pyi +282 -0
  7. sapiopycommons/ai/protoapi/agent/agent_pb2_grpc.py +154 -0
  8. sapiopycommons/ai/protoapi/agent/entry_pb2.py +49 -0
  9. sapiopycommons/ai/protoapi/agent/entry_pb2.pyi +40 -0
  10. sapiopycommons/ai/protoapi/agent/entry_pb2_grpc.py +24 -0
  11. sapiopycommons/ai/protoapi/agent/item/item_container_pb2.py +61 -0
  12. sapiopycommons/ai/protoapi/agent/item/item_container_pb2.pyi +181 -0
  13. sapiopycommons/ai/protoapi/agent/item/item_container_pb2_grpc.py +24 -0
  14. sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.py +41 -0
  15. sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.pyi +36 -0
  16. sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2_grpc.py +24 -0
  17. sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.py +51 -0
  18. sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.pyi +59 -0
  19. sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2_grpc.py +24 -0
  20. sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.py +123 -0
  21. sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.pyi +599 -0
  22. sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2_grpc.py +24 -0
  23. sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2.py +59 -0
  24. sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2.pyi +68 -0
  25. sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2_grpc.py +149 -0
  26. sapiopycommons/ai/protoapi/pipeline/script/script_pb2.py +69 -0
  27. sapiopycommons/ai/protoapi/pipeline/script/script_pb2.pyi +109 -0
  28. sapiopycommons/ai/protoapi/pipeline/script/script_pb2_grpc.py +153 -0
  29. sapiopycommons/ai/protoapi/pipeline/step_output_pb2.py +49 -0
  30. sapiopycommons/ai/protoapi/pipeline/step_output_pb2.pyi +56 -0
  31. sapiopycommons/ai/protoapi/pipeline/step_output_pb2_grpc.py +24 -0
  32. sapiopycommons/ai/protoapi/pipeline/step_pb2.py +43 -0
  33. sapiopycommons/ai/protoapi/pipeline/step_pb2.pyi +44 -0
  34. sapiopycommons/ai/protoapi/pipeline/step_pb2_grpc.py +24 -0
  35. sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.py +39 -0
  36. sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.pyi +33 -0
  37. sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2_grpc.py +24 -0
  38. sapiopycommons/ai/protobuf_utils.py +583 -0
  39. sapiopycommons/ai/request_validation.py +561 -0
  40. sapiopycommons/ai/server.py +152 -0
  41. sapiopycommons/ai/test_client.py +534 -0
  42. sapiopycommons/callbacks/callback_util.py +53 -24
  43. sapiopycommons/eln/experiment_handler.py +12 -5
  44. sapiopycommons/files/assay_plate_reader.py +93 -0
  45. sapiopycommons/files/file_text_converter.py +207 -0
  46. sapiopycommons/files/file_util.py +128 -1
  47. sapiopycommons/files/temp_files.py +82 -0
  48. sapiopycommons/flowcyto/flow_cyto.py +2 -24
  49. sapiopycommons/general/accession_service.py +2 -28
  50. sapiopycommons/general/aliases.py +4 -1
  51. sapiopycommons/general/macros.py +172 -0
  52. sapiopycommons/general/time_util.py +199 -4
  53. sapiopycommons/multimodal/multimodal.py +2 -24
  54. sapiopycommons/recordmodel/record_handler.py +200 -111
  55. sapiopycommons/rules/eln_rule_handler.py +3 -0
  56. sapiopycommons/rules/on_save_rule_handler.py +3 -0
  57. sapiopycommons/webhook/webhook_handlers.py +6 -4
  58. sapiopycommons/webhook/webservice_handlers.py +1 -1
  59. {sapiopycommons-2025.6.19a564.dist-info → sapiopycommons-2026.1.22a847.dist-info}/METADATA +2 -2
  60. sapiopycommons-2026.1.22a847.dist-info/RECORD +113 -0
  61. sapiopycommons-2025.6.19a564.dist-info/RECORD +0 -68
  62. {sapiopycommons-2025.6.19a564.dist-info → sapiopycommons-2026.1.22a847.dist-info}/WHEEL +0 -0
  63. {sapiopycommons-2025.6.19a564.dist-info → sapiopycommons-2026.1.22a847.dist-info}/licenses/LICENSE +0 -0
@@ -184,4 +184,7 @@ class ElnRuleHandler:
184
184
  instead of a model wrapper, then the returned records will be PyRecordModels instead of WrappedRecordModels.
185
185
  """
186
186
  dt: str = AliasUtil.to_data_type_name(wrapper_type)
187
+ # PR-47792: Set the wrapper_type to None if a str was provided instead of a type[WrappedType].
188
+ if isinstance(wrapper_type, str):
189
+ wrapper_type = None
187
190
  return self._rec_handler.wrap_models(self.get_records(dt, entry), wrapper_type)
@@ -180,4 +180,7 @@ class OnSaveRuleHandler:
180
180
  instead of a model wrapper, then the returned records will be PyRecordModels instead of WrappedRecordModels.
181
181
  """
182
182
  dt: str = AliasUtil.to_data_type_name(wrapper_type)
183
+ # PR-47792: Set the wrapper_type to None if a str was provided instead of a type[WrappedType].
184
+ if isinstance(wrapper_type, str):
185
+ wrapper_type = None
183
186
  return self._rec_handler.wrap_models(self.get_records(dt, record_id), wrapper_type)
@@ -7,7 +7,6 @@ import traceback
7
7
  from abc import abstractmethod
8
8
  from logging import Logger
9
9
 
10
- from sapiopylib.rest import UserManagerService, GroupManagerService, MessengerService
11
10
  from sapiopylib.rest.AccessionService import AccessionManager
12
11
  from sapiopylib.rest.CustomReportService import CustomReportManager
13
12
  from sapiopylib.rest.DashboardManager import DashboardManager
@@ -16,10 +15,13 @@ from sapiopylib.rest.DataRecordManagerService import DataRecordManager
16
15
  from sapiopylib.rest.DataService import DataManager
17
16
  from sapiopylib.rest.DataTypeService import DataTypeManager
18
17
  from sapiopylib.rest.ELNService import ElnManager
18
+ from sapiopylib.rest.GroupManagerService import VeloxGroupManager
19
+ from sapiopylib.rest.MessengerService import SapioMessenger
19
20
  from sapiopylib.rest.PicklistService import PickListManager
20
21
  from sapiopylib.rest.ReportManager import ReportManager
21
22
  from sapiopylib.rest.SesssionManagerService import SessionManager
22
23
  from sapiopylib.rest.User import SapioUser
24
+ from sapiopylib.rest.UserManagerService import VeloxUserManager
23
25
  from sapiopylib.rest.WebhookService import AbstractWebhookHandler
24
26
  from sapiopylib.rest.pojo.Message import VeloxLogMessage, VeloxLogLevel
25
27
  from sapiopylib.rest.pojo.webhook.ClientCallbackRequest import PopupType
@@ -85,9 +87,9 @@ class CommonsWebhookHandler(AbstractWebhookHandler):
85
87
  """A class for making requests to the data type webservice endpoints."""
86
88
  eln_man: ElnManager
87
89
  """A class for making requests to the ELN management webservice endpoints."""
88
- group_man: GroupManagerService
90
+ group_man: VeloxGroupManager
89
91
  """A class for making requests to the group management webservice endpoints."""
90
- messenger: MessengerService
92
+ messenger: SapioMessenger
91
93
  """A class for making requests to the message webservice endpoints."""
92
94
  list_man: PickListManager
93
95
  """A class for making requests to the pick list webservice endpoints."""
@@ -95,7 +97,7 @@ class CommonsWebhookHandler(AbstractWebhookHandler):
95
97
  """A class for making requests to the report webservice endpoints."""
96
98
  session_man: SessionManager
97
99
  """A class for making requests to the session management webservice endpoints."""
98
- user_man: UserManagerService
100
+ user_man: VeloxUserManager
99
101
  """A class for making requests to the user management webservice endpoints."""
100
102
 
101
103
  rec_man: RecordModelManager
@@ -140,7 +140,7 @@ class AbstractWebserviceHandler(AbstractWebhookHandler):
140
140
  # Get the login credentials from the headers.
141
141
  auth: str = headers.get("Authorization")
142
142
  if auth and auth.startswith("Basic "):
143
- credentials: list[str] = b64decode(auth.split("Basic ")[1]).decode().split(":")
143
+ credentials: list[str] = b64decode(auth.split("Basic ")[1]).decode().split(":", 1)
144
144
  user = self.basic_auth(url, credentials[0], credentials[1])
145
145
  elif auth and auth.startswith("Bearer "):
146
146
  user = self.bearer_token_auth(url, auth.split("Bearer ")[1])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sapiopycommons
3
- Version: 2025.6.19a564
3
+ Version: 2026.1.22a847
4
4
  Summary: Official Sapio Python API Utilities Package
5
5
  Project-URL: Homepage, https://github.com/sapiosciences
6
6
  Author-email: Jonathan Steck <jsteck@sapiosciences.com>, Yechen Qiao <yqiao@sapiosciences.com>
@@ -17,7 +17,7 @@ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
17
17
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Requires-Python: >=3.10
19
19
  Requires-Dist: databind>=4.5
20
- Requires-Dist: sapiopylib>=2025.4.17.264
20
+ Requires-Dist: sapiopylib>=2025.10.7.295
21
21
  Description-Content-Type: text/markdown
22
22
 
23
23
 
@@ -0,0 +1,113 @@
1
+ sapiopycommons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ sapiopycommons/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ sapiopycommons/ai/agent_service_base.py,sha256=EtImPyKZuRtHn2w0XjiqytHJPzDWOty6mY-2qciRvXk,108986
4
+ sapiopycommons/ai/converter_service_base.py,sha256=NjMCrpyoEh2TYrP9zN3SY0XtOir3IGWGPjU_snr6Usw,6360
5
+ sapiopycommons/ai/external_credentials.py,sha256=DKg3EMGrm6XSt09WbHWy3UHUphuakItiFeToluGSxlM,4427
6
+ sapiopycommons/ai/protobuf_utils.py,sha256=PeXpjfurg8EvvgM_jNLp0F1zAlV7cad8x0zewqi5Bhw,28235
7
+ sapiopycommons/ai/request_validation.py,sha256=fW3I_G6PUrJhpalQEfI1T5nAqcNUYYOVf_oJnlROrNM,30430
8
+ sapiopycommons/ai/server.py,sha256=VgHNvY2751qDZ8t7JTS67uxSnzOcpKdKc2Dick1p22g,6393
9
+ sapiopycommons/ai/test_client.py,sha256=hExCLASmqm59nTnhph9OIQpTSbde14cH4Sayik3Enpk,26350
10
+ sapiopycommons/ai/protoapi/agent/agent_pb2.py,sha256=dKKB52qOf7lCZWt9kAgqFu8bdhemMwGid8u0aC_Rb2s,10489
11
+ sapiopycommons/ai/protoapi/agent/agent_pb2.pyi,sha256=EkN98-gIGCbj4OuPOZMjZWDi-hhAgtThR0hR6Mk-FoM,20222
12
+ sapiopycommons/ai/protoapi/agent/agent_pb2_grpc.py,sha256=q4sac85YnJG6vjqNXKdNji3FaLSu0lEBnjKMKRBJm90,6851
13
+ sapiopycommons/ai/protoapi/agent/entry_pb2.py,sha256=EDFp_UNaWw_RnwrrEfACFRXUEUy18OaxPDB8ljWPKBk,3082
14
+ sapiopycommons/ai/protoapi/agent/entry_pb2.pyi,sha256=DMb3vd-O1cqo7Q_2ehx6ubFEa1SR_ho_qBrEvaIQTbk,2745
15
+ sapiopycommons/ai/protoapi/agent/entry_pb2_grpc.py,sha256=hiZtUu9Ij-zQoKeMGKt15-cRlxThdrfe8z5qxoKYKfk,918
16
+ sapiopycommons/ai/protoapi/agent/item/item_container_pb2.py,sha256=oBHslKp2eni0wicsuk5BfnWPLp6g5FzwR0CGBqfyqDQ,4830
17
+ sapiopycommons/ai/protoapi/agent/item/item_container_pb2.pyi,sha256=6JQ_i6DPs0lSTTSl8qImNsBg6aEMNjbyUUh6ARwz6YI,11626
18
+ sapiopycommons/ai/protoapi/agent/item/item_container_pb2_grpc.py,sha256=Uj5rcKQuXFU_dn1vnJEEblkK_kdh30BXQeBY0JgAkuI,932
19
+ sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.py,sha256=vJRtIbxRm-CM9WTfFlcn4V5oDCQeK1hRoVS9WwdYbjU,2481
20
+ sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.pyi,sha256=3_vdkYM56c31cCVo6VvXDV9F4ENN7Mq20PAPHOHvHZw,1685
21
+ sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2_grpc.py,sha256=mZLcay2VLNCuabBp8k2Sw3d6FcHXWFzze31Q3O0l7es,947
22
+ sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.py,sha256=Oral3k23576HIKu6mWIcZOuk87cvbpmRmiZJcU6kG1o,3344
23
+ sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.pyi,sha256=tJXn_hO7Xii5ZQPCGvAYkrqiqnqNQxMEdKC6Wm_rmJE,2812
24
+ sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2_grpc.py,sha256=scBvKFAGDWSAPJ4cnJCpvBNbROMjYGWF8y6gugOjudI,930
25
+ sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.py,sha256=CE4cM7UlT6fbTw0JafKiAH2jdEnmcuAzKYoF-3oYGcw,20864
26
+ sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.pyi,sha256=h24h8dh6d4dsw0Bc9Oyfffdxv73aljfgt72ZJIXwxBw,34055
27
+ sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2_grpc.py,sha256=hcd7T-_SbDWGG22-GigTihxCAPQ_hryCcX_hqFFF-KE,939
28
+ sapiopycommons/ai/protoapi/pipeline/step_output_pb2.py,sha256=nntHXqMbbgqhm9Ic17FMaIoR7CGIrzbzxknIAkTtr9w,3293
29
+ sapiopycommons/ai/protoapi/pipeline/step_output_pb2.pyi,sha256=Md2SaMnflALL_TnoAkRWrAsAYj0hMg-Yi76F0NfFnQg,3016
30
+ sapiopycommons/ai/protoapi/pipeline/step_output_pb2_grpc.py,sha256=7fWSkfpljHFr1RqFMuyIgQ87rlRBGluWLs02Bg_pJnc,927
31
+ sapiopycommons/ai/protoapi/pipeline/step_pb2.py,sha256=c5g5h4LIX1FKjVzoNZKku-jclnHhTCa64LBDLYd-BKA,2457
32
+ sapiopycommons/ai/protoapi/pipeline/step_pb2.pyi,sha256=tGFKu574nSLRURNhbxFcbajY66G-wfKIJm5D_dy58uk,2089
33
+ sapiopycommons/ai/protoapi/pipeline/step_pb2_grpc.py,sha256=mSdi68T_lXIxsaD23hIYaNk4TzxvNRAfD31xSLHX8lY,920
34
+ sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2.py,sha256=4FfhtxyGMUyDUZO_GXQzmjsJU47z775XAprgTMjLHYk,4590
35
+ sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2.pyi,sha256=pe-cq7ITHC0egMs8Zz5dp2IPtC_QG_Hlt0FwTtqIFZs,4641
36
+ sapiopycommons/ai/protoapi/pipeline/converter/converter_pb2_grpc.py,sha256=lhmz45-cy9mJnRVZAD0T7s4pKmGQfw_Hg98DbVq9qHE,6507
37
+ sapiopycommons/ai/protoapi/pipeline/script/script_pb2.py,sha256=Rkhmbfm4jFqGU5v03iIWT8SBJ-9uLBYGIdDAkPMlh5A,6510
38
+ sapiopycommons/ai/protoapi/pipeline/script/script_pb2.pyi,sha256=7zgxMpp8KBzDTABrrX5roKhfoPda7v93lMLzIYxR4F8,6886
39
+ sapiopycommons/ai/protoapi/pipeline/script/script_pb2_grpc.py,sha256=o-uJ2sQ4HBrIJhPo0tU8qBvL8m3_xVqLePut4-iMa5A,6923
40
+ sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.py,sha256=HY0c7dvR6MpzDC43PTR6C3COYV2F_EnH1GuU2VXBOCs,2094
41
+ sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.pyi,sha256=IyvYgtz-APrZjPvv5wISxSnPmpVK0moLa_nYaEyuFn0,1648
42
+ sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2_grpc.py,sha256=Gk5SC9Dpx6JRJsKY5gONctgrLcIPTUwtH8oUw6jaN3w,930
43
+ sapiopycommons/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ sapiopycommons/callbacks/callback_util.py,sha256=qzSxMOnMT1fdPhKiL5tD4MYLgLKYVkYoSs5um9wZRZ0,154890
45
+ sapiopycommons/callbacks/field_builder.py,sha256=rnIP-RJafk3mZlAx1eJ8a0eSW9Ps_L6_WadCmusnENw,38772
46
+ sapiopycommons/chem/IndigoMolecules.py,sha256=7ucCaRMLu1zfH2uPIvXwRTSdpNcS03O1P9p_O-5B4xQ,5110
47
+ sapiopycommons/chem/Molecules.py,sha256=mVqPn32MPMjF0iZas-5MFkS-upIdoW5OB72KKZmJRJA,12523
48
+ sapiopycommons/chem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ sapiopycommons/customreport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ sapiopycommons/customreport/auto_pagers.py,sha256=89p-tik0MhsOplYje6LbAW4WClldpAmb8YXFDoXhIlY,17144
51
+ sapiopycommons/customreport/column_builder.py,sha256=0RO53e9rKPZ07C--KcepN6_tpRw_FxF3O9vdG0ilKG8,3014
52
+ sapiopycommons/customreport/custom_report_builder.py,sha256=BlTxZ4t1sfZA2Ciur1EfYvkZxHxJ7ADwYNAe2zwiN0c,7176
53
+ sapiopycommons/customreport/term_builder.py,sha256=1_PGjxNUy5YWim8WJ_HJfiTq6i0D3gLPDxLySlFt30o,18573
54
+ sapiopycommons/datatype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ sapiopycommons/datatype/attachment_util.py,sha256=N-nhsJ0oxa_Ft6Y6VWeNFYLzfuQqsjhHA6_-yIt2wVw,3596
56
+ sapiopycommons/datatype/data_fields.py,sha256=pczUlEcE0TeHEDU0Gkvu7voacSLPXCB7l9UbI1Tb6V0,5656
57
+ sapiopycommons/datatype/pseudo_data_types.py,sha256=lAJDnFuStrUP0mK5AuYlFvLerwjEB-ABd6Z4qlCrwJA,40637
58
+ sapiopycommons/eln/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ sapiopycommons/eln/experiment_cache.py,sha256=Zv4IcsAl95ftO2ul3DRc_Hyno0AfC3OvFV7RYb72ITo,9560
60
+ sapiopycommons/eln/experiment_handler.py,sha256=1RzrWOicF9VjcWlaziV46yBEk1BOP4BuTJ0JeYdn50I,99204
61
+ sapiopycommons/eln/experiment_report_util.py,sha256=GLpgwSEPuUqnY1v4oJ1ao60Va-YcgXh7E-cH9YnVeAg,37256
62
+ sapiopycommons/eln/experiment_step_factory.py,sha256=qw9UfLslVzB6dEIZPOZ85XHKpld81RhD4-csM6TgQNg,26099
63
+ sapiopycommons/eln/experiment_tags.py,sha256=7-fpOiSqrjbXmWIJhEhaxMgLsVCPAtKqH8xRzpDVKoE,356
64
+ sapiopycommons/eln/plate_designer.py,sha256=XFazSvhTbSy47t80-jc2tyx_-fQ_IUjKd18JQKEFcsY,13939
65
+ sapiopycommons/eln/step_creation.py,sha256=CFkGC-SxwAQpQlcs_obqLAVgmsNxKSGMqMtO_E6IVmw,10171
66
+ sapiopycommons/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ sapiopycommons/files/assay_plate_reader.py,sha256=3c2PQiiAbc2QJU9ZfNLzcTmvJrUwsbkIHO7R6R52xGU,3020
68
+ sapiopycommons/files/complex_data_loader.py,sha256=T39veNhvYl6j_uZjIIJ8Mk5Aa7otR5RB-g8XlAdkksA,1421
69
+ sapiopycommons/files/file_bridge.py,sha256=vKbqxPexi15epr_-_qLrEfYoxNxB031mXN92iVtOMqE,9511
70
+ sapiopycommons/files/file_bridge_handler.py,sha256=SEYDIQhSCmjI6qyLdDJE8JVKSd0WYvF7JvAq_Ahp9Do,25503
71
+ sapiopycommons/files/file_data_handler.py,sha256=f96MlkMuQhUCi4oLnzJK5AiuElCp5jLI8_sJkZVwpws,36779
72
+ sapiopycommons/files/file_text_converter.py,sha256=Gaj_divTiKXWd6flDOgrxNXpcn9fDWqxX6LUG0joePk,7516
73
+ sapiopycommons/files/file_util.py,sha256=WBA3FYG8R2HtfxjWSzQhZKW6_1s6JSxTo9lk3SeNDu8,37140
74
+ sapiopycommons/files/file_validator.py,sha256=ryg22-93csmRO_Pv0ZpWphNkB74xWZnHyJ23K56qLj0,28761
75
+ sapiopycommons/files/file_writer.py,sha256=hACVl0duCjP28gJ1NPljkjagNCLod0ygUlPbvUmRDNM,17605
76
+ sapiopycommons/files/temp_files.py,sha256=s2sGvn9uh2dTI8AVAQJWOf6RAZ0xZs7DSccCi4AGmlw,3175
77
+ sapiopycommons/flowcyto/flow_cyto.py,sha256=B6DFquLi-gcWfJWyP4vYfwTXXJKl6O9W5-k8FzkM0Oo,2610
78
+ sapiopycommons/flowcyto/flowcyto_data.py,sha256=mYKFuLbtpJ-EsQxLGtu4tNHVlygTxKixgJxJqD68F58,2596
79
+ sapiopycommons/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ sapiopycommons/general/accession_service.py,sha256=ZvtvZg7d_siMJUedjrF14mcqo5ZqVA5IJxDa5enlB-8,12792
81
+ sapiopycommons/general/aliases.py,sha256=R7c1TgkyktKOrRYeMTpzMM61A7jYojJVM8ZcNu9Ktqo,14840
82
+ sapiopycommons/general/audit_log.py,sha256=sQAMcJx0cNkgZm7nTZSaGPxWvHG0_x6dBtU0jESavb4,9131
83
+ sapiopycommons/general/custom_report_util.py,sha256=9elLEUSgfM0gli8nRPz1uYkhaXN4Vnx3piSiNHv5IBs,19156
84
+ sapiopycommons/general/data_structure_util.py,sha256=fbQR_Fh4Scg67IpFPbQW9wVLw1oxlYxqp4LjBRTpjgU,4702
85
+ sapiopycommons/general/directive_util.py,sha256=7SeQrd2Ye5JHlXZtJZaVGgtaSLdq_Vm9EObuxf44Pz8,3905
86
+ sapiopycommons/general/exceptions.py,sha256=aPlzK1cvxeMU5UsokYlLrIBGltUfJZ7LH8zvLh9DxpI,3233
87
+ sapiopycommons/general/html_formatter.py,sha256=HE3OeGgwOw6x53zGSc4-UzP4-JoOmQIz3pX-DzNVg94,17138
88
+ sapiopycommons/general/macros.py,sha256=Tses4g247JADC93U2OROHdDadEuUPLhPXgeQljz-fK4,7127
89
+ sapiopycommons/general/popup_util.py,sha256=HKILegU1uCL_6abNlNL0Wn3xgX2JNa_kJeq7e5CZu6Q,31923
90
+ sapiopycommons/general/sapio_links.py,sha256=YkcVKNLrSGoM7tCCXBAsIbIxylctwdcEyhePrRMODe0,2859
91
+ sapiopycommons/general/storage_util.py,sha256=ovmK_jN7v09BoX07XxwShpBUC5WYQOM7dbKV_VeLXJU,8892
92
+ sapiopycommons/general/time_util.py,sha256=dB8_Ot61_ILcuKXeBt1jfa01UOoCcegnjqVdfr5tyQ8,19344
93
+ sapiopycommons/multimodal/multimodal.py,sha256=EP9WYzx1CvidmEBlvzO6tiF4HJwsPB1FgxpnbWzxnpA,6161
94
+ sapiopycommons/multimodal/multimodal_data.py,sha256=0BeVPr9HaC0hNTF1v1phTIKGruvNnwerHsD994qJKBg,15099
95
+ sapiopycommons/processtracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ sapiopycommons/processtracking/custom_workflow_handler.py,sha256=eYKdYlwo8xx-6AkB_iPUBNV9yDoNvW2h_Sm3i8JpmRU,25844
97
+ sapiopycommons/processtracking/endpoints.py,sha256=5AJLbhRKQsOeeOdQa888xcCJZD5aavxD-DHZ36Qob_M,12548
98
+ sapiopycommons/recordmodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
+ sapiopycommons/recordmodel/record_handler.py,sha256=TUkbMZEZEjO2fL77YvmA6nzRc5jCggzGApIL9AoNKOU,96916
100
+ sapiopycommons/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ sapiopycommons/rules/eln_rule_handler.py,sha256=Ec2hvxn6gmBvZjhX9-7WCFqafxFE9JSy2zCsvFsVyS4,11565
102
+ sapiopycommons/rules/on_save_rule_handler.py,sha256=HLdgUkxmaoHBK3jaycZlUHWam4kk36zmw7VDuRRiAx8,11332
103
+ sapiopycommons/samples/aliquot.py,sha256=mWOJUqaQh0t3HklNuGdmuV7D5zzXs6fpLwtDdM6_XTo,3018
104
+ sapiopycommons/sftpconnect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ sapiopycommons/sftpconnect/sftp_builder.py,sha256=lFK3FeXk-sFLefW0hqY8WGUQDeYiGaT6yDACzT_zFgQ,3015
106
+ sapiopycommons/webhook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
+ sapiopycommons/webhook/webhook_context.py,sha256=D793uLsb1691SalaPnBUk3rOSxn_hYLhdvkaIxjNXss,1909
108
+ sapiopycommons/webhook/webhook_handlers.py,sha256=7o_wXOruhT9auNh8OfhJAh4WhhiPKij67FMBSpGPICc,39939
109
+ sapiopycommons/webhook/webservice_handlers.py,sha256=cvW6Mk_110BzYqkbk63Kg7jWrltBCDALOlkJRu8h4VQ,14300
110
+ sapiopycommons-2026.1.22a847.dist-info/METADATA,sha256=Vx4vhKjIcObBi7v_mYqHErNc-Ku0zd8YDbw2WwF5qhE,3143
111
+ sapiopycommons-2026.1.22a847.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
112
+ sapiopycommons-2026.1.22a847.dist-info/licenses/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
113
+ sapiopycommons-2026.1.22a847.dist-info/RECORD,,
@@ -1,68 +0,0 @@
1
- sapiopycommons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- sapiopycommons/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- sapiopycommons/callbacks/callback_util.py,sha256=rps6RA6lmzCOwiBqPQAe2Mkf0CIF4RjHPQTYgduMAgE,153011
4
- sapiopycommons/callbacks/field_builder.py,sha256=rnIP-RJafk3mZlAx1eJ8a0eSW9Ps_L6_WadCmusnENw,38772
5
- sapiopycommons/chem/IndigoMolecules.py,sha256=7ucCaRMLu1zfH2uPIvXwRTSdpNcS03O1P9p_O-5B4xQ,5110
6
- sapiopycommons/chem/Molecules.py,sha256=mVqPn32MPMjF0iZas-5MFkS-upIdoW5OB72KKZmJRJA,12523
7
- sapiopycommons/chem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- sapiopycommons/customreport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- sapiopycommons/customreport/auto_pagers.py,sha256=89p-tik0MhsOplYje6LbAW4WClldpAmb8YXFDoXhIlY,17144
10
- sapiopycommons/customreport/column_builder.py,sha256=0RO53e9rKPZ07C--KcepN6_tpRw_FxF3O9vdG0ilKG8,3014
11
- sapiopycommons/customreport/custom_report_builder.py,sha256=BlTxZ4t1sfZA2Ciur1EfYvkZxHxJ7ADwYNAe2zwiN0c,7176
12
- sapiopycommons/customreport/term_builder.py,sha256=1_PGjxNUy5YWim8WJ_HJfiTq6i0D3gLPDxLySlFt30o,18573
13
- sapiopycommons/datatype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- sapiopycommons/datatype/attachment_util.py,sha256=N-nhsJ0oxa_Ft6Y6VWeNFYLzfuQqsjhHA6_-yIt2wVw,3596
15
- sapiopycommons/datatype/data_fields.py,sha256=pczUlEcE0TeHEDU0Gkvu7voacSLPXCB7l9UbI1Tb6V0,5656
16
- sapiopycommons/datatype/pseudo_data_types.py,sha256=lAJDnFuStrUP0mK5AuYlFvLerwjEB-ABd6Z4qlCrwJA,40637
17
- sapiopycommons/eln/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- sapiopycommons/eln/experiment_cache.py,sha256=Zv4IcsAl95ftO2ul3DRc_Hyno0AfC3OvFV7RYb72ITo,9560
19
- sapiopycommons/eln/experiment_handler.py,sha256=kMQuccmGyPzc8wYKsds6AZ_VjH9WLjtUY6hsSWXJx6s,98786
20
- sapiopycommons/eln/experiment_report_util.py,sha256=GLpgwSEPuUqnY1v4oJ1ao60Va-YcgXh7E-cH9YnVeAg,37256
21
- sapiopycommons/eln/experiment_step_factory.py,sha256=qw9UfLslVzB6dEIZPOZ85XHKpld81RhD4-csM6TgQNg,26099
22
- sapiopycommons/eln/experiment_tags.py,sha256=7-fpOiSqrjbXmWIJhEhaxMgLsVCPAtKqH8xRzpDVKoE,356
23
- sapiopycommons/eln/plate_designer.py,sha256=XFazSvhTbSy47t80-jc2tyx_-fQ_IUjKd18JQKEFcsY,13939
24
- sapiopycommons/eln/step_creation.py,sha256=CFkGC-SxwAQpQlcs_obqLAVgmsNxKSGMqMtO_E6IVmw,10171
25
- sapiopycommons/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- sapiopycommons/files/complex_data_loader.py,sha256=T39veNhvYl6j_uZjIIJ8Mk5Aa7otR5RB-g8XlAdkksA,1421
27
- sapiopycommons/files/file_bridge.py,sha256=vKbqxPexi15epr_-_qLrEfYoxNxB031mXN92iVtOMqE,9511
28
- sapiopycommons/files/file_bridge_handler.py,sha256=SEYDIQhSCmjI6qyLdDJE8JVKSd0WYvF7JvAq_Ahp9Do,25503
29
- sapiopycommons/files/file_data_handler.py,sha256=f96MlkMuQhUCi4oLnzJK5AiuElCp5jLI8_sJkZVwpws,36779
30
- sapiopycommons/files/file_util.py,sha256=djouyGjsYgWzjz2OBRnSeMDgj6NrsJUm1a2J93J8Wco,31915
31
- sapiopycommons/files/file_validator.py,sha256=ryg22-93csmRO_Pv0ZpWphNkB74xWZnHyJ23K56qLj0,28761
32
- sapiopycommons/files/file_writer.py,sha256=hACVl0duCjP28gJ1NPljkjagNCLod0ygUlPbvUmRDNM,17605
33
- sapiopycommons/flowcyto/flow_cyto.py,sha256=vs9WhXXKz3urpjL8QKSk56B-NSmQR3O3x_WFBKoeO10,3227
34
- sapiopycommons/flowcyto/flowcyto_data.py,sha256=mYKFuLbtpJ-EsQxLGtu4tNHVlygTxKixgJxJqD68F58,2596
35
- sapiopycommons/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- sapiopycommons/general/accession_service.py,sha256=3e__bVs7CYZ1CduLlGA9plnK7nCtdy7GXjCrNObPFgo,13484
37
- sapiopycommons/general/aliases.py,sha256=VwnWf_P803pcteoAIs0DkLScVChCS5XNgryTp8FzaNc,14696
38
- sapiopycommons/general/audit_log.py,sha256=sQAMcJx0cNkgZm7nTZSaGPxWvHG0_x6dBtU0jESavb4,9131
39
- sapiopycommons/general/custom_report_util.py,sha256=9elLEUSgfM0gli8nRPz1uYkhaXN4Vnx3piSiNHv5IBs,19156
40
- sapiopycommons/general/data_structure_util.py,sha256=fbQR_Fh4Scg67IpFPbQW9wVLw1oxlYxqp4LjBRTpjgU,4702
41
- sapiopycommons/general/directive_util.py,sha256=7SeQrd2Ye5JHlXZtJZaVGgtaSLdq_Vm9EObuxf44Pz8,3905
42
- sapiopycommons/general/exceptions.py,sha256=aPlzK1cvxeMU5UsokYlLrIBGltUfJZ7LH8zvLh9DxpI,3233
43
- sapiopycommons/general/html_formatter.py,sha256=HE3OeGgwOw6x53zGSc4-UzP4-JoOmQIz3pX-DzNVg94,17138
44
- sapiopycommons/general/popup_util.py,sha256=HKILegU1uCL_6abNlNL0Wn3xgX2JNa_kJeq7e5CZu6Q,31923
45
- sapiopycommons/general/sapio_links.py,sha256=YkcVKNLrSGoM7tCCXBAsIbIxylctwdcEyhePrRMODe0,2859
46
- sapiopycommons/general/storage_util.py,sha256=ovmK_jN7v09BoX07XxwShpBUC5WYQOM7dbKV_VeLXJU,8892
47
- sapiopycommons/general/time_util.py,sha256=jU1urPoZRv6evNucR0-288EyT4PrsDpCr-H1-7BKq9A,12363
48
- sapiopycommons/multimodal/multimodal.py,sha256=PFaGJPbKvW__tnxb8KkgkJZOKjQdgxF_kGfD5chet1s,6779
49
- sapiopycommons/multimodal/multimodal_data.py,sha256=0BeVPr9HaC0hNTF1v1phTIKGruvNnwerHsD994qJKBg,15099
50
- sapiopycommons/processtracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- sapiopycommons/processtracking/custom_workflow_handler.py,sha256=eYKdYlwo8xx-6AkB_iPUBNV9yDoNvW2h_Sm3i8JpmRU,25844
52
- sapiopycommons/processtracking/endpoints.py,sha256=5AJLbhRKQsOeeOdQa888xcCJZD5aavxD-DHZ36Qob_M,12548
53
- sapiopycommons/recordmodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- sapiopycommons/recordmodel/record_handler.py,sha256=HfYOl_dDHFd0SEQS3g48_a4zsm36ODWkvZunwzCFDos,90666
55
- sapiopycommons/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- sapiopycommons/rules/eln_rule_handler.py,sha256=MnE-eSl1kNfaXWFi9elTOC9V2fdUzrwWTvCHUprC8_I,11388
57
- sapiopycommons/rules/on_save_rule_handler.py,sha256=fkNIlslAZZ0BUrRiwecyvf42JBR8FpCCQ6DBNKXP2jE,11155
58
- sapiopycommons/samples/aliquot.py,sha256=mWOJUqaQh0t3HklNuGdmuV7D5zzXs6fpLwtDdM6_XTo,3018
59
- sapiopycommons/sftpconnect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- sapiopycommons/sftpconnect/sftp_builder.py,sha256=lFK3FeXk-sFLefW0hqY8WGUQDeYiGaT6yDACzT_zFgQ,3015
61
- sapiopycommons/webhook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- sapiopycommons/webhook/webhook_context.py,sha256=D793uLsb1691SalaPnBUk3rOSxn_hYLhdvkaIxjNXss,1909
63
- sapiopycommons/webhook/webhook_handlers.py,sha256=tUVNCw05CDGu1gFDm2g558hX_O203WVm_n__ojjoRRM,39841
64
- sapiopycommons/webhook/webservice_handlers.py,sha256=tyaYGG1-v_JJrJHZ6cy5mGCxX9z1foLw7pM4MDJlFxs,14297
65
- sapiopycommons-2025.6.19a564.dist-info/METADATA,sha256=NdRawGZqwt0LrI4WrQxBNoStmuExac4I9VJFx92THm0,3143
66
- sapiopycommons-2025.6.19a564.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
67
- sapiopycommons-2025.6.19a564.dist-info/licenses/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
68
- sapiopycommons-2025.6.19a564.dist-info/RECORD,,