logs-py 4.0.7__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 (251) hide show
  1. LOGS/Auxiliary/CheckClassName.py +1075 -0
  2. LOGS/Auxiliary/Constants.py +99 -0
  3. LOGS/Auxiliary/CustomEntityClassGenerator.py +254 -0
  4. LOGS/Auxiliary/CustomFieldClassGenerator.py +115 -0
  5. LOGS/Auxiliary/CustomFieldValueTypeChecker.py +168 -0
  6. LOGS/Auxiliary/CustomSectionClassGenerator.py +113 -0
  7. LOGS/Auxiliary/CustomTypeClassGenerator.py +147 -0
  8. LOGS/Auxiliary/DateTimeConverter.py +66 -0
  9. LOGS/Auxiliary/Decorators.py +109 -0
  10. LOGS/Auxiliary/Exceptions.py +341 -0
  11. LOGS/Auxiliary/LOGSErrorResponse.py +89 -0
  12. LOGS/Auxiliary/MinimalModelGenerator.py +236 -0
  13. LOGS/Auxiliary/ParameterHelper.py +56 -0
  14. LOGS/Auxiliary/ReplaceMessage.py +13 -0
  15. LOGS/Auxiliary/Tools.py +432 -0
  16. LOGS/Auxiliary/__init__.py +15 -0
  17. LOGS/Converter/Conversion.py +248 -0
  18. LOGS/Converter/Converter.py +96 -0
  19. LOGS/Converter/ConverterParameter.py +88 -0
  20. LOGS/Converter/DateTimeRange.py +58 -0
  21. LOGS/Converter/ExportParameters.py +89 -0
  22. LOGS/Converter/__init__.py +13 -0
  23. LOGS/Entities/Attachment.py +84 -0
  24. LOGS/Entities/AttachmentMinimal.py +8 -0
  25. LOGS/Entities/AttachmentRequestParameter.py +42 -0
  26. LOGS/Entities/Attachments.py +53 -0
  27. LOGS/Entities/AutoloadFileInfo.py +12 -0
  28. LOGS/Entities/AutoloadStatusError.py +7 -0
  29. LOGS/Entities/AxisNaming.py +33 -0
  30. LOGS/Entities/AxisZoom.py +33 -0
  31. LOGS/Entities/Bridge.py +165 -0
  32. LOGS/Entities/BridgeClientInfo.py +93 -0
  33. LOGS/Entities/BridgeMinimal.py +8 -0
  34. LOGS/Entities/BridgeRequestParameter.py +49 -0
  35. LOGS/Entities/BridgeType.py +7 -0
  36. LOGS/Entities/Bridges.py +12 -0
  37. LOGS/Entities/CustomField.py +243 -0
  38. LOGS/Entities/CustomFieldMinimal.py +8 -0
  39. LOGS/Entities/CustomFieldModels.py +111 -0
  40. LOGS/Entities/CustomFieldRequestParameter.py +69 -0
  41. LOGS/Entities/CustomFieldSearchQuery.py +40 -0
  42. LOGS/Entities/CustomFields.py +12 -0
  43. LOGS/Entities/CustomType.py +212 -0
  44. LOGS/Entities/CustomTypeMinimal.py +8 -0
  45. LOGS/Entities/CustomTypeRequestParameter.py +60 -0
  46. LOGS/Entities/CustomTypeSection.py +63 -0
  47. LOGS/Entities/CustomTypes.py +12 -0
  48. LOGS/Entities/DataFormat.py +97 -0
  49. LOGS/Entities/DataFormatInstrument.py +18 -0
  50. LOGS/Entities/DataFormatInstrumentMinimal.py +8 -0
  51. LOGS/Entities/DataFormatInstrumentRequestParameter.py +17 -0
  52. LOGS/Entities/DataFormatInstruments.py +16 -0
  53. LOGS/Entities/DataFormatMinimal.py +18 -0
  54. LOGS/Entities/DataFormatRequestParameter.py +21 -0
  55. LOGS/Entities/DataFormats.py +12 -0
  56. LOGS/Entities/DataSource.py +218 -0
  57. LOGS/Entities/DataSourceConnectionStatus.py +12 -0
  58. LOGS/Entities/DataSourceMinimal.py +8 -0
  59. LOGS/Entities/DataSourceRequestParameter.py +57 -0
  60. LOGS/Entities/DataSourceStatus.py +108 -0
  61. LOGS/Entities/DataSourceStatusIterator.py +16 -0
  62. LOGS/Entities/DataSourceStatusRequestParameter.py +31 -0
  63. LOGS/Entities/DataSources.py +12 -0
  64. LOGS/Entities/Dataset.py +439 -0
  65. LOGS/Entities/DatasetBase.py +196 -0
  66. LOGS/Entities/DatasetCreator.py +148 -0
  67. LOGS/Entities/DatasetInfo.py +147 -0
  68. LOGS/Entities/DatasetMatchTypes.py +157 -0
  69. LOGS/Entities/DatasetMatching.py +196 -0
  70. LOGS/Entities/DatasetMinimal.py +8 -0
  71. LOGS/Entities/DatasetModels.py +33 -0
  72. LOGS/Entities/DatasetRequestParameter.py +92 -0
  73. LOGS/Entities/DatasetTemplate.py +23 -0
  74. LOGS/Entities/DatasetUploadParameter.py +14 -0
  75. LOGS/Entities/Datasets.py +142 -0
  76. LOGS/Entities/Datatrack.py +179 -0
  77. LOGS/Entities/DatatrackFormattedTable.py +25 -0
  78. LOGS/Entities/DatatrackGeneric.py +34 -0
  79. LOGS/Entities/DatatrackImage.py +25 -0
  80. LOGS/Entities/DatatrackNumericArray.py +30 -0
  81. LOGS/Entities/DatatrackNumericMatrix.py +98 -0
  82. LOGS/Entities/Entities.py +71 -0
  83. LOGS/Entities/EntitiesRequestParameter.py +18 -0
  84. LOGS/Entities/EntityOriginWriteModelWithId.py +15 -0
  85. LOGS/Entities/FileEntry.py +138 -0
  86. LOGS/Entities/FileExcludePattern.py +8 -0
  87. LOGS/Entities/FormatMetaData.py +56 -0
  88. LOGS/Entities/FormattedTable/DatatypeFormattedTable.py +135 -0
  89. LOGS/Entities/FormattedTable/DatatypeFormattedTableCell.py +108 -0
  90. LOGS/Entities/FormattedTable/DatatypeFormattedTableSettings.py +11 -0
  91. LOGS/Entities/FormattedTable/__init__.py +9 -0
  92. LOGS/Entities/HierarchyLeaf.py +15 -0
  93. LOGS/Entities/HierarchyNode.py +40 -0
  94. LOGS/Entities/ILiteraryTypedEntity.py +19 -0
  95. LOGS/Entities/InventoryItem.py +102 -0
  96. LOGS/Entities/InventoryItemMinimal.py +25 -0
  97. LOGS/Entities/InventoryItemRequestParameter.py +58 -0
  98. LOGS/Entities/InventoryItems.py +12 -0
  99. LOGS/Entities/LabNotebook.py +33 -0
  100. LOGS/Entities/LabNotebookEntries.py +16 -0
  101. LOGS/Entities/LabNotebookEntry.py +106 -0
  102. LOGS/Entities/LabNotebookEntryContent/BasicAttribute.py +15 -0
  103. LOGS/Entities/LabNotebookEntryContent/EntityAttribute.py +85 -0
  104. LOGS/Entities/LabNotebookEntryContent/EntryContentBlockquote.py +13 -0
  105. LOGS/Entities/LabNotebookEntryContent/EntryContentBulletList.py +17 -0
  106. LOGS/Entities/LabNotebookEntryContent/EntryContentCallout.py +40 -0
  107. LOGS/Entities/LabNotebookEntryContent/EntryContentContentPlaceholderNode.py +31 -0
  108. LOGS/Entities/LabNotebookEntryContent/EntryContentConverter.py +207 -0
  109. LOGS/Entities/LabNotebookEntryContent/EntryContentDocument.py +8 -0
  110. LOGS/Entities/LabNotebookEntryContent/EntryContentEntity.py +13 -0
  111. LOGS/Entities/LabNotebookEntryContent/EntryContentEntityMention.py +31 -0
  112. LOGS/Entities/LabNotebookEntryContent/EntryContentHeading.py +33 -0
  113. LOGS/Entities/LabNotebookEntryContent/EntryContentHorizontalRule.py +12 -0
  114. LOGS/Entities/LabNotebookEntryContent/EntryContentItem.py +37 -0
  115. LOGS/Entities/LabNotebookEntryContent/EntryContentListItem.py +49 -0
  116. LOGS/Entities/LabNotebookEntryContent/EntryContentOrderedList.py +31 -0
  117. LOGS/Entities/LabNotebookEntryContent/EntryContentParagraph.py +13 -0
  118. LOGS/Entities/LabNotebookEntryContent/EntryContentTable.py +17 -0
  119. LOGS/Entities/LabNotebookEntryContent/EntryContentTableCell.py +40 -0
  120. LOGS/Entities/LabNotebookEntryContent/EntryContentTableRow.py +8 -0
  121. LOGS/Entities/LabNotebookEntryContent/EntryContentTaskList.py +17 -0
  122. LOGS/Entities/LabNotebookEntryContent/EntryContentTaskListItem.py +31 -0
  123. LOGS/Entities/LabNotebookEntryContent/EntryContentText.py +33 -0
  124. LOGS/Entities/LabNotebookEntryContent/IEntryContentWithAttribute.py +23 -0
  125. LOGS/Entities/LabNotebookEntryContent/IEntryContentWithContent.py +38 -0
  126. LOGS/Entities/LabNotebookEntryContent/IEntryContentWithTextAttribute.py +16 -0
  127. LOGS/Entities/LabNotebookEntryContent/TextAttribute.py +46 -0
  128. LOGS/Entities/LabNotebookEntryContent/TextMarkAtributes.py +64 -0
  129. LOGS/Entities/LabNotebookEntryContent/TextMarkConverter.py +45 -0
  130. LOGS/Entities/LabNotebookEntryContent/TextMarks.py +71 -0
  131. LOGS/Entities/LabNotebookEntryContent/__init__.py +34 -0
  132. LOGS/Entities/LabNotebookEntryMinimal.py +8 -0
  133. LOGS/Entities/LabNotebookEntryRequestParameter.py +59 -0
  134. LOGS/Entities/LabNotebookExperiment.py +58 -0
  135. LOGS/Entities/LabNotebookExperimentMinimal.py +8 -0
  136. LOGS/Entities/LabNotebookExperimentRequestParameter.py +52 -0
  137. LOGS/Entities/LabNotebookExperiments.py +16 -0
  138. LOGS/Entities/LabNotebookMinimal.py +8 -0
  139. LOGS/Entities/LabNotebookModels.py +14 -0
  140. LOGS/Entities/LabNotebookRequestParameter.py +42 -0
  141. LOGS/Entities/LabNotebookTemplate.py +42 -0
  142. LOGS/Entities/LabNotebookTemplateMinimal.py +8 -0
  143. LOGS/Entities/LabNotebookTemplateRequestParameter.py +38 -0
  144. LOGS/Entities/LabNotebookTemplates.py +16 -0
  145. LOGS/Entities/LabNotebooks.py +12 -0
  146. LOGS/Entities/Method.py +66 -0
  147. LOGS/Entities/MethodMinimal.py +8 -0
  148. LOGS/Entities/MethodRequestParameter.py +16 -0
  149. LOGS/Entities/Methods.py +12 -0
  150. LOGS/Entities/Origin.py +53 -0
  151. LOGS/Entities/OriginMinimal.py +8 -0
  152. LOGS/Entities/OriginRequestParameter.py +28 -0
  153. LOGS/Entities/Origins.py +12 -0
  154. LOGS/Entities/ParserLog.py +49 -0
  155. LOGS/Entities/Permission.py +9 -0
  156. LOGS/Entities/Person.py +145 -0
  157. LOGS/Entities/PersonCategory.py +12 -0
  158. LOGS/Entities/PersonMinimal.py +8 -0
  159. LOGS/Entities/PersonRequestParameter.py +58 -0
  160. LOGS/Entities/Persons.py +12 -0
  161. LOGS/Entities/Project.py +52 -0
  162. LOGS/Entities/ProjectMinimal.py +8 -0
  163. LOGS/Entities/ProjectPersonPermission.py +102 -0
  164. LOGS/Entities/ProjectRequestParameter.py +58 -0
  165. LOGS/Entities/Projects.py +12 -0
  166. LOGS/Entities/Role.py +94 -0
  167. LOGS/Entities/RoleMinimal.py +8 -0
  168. LOGS/Entities/RoleRequestParameter.py +40 -0
  169. LOGS/Entities/Roles.py +12 -0
  170. LOGS/Entities/RunState.py +9 -0
  171. LOGS/Entities/Sample.py +53 -0
  172. LOGS/Entities/SampleMinimal.py +8 -0
  173. LOGS/Entities/SampleRequestParameter.py +54 -0
  174. LOGS/Entities/Samples.py +12 -0
  175. LOGS/Entities/SharedContent.py +87 -0
  176. LOGS/Entities/SharedContentMinimal.py +8 -0
  177. LOGS/Entities/SharedContentRequestParameter.py +38 -0
  178. LOGS/Entities/SharedContents.py +12 -0
  179. LOGS/Entities/Signature.py +60 -0
  180. LOGS/Entities/Track.py +93 -0
  181. LOGS/Entities/TrackData.py +20 -0
  182. LOGS/Entities/TrackImage.py +21 -0
  183. LOGS/Entities/TrackImageData.py +20 -0
  184. LOGS/Entities/TrackMatrix.py +28 -0
  185. LOGS/Entities/TrackMatrixData.py +22 -0
  186. LOGS/Entities/TrackSettings.py +55 -0
  187. LOGS/Entities/TrackTable.py +21 -0
  188. LOGS/Entities/TrackTableData.py +22 -0
  189. LOGS/Entities/TrackXY.py +40 -0
  190. LOGS/Entities/TrackXYComplex.py +51 -0
  191. LOGS/Entities/TrackXYComplexData.py +50 -0
  192. LOGS/Entities/TrackXYData.py +31 -0
  193. LOGS/Entities/Vendor.py +40 -0
  194. LOGS/Entities/VendorMinimal.py +8 -0
  195. LOGS/Entities/VendorRequestParameter.py +17 -0
  196. LOGS/Entities/Vendors.py +12 -0
  197. LOGS/Entities/__init__.py +118 -0
  198. LOGS/Entity/ConnectedEntity.py +170 -0
  199. LOGS/Entity/Entity.py +203 -0
  200. LOGS/Entity/EntityConnector.py +70 -0
  201. LOGS/Entity/EntityIterator.py +263 -0
  202. LOGS/Entity/EntityMinimal.py +141 -0
  203. LOGS/Entity/EntityMinimalWithIntId.py +36 -0
  204. LOGS/Entity/EntityMinimalWithStrId.py +36 -0
  205. LOGS/Entity/EntityMinimalWithType.py +47 -0
  206. LOGS/Entity/EntityRequestParameter.py +104 -0
  207. LOGS/Entity/EntitySortBy.py +69 -0
  208. LOGS/Entity/EntityWithIntId.py +26 -0
  209. LOGS/Entity/EntityWithStrId.py +26 -0
  210. LOGS/Entity/IGenericEntityOrderBy.py +55 -0
  211. LOGS/Entity/IdIterator.py +207 -0
  212. LOGS/Entity/SerializableContent.py +834 -0
  213. LOGS/Entity/__init__.py +23 -0
  214. LOGS/Interfaces/ICustomFieldValue.py +92 -0
  215. LOGS/Interfaces/ICustomSectionValue.py +161 -0
  216. LOGS/Interfaces/ICustomTypeValue.py +152 -0
  217. LOGS/Interfaces/ICustomValue.py +28 -0
  218. LOGS/Interfaces/IEntityInterface.py +7 -0
  219. LOGS/Interfaces/IEntryRecord.py +57 -0
  220. LOGS/Interfaces/IHierarchicalEntity.py +41 -0
  221. LOGS/Interfaces/IHierarchyType.py +63 -0
  222. LOGS/Interfaces/ILockableEntity.py +52 -0
  223. LOGS/Interfaces/IModificationRecord.py +56 -0
  224. LOGS/Interfaces/INamedEntity.py +25 -0
  225. LOGS/Interfaces/IOwnedEntity.py +27 -0
  226. LOGS/Interfaces/IPaginationRequest.py +11 -0
  227. LOGS/Interfaces/IPermissionedEntity.py +72 -0
  228. LOGS/Interfaces/IProjectBased.py +27 -0
  229. LOGS/Interfaces/ISessionedEntity.py +59 -0
  230. LOGS/Interfaces/ISignableEntity.py +49 -0
  231. LOGS/Interfaces/ISoftDeletable.py +28 -0
  232. LOGS/Interfaces/ITypedEntity.py +129 -0
  233. LOGS/Interfaces/IUniqueEntity.py +61 -0
  234. LOGS/Interfaces/IVersionedEntity.py +39 -0
  235. LOGS/Interfaces/__init__.py +7 -0
  236. LOGS/LOGS.py +1436 -0
  237. LOGS/LOGSConnection.py +647 -0
  238. LOGS/LOGSOptions.py +11 -0
  239. LOGS/Parameters/Color.py +92 -0
  240. LOGS/Parameters/ParameterBase.py +55 -0
  241. LOGS/Parameters/ParameterConverter.py +24 -0
  242. LOGS/Parameters/ParameterElement.py +99 -0
  243. LOGS/Parameters/ParameterList.py +52 -0
  244. LOGS/Parameters/ParameterTable.py +64 -0
  245. LOGS/Parameters/__init__.py +13 -0
  246. LOGS/ServerMetaData.py +120 -0
  247. LOGS/__init__.py +12 -0
  248. logs_py-4.0.7.dist-info/METADATA +51 -0
  249. logs_py-4.0.7.dist-info/RECORD +251 -0
  250. logs_py-4.0.7.dist-info/WHEEL +5 -0
  251. logs_py-4.0.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,108 @@
1
+ from typing import Literal, Optional, Union
2
+
3
+ from LOGS.Entities.FormattedTable.DatatypeFormattedTableSettings import (
4
+ DatatypeFormattedTableSettings,
5
+ )
6
+ from LOGS.Entity.SerializableContent import SerializableContent
7
+
8
+ _VTypeType = Literal["int", "float", "str", "bool"]
9
+ _ValueType = Union[str, int, float, bool, None]
10
+
11
+
12
+ class DatatypeFormattedTableCell(SerializableContent):
13
+ __vtype = {"int": int, "float": float, "str": str, "bool": bool}
14
+
15
+ _id: str = ""
16
+ _type: str = "formatted_table_cell"
17
+ _value: Optional[_ValueType] = None
18
+ _vtype: _VTypeType = "str"
19
+ _row: int = 0
20
+ _column: int = 0
21
+ _settings: Optional[DatatypeFormattedTableSettings] = None
22
+
23
+ @property
24
+ def type(self) -> str:
25
+ return self._type
26
+
27
+ @type.setter
28
+ def type(self, value):
29
+ self._type = value
30
+
31
+ @property
32
+ def name(self) -> str:
33
+ return self._name
34
+
35
+ @name.setter
36
+ def name(self, value):
37
+ self._name = value
38
+
39
+ @property
40
+ def value(self) -> _ValueType:
41
+ return self._value
42
+
43
+ @value.setter
44
+ def value(self, value):
45
+ vtype = self.vtype if self.vtype else type(value).__name__
46
+
47
+ converter = self.__vtype.get(vtype, None)
48
+ if converter:
49
+ try:
50
+ self._value = converter(value)
51
+ self._vtype = vtype
52
+ except:
53
+ raise Exception(
54
+ "ERROR: could not convert "
55
+ + "' value '"
56
+ + value
57
+ + "' to type '"
58
+ + value
59
+ + "'"
60
+ )
61
+ else:
62
+ raise Exception(
63
+ "Unknown vtype %a. (Expected one of '%s')"
64
+ % (vtype, ", ".join(self.__vtype.keys()))
65
+ )
66
+
67
+ @property
68
+ def vtype(self) -> _VTypeType:
69
+ return self._vtype
70
+
71
+ @vtype.setter
72
+ def vtype(self, value):
73
+ if value not in self.__vtype:
74
+ raise Exception(
75
+ "Unknown vtype %a. (Expected one of '%s')"
76
+ % (value, ", ".join(self.__vtype.keys()))
77
+ )
78
+ self._vtype = value
79
+
80
+ @property
81
+ def row(self) -> int:
82
+ return self._row
83
+
84
+ @row.setter
85
+ def row(self, value):
86
+ self._row = value
87
+
88
+ @property
89
+ def column(self) -> int:
90
+ return self._column
91
+
92
+ @column.setter
93
+ def column(self, value):
94
+ self._column = value
95
+
96
+ @property
97
+ def id(self) -> str:
98
+ return f"{self.row}x{self.column}"
99
+
100
+ @property
101
+ def settings(self) -> Optional[DatatypeFormattedTableSettings]:
102
+ return self._settings
103
+
104
+ @settings.setter
105
+ def settings(self, value):
106
+ self._settings = self.checkAndConvert(
107
+ value, fieldName="settings", fieldType=DatatypeFormattedTableSettings
108
+ )
@@ -0,0 +1,11 @@
1
+ from typing import Dict, List, Optional
2
+
3
+ from LOGS.Entity.SerializableContent import SerializableClass
4
+
5
+
6
+ class DatatypeFormattedTableSettings(SerializableClass):
7
+ _type: str = "formatted_table"
8
+ _name: Optional[str] = None
9
+ _id: str = ""
10
+ _cells: List[str] = []
11
+ _cellIds: Dict[str, str] = {}
@@ -0,0 +1,9 @@
1
+ """
2
+ This package is written for the LOGS Repository.
3
+
4
+ It's objects can be used to write your own dataset parser.
5
+
6
+ License:
7
+ Permission to use this libraray and all of its contents is
8
+ strictly permitted to the Signals Company.
9
+ """
@@ -0,0 +1,15 @@
1
+ from typing import Optional
2
+
3
+ from LOGS.Entity.SerializableContent import SerializableContent
4
+
5
+
6
+ class HierarchyLeaf(SerializableContent):
7
+ _track: Optional[str] = None
8
+
9
+ @property
10
+ def track(self) -> Optional[str]:
11
+ return self._track
12
+
13
+ @track.setter
14
+ def track(self, value):
15
+ self._track = self.checkAndConvertNullable(value, str, "track")
@@ -0,0 +1,40 @@
1
+ from typing import Optional, Sequence, Union
2
+
3
+ from LOGS.Entities.HierarchyLeaf import HierarchyLeaf
4
+ from LOGS.Entity.SerializableContent import SerializableContent
5
+
6
+
7
+ class HierarchyNode(SerializableContent):
8
+ _name: Optional[str] = None
9
+ _content: Optional[Sequence[Union["HierarchyNode", HierarchyLeaf]]] = None
10
+
11
+ def _converter(self, value):
12
+ if isinstance(value, dict) and "type" in value:
13
+ type = value["type"]
14
+ if type == "node":
15
+ return self.checkAndConvert(value, HierarchyNode, "node.content")
16
+ elif type == "leaf":
17
+ return self.checkAndConvert(value, HierarchyLeaf, "leaf")
18
+ return None
19
+
20
+ @property
21
+ def name(self) -> Optional[str]:
22
+ return self._name
23
+
24
+ @name.setter
25
+ def name(self, value):
26
+ self._name = self.checkAndConvertNullable(value, str, "name")
27
+
28
+ @property
29
+ def content(self) -> Optional[Sequence[Union["HierarchyNode", HierarchyLeaf]]]:
30
+ return self._content
31
+
32
+ @content.setter
33
+ def content(self, value):
34
+ l = self.checkListAndConvertNullable(
35
+ value,
36
+ fieldType=HierarchyNode,
37
+ converter=self._converter,
38
+ fieldName="content",
39
+ )
40
+ self._content = [c for c in l if c]
@@ -0,0 +1,19 @@
1
+ from typing import Any, Optional, cast
2
+
3
+ from LOGS.Auxiliary.Exceptions import IllegalFieldValueException
4
+ from LOGS.Interfaces.IEntityInterface import IEntityInterface
5
+
6
+
7
+ class ILiteraryTypedEntity(IEntityInterface):
8
+ _type: str = cast(Any, None)
9
+
10
+ @property
11
+ def type(self) -> Optional[str]:
12
+ return self._type
13
+
14
+ @type.setter
15
+ def type(self, value):
16
+ if value != self._type:
17
+ raise IllegalFieldValueException(
18
+ self, "type", value, f"Only value '{self._type}' allowed."
19
+ )
@@ -0,0 +1,102 @@
1
+ from typing import TYPE_CHECKING, Optional
2
+
3
+ from LOGS.Auxiliary.Decorators import Endpoint
4
+ from LOGS.Auxiliary.MinimalModelGenerator import MinimalModelGenerator
5
+ from LOGS.Entity.EntityWithIntId import IEntityWithIntId
6
+ from LOGS.Interfaces.IEntryRecord import IEntryRecord
7
+ from LOGS.Interfaces.IHierarchicalEntity import IHierarchicalEntity
8
+ from LOGS.Interfaces.ILockableEntity import ILockableEntity
9
+ from LOGS.Interfaces.IModificationRecord import IModificationRecord
10
+ from LOGS.Interfaces.INamedEntity import INamedEntity
11
+ from LOGS.Interfaces.IPermissionedEntity import IGenericPermissionEntity
12
+ from LOGS.Interfaces.IProjectBased import IProjectBased
13
+ from LOGS.Interfaces.ISignableEntity import ISignableEntity
14
+ from LOGS.Interfaces.ISoftDeletable import ISoftDeletable
15
+ from LOGS.Interfaces.ITypedEntity import ITypedEntity
16
+ from LOGS.Interfaces.IUniqueEntity import IUniqueEntity
17
+
18
+ if TYPE_CHECKING:
19
+ from LOGS.Entities.InventoryItemMinimal import InventoryItemMinimal
20
+
21
+
22
+ @Endpoint("inventory_items")
23
+ class InventoryItem(
24
+ IEntityWithIntId,
25
+ IUniqueEntity,
26
+ INamedEntity,
27
+ IEntryRecord,
28
+ IModificationRecord,
29
+ ISoftDeletable,
30
+ ILockableEntity,
31
+ IGenericPermissionEntity,
32
+ ITypedEntity,
33
+ IProjectBased,
34
+ IHierarchicalEntity,
35
+ ISignableEntity,
36
+ ):
37
+
38
+ _rootCustomType: Optional["InventoryItemMinimal"] = None
39
+ _isRootItem: Optional[bool] = None
40
+ _isHierarchyItem: Optional[bool] = None
41
+
42
+ _isDeletedViaHierarchy: Optional[bool] = None
43
+ _isLockedViaHierarchy: Optional[bool] = None
44
+ _isSignedViaHierarchy: Optional[bool] = None
45
+
46
+ @property
47
+ def rootCustomType(self) -> Optional["InventoryItemMinimal"]:
48
+ return self._rootCustomType
49
+
50
+ @rootCustomType.setter
51
+ def rootCustomType(self, value):
52
+ self._rootCustomType = MinimalModelGenerator.MinimalFromSingle(
53
+ value, "InventoryItemMinimal", "rootCustomType", self._getConnection()
54
+ )
55
+
56
+ @property
57
+ def isRootItem(self) -> Optional[bool]:
58
+ return self._isRootItem
59
+
60
+ @isRootItem.setter
61
+ def isRootItem(self, value):
62
+ self._isRootItem = self.checkAndConvertNullable(value, bool, "isRootItem")
63
+
64
+ @property
65
+ def isHierarchyItem(self) -> Optional[bool]:
66
+ return self._isHierarchyItem
67
+
68
+ @isHierarchyItem.setter
69
+ def isHierarchyItem(self, value):
70
+ self._isHierarchyItem = self.checkAndConvertNullable(
71
+ value, bool, "isHierarchyItem"
72
+ )
73
+
74
+ @property
75
+ def isDeletedViaHierarchy(self) -> Optional[bool]:
76
+ return self._isDeletedViaHierarchy
77
+
78
+ @isDeletedViaHierarchy.setter
79
+ def isDeletedViaHierarchy(self, value):
80
+ self._isDeletedViaHierarchy = self.checkAndConvertNullable(
81
+ value, bool, "isDeletedViaHierarchy"
82
+ )
83
+
84
+ @property
85
+ def isLockedViaHierarchy(self) -> Optional[bool]:
86
+ return self._isLockedViaHierarchy
87
+
88
+ @isLockedViaHierarchy.setter
89
+ def isLockedViaHierarchy(self, value):
90
+ self._isLockedViaHierarchy = self.checkAndConvertNullable(
91
+ value, bool, "isLockedViaHierarchy"
92
+ )
93
+
94
+ @property
95
+ def isSignedViaHierarchy(self) -> Optional[bool]:
96
+ return self._isSignedViaHierarchy
97
+
98
+ @isSignedViaHierarchy.setter
99
+ def isSignedViaHierarchy(self, value):
100
+ self._isSignedViaHierarchy = self.checkAndConvertNullable(
101
+ value, bool, "isSignedViaHierarchy"
102
+ )
@@ -0,0 +1,25 @@
1
+ from typing import Optional
2
+
3
+ from LOGS.Auxiliary.Decorators import FullModel
4
+ from LOGS.Entities.InventoryItem import InventoryItem
5
+ from LOGS.Entity.EntityMinimalWithIntId import EntityMinimalWithIntId
6
+
7
+
8
+ @FullModel(InventoryItem)
9
+ class InventoryItemMinimal(EntityMinimalWithIntId[InventoryItem]):
10
+ _inventoryName: Optional[str] = None
11
+
12
+ @property
13
+ def inventoryName(self) -> Optional[str]:
14
+ return self._inventoryName
15
+
16
+ @inventoryName.setter
17
+ def inventoryName(self, value):
18
+ self._inventoryName = self.checkAndConvert(
19
+ value, str, "inventoryName", allowNone=True
20
+ )
21
+
22
+ def __str__(self):
23
+ s = f" class:'{self.inventoryName}'" if self.inventoryName else ""
24
+ s += " name:'%s'" % (self.name if self.name else "")
25
+ return "<%s id:%s%s>" % (type(self).__name__, str(self.id), s)
@@ -0,0 +1,58 @@
1
+ from dataclasses import dataclass, field
2
+ from typing import List, Optional, Type, cast
3
+
4
+ from typing_extensions import Self
5
+
6
+ from LOGS.Entity.EntityRequestParameter import EntityRequestParameter
7
+ from LOGS.Entity.IGenericEntityOrderBy import (
8
+ IEntryRecordSortingOptions,
9
+ IGenericEntitySortingOptions,
10
+ IModificationRecordSortingOptions,
11
+ INamedEntitySortingOptions,
12
+ ITypedEntitySortingOptions,
13
+ )
14
+ from LOGS.Interfaces.IEntryRecord import IEntryRecordRequest
15
+ from LOGS.Interfaces.IHierarchicalEntity import IHierarchicalEntityRequest
16
+ from LOGS.Interfaces.ILockableEntity import ILockableEntityRequest
17
+ from LOGS.Interfaces.IModificationRecord import IModificationRecordRequest
18
+ from LOGS.Interfaces.IPaginationRequest import IPaginationRequest
19
+ from LOGS.Interfaces.IProjectBased import IProjectBasedRequest
20
+ from LOGS.Interfaces.ISignableEntity import ISignableEntityRequest
21
+ from LOGS.Interfaces.ISoftDeletable import ISoftDeletableRequest
22
+ from LOGS.Interfaces.ITypedEntity import ITypedEntityRequest
23
+
24
+
25
+ class InventoryItemsSortingOptions(
26
+ IGenericEntitySortingOptions,
27
+ INamedEntitySortingOptions,
28
+ IEntryRecordSortingOptions,
29
+ IModificationRecordSortingOptions,
30
+ ITypedEntitySortingOptions,
31
+ ):
32
+ INVENTORY_NAME: Self = cast(Self, "INVENTORY_NAME")
33
+ NUMBER_OF_ITEMS: Self = cast(Self, "NUMBER_OF_ITEMS")
34
+ LAYOUT: Self = cast(Self, "LAYOUT")
35
+
36
+
37
+ @dataclass
38
+ class InventoryItemRequestParameter(
39
+ EntityRequestParameter[InventoryItemsSortingOptions],
40
+ IPaginationRequest,
41
+ IEntryRecordRequest,
42
+ IModificationRecordRequest,
43
+ ISoftDeletableRequest,
44
+ IHierarchicalEntityRequest,
45
+ IProjectBasedRequest,
46
+ ITypedEntityRequest,
47
+ ILockableEntityRequest,
48
+ ISignableEntityRequest,
49
+ ):
50
+ _orderByType: Type[InventoryItemsSortingOptions] = field(
51
+ default=InventoryItemsSortingOptions, init=False
52
+ )
53
+
54
+ childrenOfParentIds: Optional[List[int]] = None
55
+ descendantsOfIds: Optional[List[int]] = None
56
+ excludeHierarchyChildren: Optional[bool] = None
57
+ isHierarchyRoot: Optional[bool] = None
58
+ inventoryItemIds: Optional[List[int]] = None
@@ -0,0 +1,12 @@
1
+ from LOGS.Auxiliary.Decorators import Endpoint
2
+ from LOGS.Entities.InventoryItem import InventoryItem
3
+ from LOGS.Entities.InventoryItemRequestParameter import InventoryItemRequestParameter
4
+ from LOGS.Entity.EntityIterator import EntityIterator
5
+
6
+
7
+ @Endpoint("inventory_items")
8
+ class InventoryItems(EntityIterator[InventoryItem, InventoryItemRequestParameter]):
9
+ """LOGS connected InventoryItems iterator"""
10
+
11
+ _generatorType = InventoryItem
12
+ _parameterType = InventoryItemRequestParameter
@@ -0,0 +1,33 @@
1
+ from typing import Optional
2
+
3
+ from LOGS.Auxiliary.Decorators import Endpoint
4
+ from LOGS.Entity.EntityWithIntId import IEntityWithIntId
5
+ from LOGS.Interfaces.ILockableEntity import ILockableEntity
6
+ from LOGS.Interfaces.INamedEntity import INamedEntity
7
+ from LOGS.Interfaces.IPermissionedEntity import IGenericPermissionEntity
8
+ from LOGS.Interfaces.IProjectBased import IProjectBased
9
+ from LOGS.Interfaces.ISignableEntity import ISignableEntity
10
+ from LOGS.Interfaces.IUniqueEntity import IUniqueEntity
11
+ from LOGS.Interfaces.IVersionedEntity import IVersionedEntity
12
+
13
+
14
+ @Endpoint("lab_notebooks")
15
+ class LabNotebook(
16
+ IEntityWithIntId,
17
+ IUniqueEntity,
18
+ INamedEntity,
19
+ IVersionedEntity,
20
+ IProjectBased,
21
+ IGenericPermissionEntity,
22
+ ILockableEntity,
23
+ ISignableEntity,
24
+ ):
25
+ _description: Optional[str] = None
26
+
27
+ @property
28
+ def description(self) -> Optional[str]:
29
+ return self._description
30
+
31
+ @description.setter
32
+ def description(self, value: str):
33
+ self._description = self.checkAndConvertNullable(value, str, "description")
@@ -0,0 +1,16 @@
1
+ from LOGS.Auxiliary.Decorators import Endpoint
2
+ from LOGS.Entities.LabNotebookEntry import LabNotebookEntry
3
+ from LOGS.Entities.LabNotebookEntryRequestParameter import (
4
+ LabNotebookEntryRequestParameter,
5
+ )
6
+ from LOGS.Entity.EntityIterator import EntityIterator
7
+
8
+
9
+ @Endpoint("lab_notebook_entries")
10
+ class LabNotebookEntries(
11
+ EntityIterator[LabNotebookEntry, LabNotebookEntryRequestParameter]
12
+ ):
13
+ """LOGS connected LabNotebookEntry iterator"""
14
+
15
+ _generatorType = LabNotebookEntry
16
+ _parameterType = LabNotebookEntryRequestParameter
@@ -0,0 +1,106 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ from LOGS.Auxiliary.Decorators import Endpoint
5
+ from LOGS.Auxiliary.Exceptions import EntityFetchingException, EntityIncompleteException
6
+ from LOGS.Entities.LabNotebookEntryContent.EntryContentConverter import (
7
+ EntryContentConverter,
8
+ )
9
+ from LOGS.Entities.LabNotebookEntryContent.EntryContentDocument import (
10
+ EntryContentDocument,
11
+ )
12
+ from LOGS.Entity.EntityMinimalWithIntId import EntityMinimalWithIntId
13
+ from LOGS.Entity.EntityWithIntId import IEntityWithIntId
14
+ from LOGS.Interfaces.INamedEntity import INamedEntity
15
+ from LOGS.Interfaces.IPermissionedEntity import IGenericPermissionEntity
16
+ from LOGS.Interfaces.IUniqueEntity import IUniqueEntity
17
+ from LOGS.Interfaces.IVersionedEntity import IVersionedEntity
18
+
19
+
20
+ @Endpoint("lab_notebook_entries")
21
+ class LabNotebookEntry(
22
+ IEntityWithIntId,
23
+ IUniqueEntity,
24
+ INamedEntity,
25
+ IVersionedEntity,
26
+ IGenericPermissionEntity,
27
+ ):
28
+ _noContent: bool = True
29
+
30
+ _alias: Optional[str] = None
31
+ _labNotebook: Optional[EntityMinimalWithIntId] = None
32
+ _labNotebookExperiment: Optional[EntityMinimalWithIntId] = None
33
+ _entryDate: Optional[datetime] = None
34
+ _content: Optional[EntryContentDocument] = None
35
+
36
+ def fromDict(self, ref) -> None:
37
+ if isinstance(ref, dict):
38
+ if "name" in ref and ref["name"]:
39
+ ref["name"] = ref["name"].replace(" > ", "_")
40
+
41
+ super().fromDict(ref)
42
+
43
+ def fetchContent(self):
44
+ connection, endpoint, id = self._getConnectionData()
45
+
46
+ content, responseError = connection.getEndpoint(endpoint + [id, "content"])
47
+ if responseError:
48
+ raise EntityFetchingException(entity=self, responseError=responseError)
49
+
50
+ self.content = content
51
+ self._noContent = False
52
+
53
+ @property
54
+ def labNotebook(self) -> Optional[EntityMinimalWithIntId]:
55
+ return self._labNotebook
56
+
57
+ @labNotebook.setter
58
+ def labNotebook(self, value):
59
+ self._labNotebook = self.checkAndConvertNullable(
60
+ value, EntityMinimalWithIntId, "labNotebook"
61
+ )
62
+
63
+ @property
64
+ def labNotebookExperiment(self) -> Optional[EntityMinimalWithIntId]:
65
+ return self._labNotebookExperiment
66
+
67
+ @labNotebookExperiment.setter
68
+ def labNotebookExperiment(self, value):
69
+ self._labNotebookExperiment = self.checkAndConvertNullable(
70
+ value, EntityMinimalWithIntId, "labNotebookExperiment"
71
+ )
72
+
73
+ @property
74
+ def entryDate(self) -> Optional[datetime]:
75
+ return self._entryDate
76
+
77
+ @entryDate.setter
78
+ def entryDate(self, value):
79
+ self._entryDate = self.checkAndConvertNullable(value, datetime, "entryDate")
80
+
81
+ @property
82
+ def content(self) -> Optional[EntryContentDocument]:
83
+ if self._noContent:
84
+ raise EntityIncompleteException(
85
+ self,
86
+ parameterName="content",
87
+ functionName=f"{self.fetchContent.__name__}()",
88
+ hasFetchFull=False,
89
+ )
90
+ return self._content
91
+
92
+ @content.setter
93
+ def content(self, value):
94
+ if value:
95
+ self._noContent = False
96
+ self._content = EntryContentConverter[EntryContentDocument].convert(
97
+ value, fieldName="content"
98
+ )
99
+
100
+ @property
101
+ def alias(self) -> Optional[str]:
102
+ return self._alias
103
+
104
+ @alias.setter
105
+ def alias(self, value):
106
+ self._alias = self.checkAndConvertNullable(value, str, "alias")
@@ -0,0 +1,15 @@
1
+ from typing import Optional
2
+
3
+ from LOGS.Entity.SerializableContent import SerializableContent
4
+
5
+
6
+ class BasicAttribute(SerializableContent):
7
+ _id: Optional[str] = None
8
+
9
+ @property
10
+ def id(self) -> Optional[str]:
11
+ return self._id
12
+
13
+ @id.setter
14
+ def id(self, value):
15
+ self._id = self.checkAndConvertNullable(value, str, "id")
@@ -0,0 +1,85 @@
1
+ from typing import Optional
2
+
3
+ from LOGS.Entities.LabNotebookEntryContent.BasicAttribute import BasicAttribute
4
+ from LOGS.Entity.SerializableContent import SerializableClass
5
+
6
+
7
+ class EntityAttributeSettings(SerializableClass):
8
+ showHeader: Optional[bool] = None
9
+ collapsible: Optional[bool] = None
10
+ defaultCollapsed: Optional[bool] = None
11
+
12
+
13
+ class EntityAttributeAdditionalSettings(SerializableClass):
14
+ height: Optional[int] = None
15
+ showViewer: Optional[bool] = None
16
+
17
+
18
+ class EntityAttribute(BasicAttribute):
19
+ _version: Optional[int] = None
20
+ _entityId: Optional[int] = None
21
+ _settings: Optional[EntityAttributeSettings] = None
22
+ _additionalSettings: Optional[EntityAttributeAdditionalSettings] = None
23
+ _entityUuid: Optional[str] = None
24
+ _entityTypeId: Optional[str] = None
25
+ _style: Optional[str] = None
26
+
27
+ @property
28
+ def style(self) -> Optional[str]:
29
+ return self._style
30
+
31
+ @style.setter
32
+ def style(self, value):
33
+ self._style = self.checkAndConvertNullable(value, str, "style")
34
+
35
+ @property
36
+ def entityTypeId(self) -> Optional[str]:
37
+ return self._entityTypeId
38
+
39
+ @entityTypeId.setter
40
+ def entityTypeId(self, value):
41
+ self._entityTypeId = self.checkAndConvertNullable(value, str, "entityTypeId")
42
+
43
+ @property
44
+ def entityUuid(self) -> Optional[str]:
45
+ return self._entityUuid
46
+
47
+ @entityUuid.setter
48
+ def entityUuid(self, value):
49
+ self._entityUuid = self.checkAndConvertNullable(value, str, "entityUuid")
50
+
51
+ @property
52
+ def version(self) -> Optional[int]:
53
+ return self._version
54
+
55
+ @version.setter
56
+ def version(self, value):
57
+ self._version = self.checkAndConvertNullable(value, int, "version")
58
+
59
+ @property
60
+ def entityId(self) -> Optional[int]:
61
+ return self._entityId
62
+
63
+ @entityId.setter
64
+ def entityId(self, value):
65
+ self._entityId = self.checkAndConvertNullable(value, int, "entityId")
66
+
67
+ @property
68
+ def settings(self) -> Optional[EntityAttributeSettings]:
69
+ return self._settings
70
+
71
+ @settings.setter
72
+ def settings(self, value):
73
+ self._settings = self.checkAndConvertNullable(
74
+ value, EntityAttributeSettings, "settings"
75
+ )
76
+
77
+ @property
78
+ def additionalSettings(self) -> Optional[EntityAttributeAdditionalSettings]:
79
+ return self._additionalSettings
80
+
81
+ @additionalSettings.setter
82
+ def additionalSettings(self, value):
83
+ self._additionalSettings = self.checkAndConvertNullable(
84
+ value, EntityAttributeAdditionalSettings, "additionalSettings"
85
+ )
@@ -0,0 +1,13 @@
1
+ from LOGS.Entities.LabNotebookEntryContent.EntryContentItem import EntryContentItem
2
+ from LOGS.Entities.LabNotebookEntryContent.IEntryContentWithContent import (
3
+ IEntryContentWithContent,
4
+ )
5
+ from LOGS.Entities.LabNotebookEntryContent.IEntryContentWithTextAttribute import (
6
+ IEntryContentWithTextAttribute,
7
+ )
8
+
9
+
10
+ class EntryContentBlockquote(
11
+ EntryContentItem, IEntryContentWithContent, IEntryContentWithTextAttribute
12
+ ):
13
+ _type = "blockquote"