logs-py 2.9.5__py3-none-any.whl → 2.9.6__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.
Potentially problematic release.
This version of logs-py might be problematic. Click here for more details.
- LOGS/Entities/CustomField.py +2 -2
- LOGS/Entities/Dataset.py +2 -2
- LOGS/Entities/FormatMethod.py +2 -2
- LOGS/Entities/LabNotebookEntry.py +2 -2
- LOGS/Entities/Track.py +2 -2
- LOGS/Entity/SerializeableContent.py +67 -42
- LOGS/Interfaces/IPermissionedEntity.py +3 -3
- LOGS/Interfaces/IRelatedEntity.py +3 -2
- LOGS/LOGS.py +3 -2
- {logs_py-2.9.5.dist-info → logs_py-2.9.6.dist-info}/METADATA +2 -2
- {logs_py-2.9.5.dist-info → logs_py-2.9.6.dist-info}/RECORD +13 -13
- {logs_py-2.9.5.dist-info → logs_py-2.9.6.dist-info}/WHEEL +1 -1
- {logs_py-2.9.5.dist-info → logs_py-2.9.6.dist-info}/top_level.txt +0 -0
LOGS/Entities/CustomField.py
CHANGED
|
@@ -58,13 +58,13 @@ class CustomField(
|
|
|
58
58
|
|
|
59
59
|
super().__init__(connection=connection, id=id, ref=ref)
|
|
60
60
|
|
|
61
|
-
def fromDict(self, ref
|
|
61
|
+
def fromDict(self, ref) -> None:
|
|
62
62
|
if isinstance(ref, dict) and "type" in ref and isinstance(ref["type"], int):
|
|
63
63
|
del ref["type"]
|
|
64
64
|
if isinstance(ref, dict) and "widget" in ref and isinstance(ref["widget"], int):
|
|
65
65
|
del ref["widget"]
|
|
66
66
|
|
|
67
|
-
super().fromDict(ref=ref
|
|
67
|
+
super().fromDict(ref=ref)
|
|
68
68
|
|
|
69
69
|
@classmethod
|
|
70
70
|
def _idFromName(cls, name):
|
LOGS/Entities/Dataset.py
CHANGED
|
@@ -176,7 +176,7 @@ class Dataset(
|
|
|
176
176
|
|
|
177
177
|
self._files = FileEntry.entriesFromFiles(files)
|
|
178
178
|
|
|
179
|
-
def fromDict(self, ref
|
|
179
|
+
def fromDict(self, ref) -> None:
|
|
180
180
|
if isinstance(ref, dict):
|
|
181
181
|
if "parameters" in ref:
|
|
182
182
|
self._parameters = self.checkAndConvertNullable(
|
|
@@ -210,7 +210,7 @@ class Dataset(
|
|
|
210
210
|
)
|
|
211
211
|
self._noInfo = False
|
|
212
212
|
|
|
213
|
-
super().fromDict(ref=ref
|
|
213
|
+
super().fromDict(ref=ref)
|
|
214
214
|
|
|
215
215
|
def fetchZipSize(self):
|
|
216
216
|
connection, endpoint, id = self._getConnectionData()
|
LOGS/Entities/FormatMethod.py
CHANGED
|
@@ -28,11 +28,11 @@ class FormatMethod(EntityWithStrId, INamedEntity):
|
|
|
28
28
|
|
|
29
29
|
super().__init__(ref=ref, id=id, connection=connection)
|
|
30
30
|
|
|
31
|
-
def fromDict(self, ref
|
|
31
|
+
def fromDict(self, ref) -> None:
|
|
32
32
|
if isinstance(ref, dict) and "from" in ref:
|
|
33
33
|
ref["parent"] = ref["from"]
|
|
34
34
|
|
|
35
|
-
super().fromDict(ref=ref
|
|
35
|
+
super().fromDict(ref=ref)
|
|
36
36
|
|
|
37
37
|
@property
|
|
38
38
|
def fullName(self) -> Optional[str]:
|
|
@@ -45,12 +45,12 @@ class LabNotebookEntry(
|
|
|
45
45
|
|
|
46
46
|
super().__init__(ref=ref, id=id, connection=connection)
|
|
47
47
|
|
|
48
|
-
def fromDict(self, ref
|
|
48
|
+
def fromDict(self, ref) -> None:
|
|
49
49
|
if isinstance(ref, dict):
|
|
50
50
|
if "name" in ref:
|
|
51
51
|
ref["name"] = ref["name"].replace(" > ", "_")
|
|
52
52
|
|
|
53
|
-
super().fromDict(ref
|
|
53
|
+
super().fromDict(ref)
|
|
54
54
|
|
|
55
55
|
@property
|
|
56
56
|
def version(self) -> Optional[int]:
|
LOGS/Entities/Track.py
CHANGED
|
@@ -26,7 +26,7 @@ class Track(Generic[_T], ConnectedEntity):
|
|
|
26
26
|
_dataIds: Optional[dict] = None
|
|
27
27
|
_datatracks: Optional[_T] = None
|
|
28
28
|
|
|
29
|
-
def fromDict(self, ref
|
|
29
|
+
def fromDict(self, ref) -> None:
|
|
30
30
|
if isinstance(ref, dict):
|
|
31
31
|
if "data" in ref:
|
|
32
32
|
if "type" in ref:
|
|
@@ -35,7 +35,7 @@ class Track(Generic[_T], ConnectedEntity):
|
|
|
35
35
|
|
|
36
36
|
ref["data"] = None
|
|
37
37
|
|
|
38
|
-
super().fromDict(ref
|
|
38
|
+
super().fromDict(ref)
|
|
39
39
|
|
|
40
40
|
def __str__(self):
|
|
41
41
|
s = (" name:'%s'" % getattr(self, "name")) if hasattr(self, "name") else ""
|
|
@@ -2,7 +2,6 @@ import inspect
|
|
|
2
2
|
import json
|
|
3
3
|
import math
|
|
4
4
|
import random
|
|
5
|
-
from copy import deepcopy
|
|
6
5
|
from datetime import datetime
|
|
7
6
|
from enum import Enum
|
|
8
7
|
from typing import (
|
|
@@ -32,7 +31,12 @@ _T = TypeVar("_T")
|
|
|
32
31
|
class SerializeableContent:
|
|
33
32
|
_noSerialize: List[str] = []
|
|
34
33
|
_typeMapper: Optional[Dict[str, Any]] = None
|
|
35
|
-
|
|
34
|
+
_slack: Dict[str, Any] = {}
|
|
35
|
+
|
|
36
|
+
_planeClass: bool = False
|
|
37
|
+
_includeNone: bool = False
|
|
38
|
+
_debugPrintRef: bool = False
|
|
39
|
+
_includeSlack: bool = False
|
|
36
40
|
|
|
37
41
|
def __init__(self, ref=None):
|
|
38
42
|
if ref != None:
|
|
@@ -45,11 +49,10 @@ class SerializeableContent:
|
|
|
45
49
|
self,
|
|
46
50
|
ref,
|
|
47
51
|
selfClass,
|
|
48
|
-
fromInstance=None,
|
|
49
|
-
fromDict=None,
|
|
50
|
-
formatDict=None,
|
|
51
52
|
convertOtherType: Optional[Tuple[type, Callable[[Any], Any]]] = None,
|
|
52
53
|
):
|
|
54
|
+
if self._debugPrintRef:
|
|
55
|
+
print("FromRef", selfClass.__name__, "\n", self._dictToJson(ref))
|
|
53
56
|
# print("FromRef", selfClass.__name__, self._json_schema)
|
|
54
57
|
|
|
55
58
|
# if not isinstance(ref, (selfClass, dict)) and convertOtherType:
|
|
@@ -58,10 +61,7 @@ class SerializeableContent:
|
|
|
58
61
|
ref = convertOtherType[1](ref)
|
|
59
62
|
|
|
60
63
|
if isinstance(ref, selfClass):
|
|
61
|
-
|
|
62
|
-
fromInstance(ref)
|
|
63
|
-
else:
|
|
64
|
-
self.fromInstance(ref)
|
|
64
|
+
self.fromInstance(ref)
|
|
65
65
|
elif isinstance(ref, dict):
|
|
66
66
|
if hasattr(self, "_typeMapper") and self._typeMapper:
|
|
67
67
|
for k, t in self._typeMapper.items():
|
|
@@ -75,10 +75,7 @@ class SerializeableContent:
|
|
|
75
75
|
elements=ref, fieldName=k, fieldType=t, allowNone=True
|
|
76
76
|
)
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
fromDict(ref)
|
|
80
|
-
else:
|
|
81
|
-
self.fromDict(ref, formatDict=formatDict)
|
|
78
|
+
self.fromDict(ref)
|
|
82
79
|
else:
|
|
83
80
|
types: List[type] = [dict, type(self)]
|
|
84
81
|
if convertOtherType:
|
|
@@ -99,21 +96,22 @@ class SerializeableContent:
|
|
|
99
96
|
attrList = self._getAttrList()
|
|
100
97
|
for k in attrList:
|
|
101
98
|
if hasattr(ref, k):
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
ref = deepcopy(ref)
|
|
107
|
-
ref = formatDict(ref)
|
|
108
|
-
if ref == None:
|
|
109
|
-
ref = {}
|
|
110
|
-
|
|
111
|
-
# if "type" in ref:
|
|
112
|
-
# self.type = ref["type"]
|
|
99
|
+
try:
|
|
100
|
+
setattr(self, k, getattr(ref, k))
|
|
101
|
+
except AttributeError:
|
|
102
|
+
pass
|
|
113
103
|
|
|
114
|
-
|
|
104
|
+
def fromDict(self, ref) -> None:
|
|
115
105
|
# print("ref", ref)
|
|
116
106
|
# print("ref", type(self).__name__)
|
|
107
|
+
if not hasattr(self, "_noSerialize"):
|
|
108
|
+
self._noSerialize = []
|
|
109
|
+
|
|
110
|
+
mappedKey = {
|
|
111
|
+
k: False
|
|
112
|
+
for k, v in ref.items()
|
|
113
|
+
if v is not None and k not in self._noSerialize
|
|
114
|
+
}
|
|
117
115
|
|
|
118
116
|
for k in dir(self):
|
|
119
117
|
# print(
|
|
@@ -123,19 +121,27 @@ class SerializeableContent:
|
|
|
123
121
|
# "->",
|
|
124
122
|
# ref[k] if k in ref else "NULL",
|
|
125
123
|
# )
|
|
126
|
-
|
|
124
|
+
|
|
125
|
+
try:
|
|
126
|
+
hasAttr = hasattr(self, k)
|
|
127
|
+
except (
|
|
128
|
+
EntityIncompleteException
|
|
129
|
+
): # while deserializing we want to ignore incomplete fields
|
|
130
|
+
hasAttr = False
|
|
131
|
+
|
|
132
|
+
if k in ref and hasAttr and not callable(getattr(self, k)):
|
|
127
133
|
try:
|
|
128
134
|
# print(" ", k, "->", ref[k])
|
|
129
135
|
setattr(self, k, ref[k])
|
|
136
|
+
mappedKey[k] = True
|
|
130
137
|
except AttributeError as e:
|
|
131
138
|
# print(f"[{type(self).__name__}] ERROR:", k, "->", ref[k], e)
|
|
132
139
|
pass
|
|
133
140
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
# if
|
|
137
|
-
# print(
|
|
138
|
-
# setattr(self, _k, ref[k])
|
|
141
|
+
self._slack = {k: ref[k] for k, v in mappedKey.items() if not v}
|
|
142
|
+
|
|
143
|
+
# if self._slack:
|
|
144
|
+
# print(type(self).__name__, "->", ", ".join(self._slack.keys()))
|
|
139
145
|
|
|
140
146
|
@classmethod
|
|
141
147
|
def toBaseclassString(cls, obj):
|
|
@@ -148,11 +154,13 @@ class SerializeableContent:
|
|
|
148
154
|
def toString(self):
|
|
149
155
|
return str(self)
|
|
150
156
|
|
|
151
|
-
|
|
152
|
-
def _serializeItem(cls, item):
|
|
157
|
+
def _serializeItem(self, item):
|
|
153
158
|
# print("serialize", item, hasattr(item, "__dict__"))
|
|
154
159
|
if hasattr(item, "toDict"):
|
|
155
|
-
|
|
160
|
+
if self._includeSlack and hasattr(item, "_toDictWithSlack"):
|
|
161
|
+
return item._toDictWithSlack()
|
|
162
|
+
else:
|
|
163
|
+
return item.toDict()
|
|
156
164
|
if isinstance(item, cast(Any, np.float32)):
|
|
157
165
|
return item.item()
|
|
158
166
|
elif hasattr(
|
|
@@ -199,6 +207,13 @@ class SerializeableContent:
|
|
|
199
207
|
|
|
200
208
|
return result
|
|
201
209
|
|
|
210
|
+
def _toDictWithSlack(self):
|
|
211
|
+
tmp = self._includeSlack
|
|
212
|
+
self._includeSlack = True
|
|
213
|
+
result = self.toDict()
|
|
214
|
+
self._includeSlack = tmp
|
|
215
|
+
return result
|
|
216
|
+
|
|
202
217
|
def toDict(self) -> Dict[str, Any]:
|
|
203
218
|
# print("toDict", type(self).__name__)
|
|
204
219
|
if not hasattr(self, "_noSerialize"):
|
|
@@ -233,9 +248,12 @@ class SerializeableContent:
|
|
|
233
248
|
# d[k] = "2021-12-01T00:00:00.000Z"
|
|
234
249
|
elif isinstance(a, Enum):
|
|
235
250
|
d[k] = a.value
|
|
236
|
-
elif a != None:
|
|
251
|
+
elif a != None or self._includeNone:
|
|
237
252
|
d[k] = self._serializeItem(a)
|
|
238
253
|
|
|
254
|
+
if self._includeSlack:
|
|
255
|
+
d.update({k: v for k, v in self._slack.items() if k not in d})
|
|
256
|
+
|
|
239
257
|
return d
|
|
240
258
|
|
|
241
259
|
@classmethod
|
|
@@ -274,8 +292,12 @@ class SerializeableContent:
|
|
|
274
292
|
self.toDict(), indent=indent, sort_keys=sort_keys, compact=compact
|
|
275
293
|
)
|
|
276
294
|
|
|
277
|
-
def printJson(self, validate=False):
|
|
278
|
-
print(
|
|
295
|
+
def printJson(self, indent=2, sort_keys=True, compact=False, validate=False):
|
|
296
|
+
print(
|
|
297
|
+
self.toJson(
|
|
298
|
+
validate=validate, indent=indent, sort_keys=sort_keys, compact=compact
|
|
299
|
+
)
|
|
300
|
+
)
|
|
279
301
|
|
|
280
302
|
@classmethod
|
|
281
303
|
def truncString(cls, text: str, length: int = 30) -> str:
|
|
@@ -515,11 +537,14 @@ class SerializeableContent:
|
|
|
515
537
|
excludeCharacters.append("line feed")
|
|
516
538
|
for k in text.keys():
|
|
517
539
|
if k not in excludeKeys:
|
|
518
|
-
text[k], messages =
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
540
|
+
text[k], messages = cast(
|
|
541
|
+
Any,
|
|
542
|
+
cls.replaceControlCharacters(
|
|
543
|
+
text[k],
|
|
544
|
+
excludeKeys=excludeKeys,
|
|
545
|
+
excludeCharacters=excludeCharacters,
|
|
546
|
+
mergeMessages=mergeMessages,
|
|
547
|
+
),
|
|
523
548
|
)
|
|
524
549
|
if messages:
|
|
525
550
|
for m in messages:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
from typing import TYPE_CHECKING, Optional
|
|
2
|
+
from typing import TYPE_CHECKING, Dict, Optional
|
|
3
3
|
|
|
4
4
|
from LOGS.Auxiliary import Tools
|
|
5
5
|
from LOGS.Interfaces.IEntityInterface import IEntityInterface
|
|
@@ -14,10 +14,10 @@ class IPermissionedEntityRequest:
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class IPermissionedEntity(IEntityInterface):
|
|
17
|
-
_permissions: Optional[
|
|
17
|
+
_permissions: Optional[Dict[str, bool]] = None
|
|
18
18
|
|
|
19
19
|
@property
|
|
20
|
-
def permissions(self) -> Optional[
|
|
20
|
+
def permissions(self) -> Optional[Dict[str, bool]]:
|
|
21
21
|
return self._permissions
|
|
22
22
|
|
|
23
23
|
@permissions.setter
|
|
@@ -14,7 +14,8 @@ _Relations = TypeVar("_Relations", bound=IRelationModel)
|
|
|
14
14
|
|
|
15
15
|
@dataclass
|
|
16
16
|
class IRelatedEntity(Generic[_Relations], IEntityInterface):
|
|
17
|
-
_relationType: Optional[Type[_Relations]] = None
|
|
17
|
+
# The expression here should be _relationType: Optional[Type[_Relations]] = None, but it is not working
|
|
18
|
+
_relationType: Optional[Type] = None
|
|
18
19
|
_relations: Optional[_Relations] = None
|
|
19
20
|
|
|
20
21
|
@property
|
|
@@ -29,6 +30,6 @@ class IRelatedEntity(Generic[_Relations], IEntityInterface):
|
|
|
29
30
|
% (type(self).__name__)
|
|
30
31
|
)
|
|
31
32
|
|
|
32
|
-
self.
|
|
33
|
+
self._relations = Tools.checkAndConvert(
|
|
33
34
|
value, self._relationType, "relations", allowNone=True
|
|
34
35
|
)
|
LOGS/LOGS.py
CHANGED
|
@@ -352,7 +352,8 @@ class LOGS:
|
|
|
352
352
|
raise EntityNotFoundException(entities[0])
|
|
353
353
|
|
|
354
354
|
data, responseError = self._connection.putEndpoint(
|
|
355
|
-
entityType._endpoint + [str(entities[0].id)],
|
|
355
|
+
entityType._endpoint + [str(entities[0].id)],
|
|
356
|
+
data=entities[0]._toDictWithSlack(),
|
|
356
357
|
)
|
|
357
358
|
if (
|
|
358
359
|
isinstance(data, dict)
|
|
@@ -364,7 +365,7 @@ class LOGS:
|
|
|
364
365
|
else:
|
|
365
366
|
data, responseError = self._connection.postEndpoint(
|
|
366
367
|
entityType._endpoint + ["bulk_edit"],
|
|
367
|
-
data=[e.
|
|
368
|
+
data=[e._toDictWithSlack() for e in entities],
|
|
368
369
|
)
|
|
369
370
|
if (
|
|
370
371
|
isinstance(data, dict)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: logs-py
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.6
|
|
4
4
|
Summary: A python interface for the LOGS public API
|
|
5
5
|
Home-page: https://docs.logs-python.com
|
|
6
6
|
Author: Sina Kazemi
|
|
@@ -15,7 +15,7 @@ Requires-Python: >=3.8
|
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
Requires-Dist: numpy
|
|
17
17
|
Requires-Dist: requests
|
|
18
|
-
Requires-Dist: regex
|
|
18
|
+
Requires-Dist: regex>=2019.12.9
|
|
19
19
|
Requires-Dist: Pillow
|
|
20
20
|
Requires-Dist: deprecation
|
|
21
21
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
LOGS/LOGS.py,sha256=
|
|
1
|
+
LOGS/LOGS.py,sha256=rTYbIvms7szm2DxRJyxppxgBWZ6ztUzB6-peARcK02o,41863
|
|
2
2
|
LOGS/LOGSConnection.py,sha256=GOkmFj7CtCinn9SmRkzzdToaZqnmUaiqwuMI0mQGvCo,19845
|
|
3
3
|
LOGS/ServerMetaData.py,sha256=WdXCCiCSFqER6s9c3N3v0O273OvxygxBzmE6_C8FmXs,3361
|
|
4
4
|
LOGS/__init__.py,sha256=faGD87i0eeKbqEq6DTcteF6KoNa2O0BH1RnjxEvuGbQ,253
|
|
@@ -23,7 +23,7 @@ LOGS/Entities/BridgeRelations.py,sha256=nI6mqu_BIDt01tKHKyK38COHhpqrRHCi8wyy9Iyw
|
|
|
23
23
|
LOGS/Entities/BridgeRequestParameter.py,sha256=m0C3iQLYZppFChj4lQ9cteAdDtpDClyrcBM9OAdryHM,838
|
|
24
24
|
LOGS/Entities/BridgeType.py,sha256=YB55JKJtS38fAlRb5T_OIPvT2qTJIzUC6uoC24eq3sE,88
|
|
25
25
|
LOGS/Entities/Bridges.py,sha256=WgspgZ9zXxi9tDPg4JPsDLq-fvNQkiaUbKEfbz1iG7E,420
|
|
26
|
-
LOGS/Entities/CustomField.py,sha256=
|
|
26
|
+
LOGS/Entities/CustomField.py,sha256=wvGcMyjwRku8HhnvPboEkSuG_oUgNeSlzRWm8SQZusM,5179
|
|
27
27
|
LOGS/Entities/CustomFieldEnums.py,sha256=JNvaMmvzDKaoI504XgE8pjKrpzE0sZ6j9jA6fi-tZzM,520
|
|
28
28
|
LOGS/Entities/CustomFieldMinimal.py,sha256=GrfKIeyE1Bp4vvCA1zVoN9Hp73Vlt0Vw7z5wUKBhpvQ,266
|
|
29
29
|
LOGS/Entities/CustomFieldRequestParameter.py,sha256=lIkSRNteqOMFtkfv5c-6MT6FhHDlXlqAQG6NUf5Gb0U,1307
|
|
@@ -37,7 +37,7 @@ LOGS/Entities/DataSourceRelations.py,sha256=eIszpHjZqz6v4WyhaPNu8efSzedsJLNrYR9b
|
|
|
37
37
|
LOGS/Entities/DataSourceRequestParameter.py,sha256=zAfC61NvVt4XO3HhIy1PLViN3AEBJo7Q6Fa_EtyqNvA,1610
|
|
38
38
|
LOGS/Entities/DataSourceStatus.py,sha256=81IAcLhdvkrAxgcL1Hw47aJqiZ0Vb7UnZUj-UEo8wX0,430
|
|
39
39
|
LOGS/Entities/DataSources.py,sha256=UU5ey98_vX4WQknyWITMy-dPOV-wgjblXxu5uXpnVso,481
|
|
40
|
-
LOGS/Entities/Dataset.py,sha256=
|
|
40
|
+
LOGS/Entities/Dataset.py,sha256=V7W2zT6JnCwOUaEvjpiRjF6jygUNE9iqS6JF3-qEkl4,21875
|
|
41
41
|
LOGS/Entities/DatasetCreator.py,sha256=vWTSGk5zM7xXvI8n9mldeS96SN0atF2e04lwol7CWqo,5084
|
|
42
42
|
LOGS/Entities/DatasetInfo.py,sha256=VnobiT04yd9GSZQ6tH8eUrO9jknzfLW9-wvMz-QAhTw,3882
|
|
43
43
|
LOGS/Entities/DatasetMatchTypes.py,sha256=f8v5bYEWiDMVBbEKONEDg2jm-Qp-WVbuBLyJ5SlMv9c,4373
|
|
@@ -76,7 +76,7 @@ LOGS/Entities/FormatInstrumentMinimal.py,sha256=QVRrJws-qZhy2h4aEXvbIe9pS6Jig7-5
|
|
|
76
76
|
LOGS/Entities/FormatInstrumentRequestParameter.py,sha256=dDZBtaexM1BRVmrCLLozD80V9Lp-1NzM4PehPPtxPgs,241
|
|
77
77
|
LOGS/Entities/FormatInstruments.py,sha256=kA5EWMvU2ERfCJrubBR8-E0pYaM8lhOPSqva8TDgU_8,545
|
|
78
78
|
LOGS/Entities/FormatMetaData.py,sha256=s44Yhn_rxJTdRg8OYRmrVK7FJWgeB76HcvELZNXRXw8,2111
|
|
79
|
-
LOGS/Entities/FormatMethod.py,sha256=
|
|
79
|
+
LOGS/Entities/FormatMethod.py,sha256=LYE01rU2kIzbzRwKLPwVyKAv3WcasbwMjsy31HP8TT8,1803
|
|
80
80
|
LOGS/Entities/FormatMethodMinimal.py,sha256=GS4f8GmX6YRrBVxWugeHnBgiuGRjjtVeNQamqMx0IBs,271
|
|
81
81
|
LOGS/Entities/FormatMethodRequestParameter.py,sha256=-s5xFzAUGSp3FFilS5EByWhT0iv5grquZQ8NfmS3xE8,237
|
|
82
82
|
LOGS/Entities/FormatMethods.py,sha256=9GXFYed_o0YRYc2R_W2J6kHSyLqyl6G9Is_PMXRVZ5s,486
|
|
@@ -97,7 +97,7 @@ LOGS/Entities/InstrumentRelations.py,sha256=sXlLo_TQiRnkWAOkAAYlYxqquas9KBVEJVW6
|
|
|
97
97
|
LOGS/Entities/InstrumentRequestParameter.py,sha256=mDPAtXMHVLaYiGnXSUVXGzitG6xFMr75FzCOLD5sUME,1433
|
|
98
98
|
LOGS/Entities/Instruments.py,sha256=0KgCWU5J9nFOM9qQw5s6tRyAdnCzOnjuvAtSwpdbyiU,453
|
|
99
99
|
LOGS/Entities/LabNotebookEntries.py,sha256=zbP78OV-pD2Yrg6bxQSU4e12AJd-ZqbPn1n5QGykTro,542
|
|
100
|
-
LOGS/Entities/LabNotebookEntry.py,sha256=
|
|
100
|
+
LOGS/Entities/LabNotebookEntry.py,sha256=4oZE6Z-iXMRITz4wZZcvEbJjPcd29RBth6bFJ4qtmQE,2882
|
|
101
101
|
LOGS/Entities/LabNotebookEntryMinimal.py,sha256=2VbggIr1QnKT_VFizupZH6ubIsD-PntL7HOH7rHuzzs,291
|
|
102
102
|
LOGS/Entities/LabNotebookEntryRelations.py,sha256=SljETldOvUZ6xCaywxGxwEKEZnz0ONwEnPlsY4SZkOo,2608
|
|
103
103
|
LOGS/Entities/LabNotebookEntryRequestParameter.py,sha256=bLuF6ysxBWvJCxLbRvPoyfEnJuY-ZqWdJkgm2vu76nU,2769
|
|
@@ -138,7 +138,7 @@ LOGS/Entities/SampleTypeMinimal.py,sha256=e5bJ2ZJwJu9fMugaXrp9MxBsPkpNEihhx0fWnc
|
|
|
138
138
|
LOGS/Entities/SampleTypeRequestParameter.py,sha256=uWkYftn9c0iin0i2JobawECEUmCjsX8dSh0jXswDo58,222
|
|
139
139
|
LOGS/Entities/SampleTypes.py,sha256=cdkSBl5eZMTf431TZBCsfnKQ45QZGVys9CcXKkPTXL4,459
|
|
140
140
|
LOGS/Entities/Samples.py,sha256=fAOp5MvHnACilEF0gehmdmLD3-gdvDEZAFAHitm3ib0,414
|
|
141
|
-
LOGS/Entities/Track.py,sha256=
|
|
141
|
+
LOGS/Entities/Track.py,sha256=Yy7MHq1XvhDy3S8r9PkfxEjtTC-u1Gd64x6Mf0W45GU,2753
|
|
142
142
|
LOGS/Entities/TrackData.py,sha256=0qNQIVQPeNWex8L8d12lXlbGvihezJRfAZY0ghdd-yc,287
|
|
143
143
|
LOGS/Entities/TrackSettings.py,sha256=UITmvJ1a4Ru3D0arIU1A5fa4682xb9aOwCm2bkqy52M,1028
|
|
144
144
|
LOGS/Entities/TrackXY.py,sha256=rffrNVR8DbQpWcjQpFMM1_7OnefKEE7UzVWBPfYaRp0,1186
|
|
@@ -159,7 +159,7 @@ LOGS/Entity/EntityRelations.py,sha256=zaAASS5SVDwPVMUyNgUH8DcZhWdErRulrZjD6MAWlh
|
|
|
159
159
|
LOGS/Entity/EntityRequestParameter.py,sha256=RH6-Sh8ug3aeq_AOFHs0Lp2J94cKI9Ts3slAATZ1tNA,828
|
|
160
160
|
LOGS/Entity/EntityWithIntId.py,sha256=B79VqAQ9I0uEQwbf3DMHXoi064gCw4fv3vCKoXwrHQM,631
|
|
161
161
|
LOGS/Entity/EntityWithStrId.py,sha256=5hz8-F_t_X4kf85DMwW3DJ2NqH_RiRV1Io1WiMN11yk,631
|
|
162
|
-
LOGS/Entity/SerializeableContent.py,sha256
|
|
162
|
+
LOGS/Entity/SerializeableContent.py,sha256=-mtqAnIdwIkhymaHGpRK8ZEBYUYDN-e0CvcLfGmfdrI,19975
|
|
163
163
|
LOGS/Entity/__init__.py,sha256=8q6dB_AqlLGx-6PexFn8QH7LWOnSGRhgPfFVkYAghR0,749
|
|
164
164
|
LOGS/Interfaces/ICreationRecord.py,sha256=SpACPwz2zA60pkApErZelUOsPq40fHAfiFW3vm9qW9k,1461
|
|
165
165
|
LOGS/Interfaces/ICustomField.py,sha256=rAMnUKW9wMxgUfkXUFECCclggYt9aGKgXlIep67sEo4,726
|
|
@@ -168,16 +168,16 @@ LOGS/Interfaces/IModificationRecord.py,sha256=SGXtCMHLCsH3pS199jr6QaxSD3LpGUXbNO
|
|
|
168
168
|
LOGS/Interfaces/INamedEntity.py,sha256=ds0qM8BGIr0Ii_sdIYZ7cG-8Mh0jeyTPbzEcQ_dRnbk,559
|
|
169
169
|
LOGS/Interfaces/IOwnedEntity.py,sha256=JmrTl3SI-ResGN5GQAiK_P1U5uoFwlEGep-lJ-9LdyQ,688
|
|
170
170
|
LOGS/Interfaces/IPaginationRequest.py,sha256=L0A5rul1B9r-g-xRqoPjLeDM0lpYXecLCJFaBQXkao8,210
|
|
171
|
-
LOGS/Interfaces/IPermissionedEntity.py,sha256=
|
|
171
|
+
LOGS/Interfaces/IPermissionedEntity.py,sha256=52xIkASjoszIh277rtYEvPZ_WRezhDPyRQug8OAZweI,677
|
|
172
172
|
LOGS/Interfaces/IProjectBased.py,sha256=dXmqBD6s4f8p0Eig_JqP4heqvo53Uq3cBz7SvHae_DA,863
|
|
173
|
-
LOGS/Interfaces/IRelatedEntity.py,sha256=
|
|
173
|
+
LOGS/Interfaces/IRelatedEntity.py,sha256=fcqlbACgtfBco7Zg_OgmxS7WnxogbOTAb6NkGa-PC6I,1108
|
|
174
174
|
LOGS/Interfaces/IRelationModel.py,sha256=oKwB7FOlf4ygD08zuUdow5BL4OncA8r2DK1xpK4K3h0,78
|
|
175
175
|
LOGS/Interfaces/IRelationRequest.py,sha256=NGSBLyKD4G341giLfPMd1NH0RmeXKnxcAWHAwsrZsXI,283
|
|
176
176
|
LOGS/Interfaces/ISoftDeletable.py,sha256=urnmSfcYJrEm1iIo0k3nyBvMMnpomJWAYAON_uvSX64,672
|
|
177
177
|
LOGS/Interfaces/ITypedEntity.py,sha256=hMlzGuca8vW1qT5Dop-b-6_gteAeXjK0sz85eRjOZrY,724
|
|
178
178
|
LOGS/Interfaces/IUniqueEntity.py,sha256=K-Q80qZX1wTjPnjbs-1PF85BbzYre2su_2xMnescYi4,1894
|
|
179
179
|
LOGS/Interfaces/__init__.py,sha256=tGykqoQeT2_HV-oLYVKJJ9Z0a_Li8_y3AOJjG1btKYw,172
|
|
180
|
-
logs_py-2.9.
|
|
181
|
-
logs_py-2.9.
|
|
182
|
-
logs_py-2.9.
|
|
183
|
-
logs_py-2.9.
|
|
180
|
+
logs_py-2.9.6.dist-info/METADATA,sha256=A-tvm1iJ2b4o7ULJ8fV502Sf64IifTF9AAExPAX_Ozk,2052
|
|
181
|
+
logs_py-2.9.6.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
|
182
|
+
logs_py-2.9.6.dist-info/top_level.txt,sha256=Ckn2LiAmGaR7k3tdEnKAc04z_uboMD4gLreYghRNdCs,5
|
|
183
|
+
logs_py-2.9.6.dist-info/RECORD,,
|
|
File without changes
|