logs-py 3.0.5__py3-none-any.whl → 3.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.
Potentially problematic release.
This version of logs-py might be problematic. Click here for more details.
- LOGS/Auxiliary/Constants.py +0 -2
- LOGS/Auxiliary/DateTimeConverter.py +12 -1
- LOGS/Converter/Conversion.py +4 -4
- LOGS/Converter/Converter.py +2 -2
- LOGS/Converter/ConverterParameter.py +2 -2
- LOGS/Converter/ExportParamters.py +2 -2
- LOGS/Entities/AutoloadClientInfo.py +2 -2
- LOGS/Entities/AutoloadFileInfo.py +2 -2
- LOGS/Entities/AutoloadStatus.py +2 -2
- LOGS/Entities/AutoloadStatusError.py +2 -2
- LOGS/Entities/AxisNaming.py +2 -2
- LOGS/Entities/CustomFieldValue.py +2 -2
- LOGS/Entities/CustomSchemaSection.py +2 -2
- LOGS/Entities/CustomTypeSection.py +2 -2
- LOGS/Entities/DataSourceStatus.py +2 -2
- LOGS/Entities/Dataset.py +2 -2
- LOGS/Entities/DatasetInfo.py +2 -2
- LOGS/Entities/DatasetMatchTypes.py +9 -9
- LOGS/Entities/DatasetModels.py +3 -3
- LOGS/Entities/DatasetRelations.py +0 -11
- LOGS/Entities/DatasetRequestParameter.py +0 -1
- LOGS/Entities/EntitiesRequestParameter.py +2 -2
- LOGS/Entities/EntityOriginWriteModelWithId.py +2 -2
- LOGS/Entities/FileEntry.py +4 -4
- LOGS/Entities/FileExcludePattern.py +2 -2
- LOGS/Entities/FormattedTable/DatatypeFormattedTable.py +2 -2
- LOGS/Entities/FormattedTable/DatatypeFormattedTableCell.py +2 -2
- LOGS/Entities/FormattedTable/DatatypeFormattedTableSettings.py +2 -2
- LOGS/Entities/HierarchyLeaf.py +2 -2
- LOGS/Entities/HierarchyNode.py +2 -2
- LOGS/Entities/LabNotebookEntryContent/BasicAttribute.py +2 -2
- LOGS/Entities/LabNotebookEntryContent/EntityAttribute.py +3 -3
- LOGS/Entities/LabNotebookEntryContent/EntryContentItem.py +2 -2
- LOGS/Entities/LabNotebookEntryContent/IEntryContentWithAttribute.py +2 -2
- LOGS/Entities/LabNotebookEntryContent/IEntryContentWithContent.py +2 -2
- LOGS/Entities/LabNotebookEntryContent/IEntryContentWithTextAttribute.py +2 -2
- LOGS/Entities/LabNotebookEntryRelations.py +0 -12
- LOGS/Entities/ParserLog.py +2 -2
- LOGS/Entities/PersonCategory.py +2 -2
- LOGS/Entities/PersonRelations.py +0 -13
- LOGS/Entities/PersonRequestParameter.py +0 -1
- LOGS/Entities/Project.py +2 -2
- LOGS/Entities/ProjectPersonPermission.py +2 -2
- LOGS/Entities/ProjectRelations.py +0 -11
- LOGS/Entities/ProjectRequestParameter.py +0 -3
- LOGS/Entities/Sample.py +0 -34
- LOGS/Entities/SampleRelations.py +0 -12
- LOGS/Entities/SampleRequestParameter.py +0 -1
- LOGS/Entities/TrackData.py +2 -2
- LOGS/Entities/TrackSettings.py +2 -2
- LOGS/Entities/__init__.py +1 -5
- LOGS/Entity/ConnectedEntity.py +2 -2
- LOGS/Entity/EntityConnector.py +2 -2
- LOGS/Entity/EntityRelation.py +2 -2
- LOGS/Entity/EntityRequestParameter.py +2 -2
- LOGS/Entity/{SerializeableContent.py → SerializableContent.py} +8 -12
- LOGS/Entity/__init__.py +1 -1
- LOGS/Interfaces/IPermissionedEntity.py +2 -2
- LOGS/LOGS.py +2 -24
- LOGS/Parameters/Color.py +3 -3
- LOGS/Parameters/ParameterBase.py +2 -2
- LOGS/ServerMetaData.py +2 -2
- {logs_py-3.0.5.dist-info → logs_py-3.0.7.dist-info}/METADATA +2 -1
- {logs_py-3.0.5.dist-info → logs_py-3.0.7.dist-info}/RECORD +66 -70
- LOGS/Entities/Document.py +0 -228
- LOGS/Entities/DocumentRelations.py +0 -36
- LOGS/Entities/DocumentRequestParameter.py +0 -19
- LOGS/Entities/Documents.py +0 -12
- {logs_py-3.0.5.dist-info → logs_py-3.0.7.dist-info}/WHEEL +0 -0
- {logs_py-3.0.5.dist-info → logs_py-3.0.7.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
|
|
3
3
|
from LOGS.Entities.LabNotebookEntryContent.TextAttribute import TextAttribute
|
|
4
|
-
from LOGS.Entity.
|
|
4
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class IEntryContentWithTextAttribute(
|
|
7
|
+
class IEntryContentWithTextAttribute(SerializableContent):
|
|
8
8
|
_attrs: Optional[TextAttribute] = None
|
|
9
9
|
|
|
10
10
|
@property
|
|
@@ -5,7 +5,6 @@ from LOGS.Entity.EntityRelations import EntityRelations
|
|
|
5
5
|
|
|
6
6
|
if TYPE_CHECKING:
|
|
7
7
|
from LOGS.Entities.Dataset import Dataset
|
|
8
|
-
from LOGS.Entities.Document import Document
|
|
9
8
|
from LOGS.Entities.LabNotebookEntry import LabNotebookEntry
|
|
10
9
|
from LOGS.Entities.Person import Person
|
|
11
10
|
from LOGS.Entities.Project import Project
|
|
@@ -20,7 +19,6 @@ class LabNotebookEntryRelations(EntityRelations):
|
|
|
20
19
|
_persons: Optional[EntityRelation["Person"]] = None
|
|
21
20
|
_samples: Optional[EntityRelation["Sample"]] = None
|
|
22
21
|
_projects: Optional[EntityRelation["Project"]] = None
|
|
23
|
-
_documents: Optional[EntityRelation["Document"]] = None
|
|
24
22
|
|
|
25
23
|
@property
|
|
26
24
|
def persons(self) -> Optional[EntityRelation["Person"]]:
|
|
@@ -32,16 +30,6 @@ class LabNotebookEntryRelations(EntityRelations):
|
|
|
32
30
|
|
|
33
31
|
self._persons = self._entityConverter(value, Persons)
|
|
34
32
|
|
|
35
|
-
@property
|
|
36
|
-
def documents(self) -> Optional[EntityRelation["Document"]]:
|
|
37
|
-
return self._documents
|
|
38
|
-
|
|
39
|
-
@documents.setter
|
|
40
|
-
def documents(self, value):
|
|
41
|
-
from LOGS.Entities.Documents import Documents
|
|
42
|
-
|
|
43
|
-
self._documents = self._entityConverter(value, Documents)
|
|
44
|
-
|
|
45
33
|
@property
|
|
46
34
|
def datasets(self) -> Optional[EntityRelation["Dataset"]]:
|
|
47
35
|
return self._datasets
|
LOGS/Entities/ParserLog.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from typing import List, Optional
|
|
2
2
|
|
|
3
|
-
from LOGS.Entity.
|
|
3
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class ParserLog(
|
|
6
|
+
class ParserLog(SerializableContent):
|
|
7
7
|
_type: Optional[str] = None
|
|
8
8
|
_message: Optional[str] = None
|
|
9
9
|
_description: Optional[List[str]] = None
|
LOGS/Entities/PersonCategory.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
|
|
3
|
-
from LOGS.Entity.
|
|
3
|
+
from LOGS.Entity.SerializableContent import SerializableClass
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class PersonCategory(
|
|
6
|
+
class PersonCategory(SerializableClass):
|
|
7
7
|
id: Optional[int] = None
|
|
8
8
|
name: Optional[str] = None
|
|
9
9
|
|
LOGS/Entities/PersonRelations.py
CHANGED
|
@@ -5,11 +5,9 @@ from LOGS.Entity.EntityRelations import EntityRelations
|
|
|
5
5
|
|
|
6
6
|
if TYPE_CHECKING:
|
|
7
7
|
from LOGS.Entities.Dataset import Dataset
|
|
8
|
-
from LOGS.Entities.Document import Document
|
|
9
8
|
from LOGS.Entities.LabNotebookEntry import LabNotebookEntry
|
|
10
9
|
from LOGS.Entities.Sample import Sample
|
|
11
10
|
|
|
12
|
-
# public EntityRelation Documents { get; set; }
|
|
13
11
|
# public EntityRelation LabNotebooks { get; set; }
|
|
14
12
|
# public EntityRelation LabNotebookExperiments { get; set; }
|
|
15
13
|
# public EntityRelation LabNotebooksEntries { get; set; }
|
|
@@ -21,20 +19,9 @@ class PersonRelations(EntityRelations):
|
|
|
21
19
|
|
|
22
20
|
_datasets: Optional[EntityRelation["Dataset"]] = None
|
|
23
21
|
_samples: Optional[EntityRelation["Sample"]] = None
|
|
24
|
-
_documents: Optional[EntityRelation["Document"]] = None
|
|
25
22
|
_labNotebooksEntries: Optional[EntityRelation["LabNotebookEntry"]] = None
|
|
26
23
|
_labNotebooksEntryMentions: Optional[EntityRelation["LabNotebookEntry"]] = None
|
|
27
24
|
|
|
28
|
-
@property
|
|
29
|
-
def documents(self) -> Optional[EntityRelation["Document"]]:
|
|
30
|
-
return self._documents
|
|
31
|
-
|
|
32
|
-
@documents.setter
|
|
33
|
-
def documents(self, value):
|
|
34
|
-
from LOGS.Entities.Documents import Documents
|
|
35
|
-
|
|
36
|
-
self._documents = self._entityConverter(value, Documents)
|
|
37
|
-
|
|
38
25
|
@property
|
|
39
26
|
def samples(self) -> Optional[EntityRelation["Sample"]]:
|
|
40
27
|
return self._samples
|
|
@@ -52,7 +52,6 @@ class PersonRequestParameter(
|
|
|
52
52
|
personTags: Optional[List[str]] = None
|
|
53
53
|
organizationIds: Optional[List[int]] = None
|
|
54
54
|
roleIds: Optional[List[int]] = None
|
|
55
|
-
documentIds: Optional[List[int]] = None
|
|
56
55
|
hasAccount: Optional[bool] = None
|
|
57
56
|
isAccountEnabled: Optional[bool] = None
|
|
58
57
|
includeSystemUsers: Optional[bool] = None
|
LOGS/Entities/Project.py
CHANGED
|
@@ -4,7 +4,7 @@ from LOGS.Auxiliary.Decorators import Endpoint
|
|
|
4
4
|
from LOGS.Entities.ProjectPersonPermission import ProjectPersonPermission
|
|
5
5
|
from LOGS.Entities.ProjectRelations import ProjectRelations
|
|
6
6
|
from LOGS.Entity.EntityWithIntId import IEntityWithIntId
|
|
7
|
-
from LOGS.Entity.
|
|
7
|
+
from LOGS.Entity.SerializableContent import SerializableClass
|
|
8
8
|
from LOGS.Interfaces.ICreationRecord import ICreationRecord
|
|
9
9
|
from LOGS.Interfaces.IModificationRecord import IModificationRecord
|
|
10
10
|
from LOGS.Interfaces.INamedEntity import INamedEntity
|
|
@@ -15,7 +15,7 @@ from LOGS.Interfaces.IUniqueEntity import IUniqueEntity
|
|
|
15
15
|
from LOGS.LOGSConnection import LOGSConnection
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class ProjectTag(
|
|
18
|
+
class ProjectTag(SerializableClass):
|
|
19
19
|
id: Optional[int] = None
|
|
20
20
|
name: Optional[str] = None
|
|
21
21
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
from typing import TYPE_CHECKING, Optional
|
|
2
2
|
|
|
3
3
|
from LOGS.Auxiliary.MinimalModelGenerator import MinimalFromSingle
|
|
4
|
-
from LOGS.Entity.
|
|
4
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
5
5
|
|
|
6
6
|
if TYPE_CHECKING:
|
|
7
7
|
from LOGS.Entities.PersonMinimal import PersonMinimal
|
|
8
8
|
from LOGS.Entities.ProjectMinimal import ProjectMinimal
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class ProjectPersonPermission(
|
|
11
|
+
class ProjectPersonPermission(SerializableContent):
|
|
12
12
|
_person: Optional["PersonMinimal"] = None
|
|
13
13
|
_project: Optional["ProjectMinimal"] = None
|
|
14
14
|
_administer: Optional[bool] = None
|
|
@@ -2,8 +2,6 @@ from typing import Optional
|
|
|
2
2
|
|
|
3
3
|
from LOGS.Entities.Dataset import Dataset
|
|
4
4
|
from LOGS.Entities.Datasets import Datasets
|
|
5
|
-
from LOGS.Entities.Document import Document
|
|
6
|
-
from LOGS.Entities.Documents import Documents
|
|
7
5
|
from LOGS.Entities.Sample import Sample
|
|
8
6
|
from LOGS.Entities.Samples import Samples
|
|
9
7
|
from LOGS.Entity.EntityRelation import EntityRelation
|
|
@@ -13,20 +11,11 @@ from LOGS.Entity.EntityRelations import EntityRelations
|
|
|
13
11
|
class ProjectRelations(EntityRelations):
|
|
14
12
|
"""Relations of a Project with other entities"""
|
|
15
13
|
|
|
16
|
-
_documents: Optional[EntityRelation[Document]] = None
|
|
17
14
|
_datasets: Optional[EntityRelation[Dataset]] = None
|
|
18
15
|
_samples: Optional[EntityRelation[Sample]] = None
|
|
19
16
|
_labNotebookEntries: Optional[EntityRelation] = None
|
|
20
17
|
_labNotebooksEntryMentions: Optional[EntityRelation] = None
|
|
21
18
|
|
|
22
|
-
@property
|
|
23
|
-
def documents(self) -> Optional[EntityRelation[Document]]:
|
|
24
|
-
return self._documents
|
|
25
|
-
|
|
26
|
-
@documents.setter
|
|
27
|
-
def documents(self, value):
|
|
28
|
-
self._documents = self._entityConverter(value, Documents)
|
|
29
|
-
|
|
30
19
|
@property
|
|
31
20
|
def samples(self) -> Optional[EntityRelation[Sample]]:
|
|
32
21
|
return self._samples
|
|
@@ -20,8 +20,6 @@ class ProjectOrder(Enum):
|
|
|
20
20
|
DATASET_COUNT_DESC = "DATASET_COUNT_DESC"
|
|
21
21
|
SAMPLE_COUNT_ASC = "SAMPLE_COUNT_ASC"
|
|
22
22
|
SAMPLE_COUNT_DESC = "SAMPLE_COUNT_DESC"
|
|
23
|
-
DOCUMENT_COUNT_ASC = "DOCUMENT_COUNT_ASC"
|
|
24
|
-
DOCUMENT_COUNT_DESC = "DOCUMENT_COUNT_DESC"
|
|
25
23
|
LAB_NOTEBOOK_COUNT_ASC = "LAB_NOTEBOOK_COUNT_ASC"
|
|
26
24
|
LAB_NOTEBOOK_COUNT_DESC = "LAB_NOTEBOOK_COUNT_DESC"
|
|
27
25
|
CREATED_ON_ASC = "CREATED_ON_ASC"
|
|
@@ -52,4 +50,3 @@ class ProjectRequestParameter(
|
|
|
52
50
|
datasetIds: Optional[List[int]] = None
|
|
53
51
|
mediaIds: Optional[List[int]] = None
|
|
54
52
|
sampleIds: Optional[List[int]] = None
|
|
55
|
-
documentIds: Optional[List[int]] = None
|
LOGS/Entities/Sample.py
CHANGED
|
@@ -123,40 +123,6 @@ class Sample(
|
|
|
123
123
|
def other(self, value):
|
|
124
124
|
self._other = self.checkAndConvertNullable(value, str, "other")
|
|
125
125
|
|
|
126
|
-
# @property
|
|
127
|
-
# def preparators(self) -> List[Person]:
|
|
128
|
-
# return self._preparators
|
|
129
|
-
|
|
130
|
-
# @preparators.setter
|
|
131
|
-
# def preparators(self, value):
|
|
132
|
-
# self._preparators = self.checkAndConvertNullable(value, List, "preparators")
|
|
133
|
-
|
|
134
|
-
# @property
|
|
135
|
-
# def discarders(self) -> List[Person]:
|
|
136
|
-
# return self._discarders
|
|
137
|
-
|
|
138
|
-
# @discarders.setter
|
|
139
|
-
# def discarders(self, value):
|
|
140
|
-
# self._discarders = self.checkAndConvertNullable(value, List, "discarders")
|
|
141
|
-
|
|
142
|
-
# @property
|
|
143
|
-
# def projects(self) -> Optional[List["ProjectMinimal"]]:
|
|
144
|
-
# return self._projects
|
|
145
|
-
|
|
146
|
-
# @projects.setter
|
|
147
|
-
# def projects(self, value):
|
|
148
|
-
# self._projects = MinimalFromList(
|
|
149
|
-
# value, "ProjectMinimal", "projects", connection=self.connection
|
|
150
|
-
# )
|
|
151
|
-
|
|
152
|
-
# @property
|
|
153
|
-
# def documents(self) -> List[Document]:
|
|
154
|
-
# return self._documents
|
|
155
|
-
|
|
156
|
-
# @documents.setter
|
|
157
|
-
# def documents(self, value):
|
|
158
|
-
# self._documents = self.checkAndConvertNullable(value, List, "documents")
|
|
159
|
-
|
|
160
126
|
@property
|
|
161
127
|
def preparedBy(self) -> Optional[List["PersonMinimal"]]:
|
|
162
128
|
return self._preparedBy
|
LOGS/Entities/SampleRelations.py
CHANGED
|
@@ -5,26 +5,14 @@ from LOGS.Entity.EntityRelations import EntityRelations
|
|
|
5
5
|
|
|
6
6
|
if TYPE_CHECKING:
|
|
7
7
|
from LOGS.Entities.Dataset import Dataset
|
|
8
|
-
from LOGS.Entities.Document import Document
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
class SampleRelations(EntityRelations):
|
|
12
11
|
"""Relations of a Sample with other entities"""
|
|
13
12
|
|
|
14
|
-
_documents: Optional[EntityRelation["Document"]] = None
|
|
15
13
|
_datasets: Optional[EntityRelation["Dataset"]] = None
|
|
16
14
|
_labNotebookEntries: Optional[EntityRelation] = None
|
|
17
15
|
|
|
18
|
-
@property
|
|
19
|
-
def documents(self) -> Optional[EntityRelation["Document"]]:
|
|
20
|
-
return self._documents
|
|
21
|
-
|
|
22
|
-
@documents.setter
|
|
23
|
-
def documents(self, value):
|
|
24
|
-
from LOGS.Entities.Documents import Documents
|
|
25
|
-
|
|
26
|
-
self._documents = self._entityConverter(value, Documents)
|
|
27
|
-
|
|
28
16
|
@property
|
|
29
17
|
def datasets(self) -> Optional[EntityRelation["Dataset"]]:
|
|
30
18
|
return self._datasets
|
|
@@ -50,7 +50,6 @@ class SampleRequestParameter(
|
|
|
50
50
|
discardedByIds: Optional[List[int]] = None
|
|
51
51
|
discardedAtFrom: Optional[datetime] = None
|
|
52
52
|
discardedAtTo: Optional[datetime] = None
|
|
53
|
-
documentIds: Optional[List[int]] = None
|
|
54
53
|
excludeDiscarded: Optional[bool] = None
|
|
55
54
|
includeTags: Optional[bool] = None
|
|
56
55
|
organizationIds: Optional[List[int]] = None
|
LOGS/Entities/TrackData.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from LOGS.Entity.
|
|
1
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
class TrackData(
|
|
4
|
+
class TrackData(SerializableContent):
|
|
5
5
|
def fetchFull(self):
|
|
6
6
|
raise NotImplementedError(
|
|
7
7
|
"Specific %a class for this track type is not implemented yet."
|
LOGS/Entities/TrackSettings.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
|
|
3
3
|
from LOGS.Entities.AxisNaming import AxisNaming
|
|
4
|
-
from LOGS.Entity.
|
|
4
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class TrackSettings(
|
|
7
|
+
class TrackSettings(SerializableContent):
|
|
8
8
|
"""LOGS general Track settings"""
|
|
9
9
|
|
|
10
10
|
_color: Optional[str] = None
|
LOGS/Entities/__init__.py
CHANGED
|
@@ -4,7 +4,7 @@ This package is written for the LOGS Repository.
|
|
|
4
4
|
It's objects can be used to write your own dataset parser.
|
|
5
5
|
|
|
6
6
|
License:
|
|
7
|
-
Permission to use this
|
|
7
|
+
Permission to use this library and all of its contents is
|
|
8
8
|
strictly permitted to the Signals Company.
|
|
9
9
|
"""
|
|
10
10
|
|
|
@@ -41,10 +41,6 @@ from .DatatrackFormattedTable import *
|
|
|
41
41
|
from .DatatrackImage import *
|
|
42
42
|
from .DatatrackNumericArray import *
|
|
43
43
|
from .DatatrackNumericMatrix import *
|
|
44
|
-
from .Document import *
|
|
45
|
-
from .DocumentRelations import *
|
|
46
|
-
from .DocumentRequestParameter import *
|
|
47
|
-
from .Documents import *
|
|
48
44
|
from .Entities import *
|
|
49
45
|
from .EntitiesRequestParameter import *
|
|
50
46
|
from .EntityOriginWriteModelWithId import *
|
LOGS/Entity/ConnectedEntity.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from typing import List, Optional, cast
|
|
2
2
|
|
|
3
3
|
from LOGS.Auxiliary.Exceptions import EntityNotConnectedException
|
|
4
|
-
from LOGS.Entity.
|
|
4
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
5
5
|
from LOGS.LOGSConnection import LOGSConnection
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class ConnectedEntity(
|
|
8
|
+
class ConnectedEntity(SerializableContent):
|
|
9
9
|
_connection: Optional[LOGSConnection]
|
|
10
10
|
_endpoint: Optional[List[str]] = None
|
|
11
11
|
_uiEndpoint: Optional[List[str]] = None
|
LOGS/Entity/EntityConnector.py
CHANGED
|
@@ -3,7 +3,7 @@ from typing import Generic, List, Optional, TypeVar
|
|
|
3
3
|
from LOGS.Auxiliary.Exceptions import NotConnectedException
|
|
4
4
|
from LOGS.Auxiliary.Tools import Tools
|
|
5
5
|
from LOGS.Entity.Entity import Entity
|
|
6
|
-
from LOGS.Entity.
|
|
6
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
7
7
|
from LOGS.LOGSConnection import LOGSConnection, ResponseTypes
|
|
8
8
|
|
|
9
9
|
# SELF = TypeVar("SELF", bound="EntityConnector")
|
|
@@ -17,7 +17,7 @@ class EntityConnector(Generic[_T]):
|
|
|
17
17
|
_endpoint: Optional[List[str]] = None
|
|
18
18
|
_firstUrl: Optional[str] = None
|
|
19
19
|
|
|
20
|
-
_parameters:
|
|
20
|
+
_parameters: SerializableContent
|
|
21
21
|
_responseType: ResponseTypes = ResponseTypes.JSON
|
|
22
22
|
_includeUrl: bool = True
|
|
23
23
|
_connection: Optional[LOGSConnection] = None
|
LOGS/Entity/EntityRelation.py
CHANGED
|
@@ -2,12 +2,12 @@ from typing import Generator, Generic, Optional, TypeVar
|
|
|
2
2
|
|
|
3
3
|
from LOGS.Entity.Entity import Entity
|
|
4
4
|
from LOGS.Entity.EntityIterator import EntityIterator
|
|
5
|
-
from LOGS.Entity.
|
|
5
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
6
6
|
|
|
7
7
|
_T = TypeVar("_T", bound=Entity)
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class EntityRelation(Generic[_T],
|
|
10
|
+
class EntityRelation(Generic[_T], SerializableContent):
|
|
11
11
|
_noSerialize = ["link", "entities"]
|
|
12
12
|
_count: Optional[int] = None
|
|
13
13
|
_link: Optional[str] = None
|
|
@@ -2,7 +2,7 @@ from dataclasses import dataclass
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Generic, List, Optional, TypeVar, Union
|
|
4
4
|
|
|
5
|
-
from LOGS.Entity.
|
|
5
|
+
from LOGS.Entity.SerializableContent import SerializableClass
|
|
6
6
|
from LOGS.Interfaces.IPaginationRequest import IPaginationRequest
|
|
7
7
|
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ _Sorting = TypeVar("_Sorting", bound=Enum)
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
@dataclass
|
|
20
|
-
class EntityRequestParameter(Generic[_Sorting],
|
|
20
|
+
class EntityRequestParameter(Generic[_Sorting], SerializableClass, IPaginationRequest):
|
|
21
21
|
_noSerialize = ["asString"]
|
|
22
22
|
excludeIds: Optional[Union[List[int], List[str]]] = None
|
|
23
23
|
searchTerm: Optional[str] = None
|
|
@@ -28,7 +28,7 @@ from LOGS.Auxiliary.Tools import Tools
|
|
|
28
28
|
_T = TypeVar("_T")
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
class
|
|
31
|
+
class SerializableContent:
|
|
32
32
|
_noSerialize: List[str] = []
|
|
33
33
|
_typeMapper: Optional[Dict[str, Any]] = None
|
|
34
34
|
_slack: Dict[str, Any] = {}
|
|
@@ -58,11 +58,7 @@ class SerializeableContent:
|
|
|
58
58
|
ref = convertOtherType[1](ref)
|
|
59
59
|
|
|
60
60
|
serializableAncestors = tuple(
|
|
61
|
-
[
|
|
62
|
-
c
|
|
63
|
-
for c in inspect.getmro(selfClass)
|
|
64
|
-
if issubclass(c, SerializeableContent)
|
|
65
|
-
]
|
|
61
|
+
[c for c in inspect.getmro(selfClass) if issubclass(c, SerializableContent)]
|
|
66
62
|
)
|
|
67
63
|
|
|
68
64
|
# if isinstance(ref, selfClass):
|
|
@@ -123,14 +119,14 @@ class SerializeableContent:
|
|
|
123
119
|
type(e) == c for c in ignoreClasses
|
|
124
120
|
):
|
|
125
121
|
continue
|
|
126
|
-
if isinstance(e,
|
|
122
|
+
if isinstance(e, SerializableContent):
|
|
127
123
|
s = e._getSlack(ignoreClasses=ignoreClasses)
|
|
128
124
|
if s["slack"]:
|
|
129
125
|
slacks[f"{k}[{i}]"] = s
|
|
130
126
|
if slacks:
|
|
131
127
|
slack["slack"].update(slacks)
|
|
132
128
|
|
|
133
|
-
if isinstance(item,
|
|
129
|
+
if isinstance(item, SerializableContent):
|
|
134
130
|
if ignoreClasses and any(
|
|
135
131
|
type(item) == c for c in ignoreClasses
|
|
136
132
|
):
|
|
@@ -202,7 +198,7 @@ class SerializeableContent:
|
|
|
202
198
|
|
|
203
199
|
@classmethod
|
|
204
200
|
def toBaseclassString(cls, obj):
|
|
205
|
-
if isinstance(obj,
|
|
201
|
+
if isinstance(obj, SerializableContent):
|
|
206
202
|
return obj.toString()
|
|
207
203
|
if isinstance(obj, dict):
|
|
208
204
|
return "<%s>" % obj["type"] if "type" in obj else "unknown"
|
|
@@ -415,7 +411,7 @@ class SerializeableContent:
|
|
|
415
411
|
) -> _T:
|
|
416
412
|
if (
|
|
417
413
|
inspect.isclass(fieldType)
|
|
418
|
-
and issubclass(fieldType,
|
|
414
|
+
and issubclass(fieldType, SerializableContent)
|
|
419
415
|
and isinstance(value, dict)
|
|
420
416
|
):
|
|
421
417
|
return cast(Any, fieldType)(ref=value)
|
|
@@ -548,7 +544,7 @@ class SerializeableContent:
|
|
|
548
544
|
|
|
549
545
|
def checkInstance(self, instance, path: List[str] = []):
|
|
550
546
|
# print("check", path, instance)
|
|
551
|
-
if isinstance(instance,
|
|
547
|
+
if isinstance(instance, SerializableContent):
|
|
552
548
|
instance.check(path)
|
|
553
549
|
|
|
554
550
|
def checkProperty(self, property: str, path: List[str] = []):
|
|
@@ -670,5 +666,5 @@ class SerializeableContent:
|
|
|
670
666
|
return "".join(map(lambda r: chr(random.randint(65, 90)), range(len)))
|
|
671
667
|
|
|
672
668
|
|
|
673
|
-
class
|
|
669
|
+
class SerializableClass(SerializableContent):
|
|
674
670
|
_planeClass = True
|
LOGS/Entity/__init__.py
CHANGED
|
@@ -2,7 +2,7 @@ from dataclasses import dataclass
|
|
|
2
2
|
from typing import TYPE_CHECKING, Generic, Optional, Type, TypeVar, cast
|
|
3
3
|
|
|
4
4
|
from LOGS.Auxiliary import Tools
|
|
5
|
-
from LOGS.Entity.
|
|
5
|
+
from LOGS.Entity.SerializableContent import SerializableClass
|
|
6
6
|
from LOGS.Interfaces.IEntityInterface import IEntityInterface
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
@@ -18,7 +18,7 @@ class IPermissionModel:
|
|
|
18
18
|
edit: Optional[bool] = None
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class GenericPermission(IPermissionModel,
|
|
21
|
+
class GenericPermission(IPermissionModel, SerializableClass):
|
|
22
22
|
edit: Optional[bool] = False
|
|
23
23
|
|
|
24
24
|
|
LOGS/LOGS.py
CHANGED
|
@@ -47,9 +47,6 @@ from LOGS.Entities.Datasets import Datasets
|
|
|
47
47
|
from LOGS.Entities.DataSource import DataSource
|
|
48
48
|
from LOGS.Entities.DataSourceRequestParameter import DataSourceRequestParameter
|
|
49
49
|
from LOGS.Entities.DataSources import DataSources
|
|
50
|
-
from LOGS.Entities.Document import Document
|
|
51
|
-
from LOGS.Entities.DocumentRequestParameter import DocumentRequestParameter
|
|
52
|
-
from LOGS.Entities.Documents import Documents
|
|
53
50
|
from LOGS.Entities.Entities import Entities
|
|
54
51
|
from LOGS.Entities.EntitiesRequestParameter import EntitiesRequestParameter
|
|
55
52
|
from LOGS.Entities.EntityOriginWriteModelWithId import EntityOriginWriteModelWithId
|
|
@@ -127,7 +124,6 @@ _T = TypeVar(
|
|
|
127
124
|
CustomType,
|
|
128
125
|
Dataset,
|
|
129
126
|
DataSource,
|
|
130
|
-
Document,
|
|
131
127
|
Equipment,
|
|
132
128
|
Experiment,
|
|
133
129
|
Format,
|
|
@@ -160,7 +156,6 @@ class LOGS:
|
|
|
160
156
|
CustomType,
|
|
161
157
|
Dataset,
|
|
162
158
|
DataSource,
|
|
163
|
-
Document,
|
|
164
159
|
Equipment,
|
|
165
160
|
Experiment,
|
|
166
161
|
Instrument,
|
|
@@ -244,7 +239,7 @@ class LOGS:
|
|
|
244
239
|
|
|
245
240
|
if not isinstance(data, dict):
|
|
246
241
|
raise LOGSException(
|
|
247
|
-
"Unexpected
|
|
242
|
+
"Unexpected response from session endpoint. Could not get current user."
|
|
248
243
|
)
|
|
249
244
|
|
|
250
245
|
person = None
|
|
@@ -253,7 +248,7 @@ class LOGS:
|
|
|
253
248
|
|
|
254
249
|
if not person or not person.id:
|
|
255
250
|
raise LOGSException(
|
|
256
|
-
"Unexpected
|
|
251
|
+
"Unexpected response from session endpoint. Could not get current user."
|
|
257
252
|
)
|
|
258
253
|
|
|
259
254
|
return person
|
|
@@ -820,23 +815,6 @@ class LOGS:
|
|
|
820
815
|
)
|
|
821
816
|
return Datasets(connection=self._connection, parameters=parameter)
|
|
822
817
|
|
|
823
|
-
def document(self, id: int) -> Document:
|
|
824
|
-
return self._fetchEntity(Document, id)
|
|
825
|
-
|
|
826
|
-
def documents(
|
|
827
|
-
self, parameter: Optional[DocumentRequestParameter] = None
|
|
828
|
-
) -> Documents:
|
|
829
|
-
if parameter and not isinstance(parameter, DocumentRequestParameter):
|
|
830
|
-
raise LOGSException(
|
|
831
|
-
"Parameter for %s.documents must be of type %a. (Got %a)"
|
|
832
|
-
% (
|
|
833
|
-
type(self).__name__,
|
|
834
|
-
DocumentRequestParameter.__name__,
|
|
835
|
-
type(parameter).__name__,
|
|
836
|
-
)
|
|
837
|
-
)
|
|
838
|
-
return Documents(connection=self._connection, parameters=parameter)
|
|
839
|
-
|
|
840
818
|
def person(self, id: int) -> Person:
|
|
841
819
|
return self._fetchEntity(Person, id)
|
|
842
820
|
|
LOGS/Parameters/Color.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from typing import List, Optional
|
|
2
2
|
|
|
3
|
-
from LOGS.Entity.
|
|
3
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class SingleColor(
|
|
6
|
+
class SingleColor(SerializableContent):
|
|
7
7
|
_color: str
|
|
8
8
|
_offset: Optional[float]
|
|
9
9
|
_value: Optional[float]
|
|
@@ -47,7 +47,7 @@ class SingleColor(SerializeableContent):
|
|
|
47
47
|
self._value = value
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
class Color(
|
|
50
|
+
class Color(SerializableContent):
|
|
51
51
|
_colors: List[SingleColor]
|
|
52
52
|
_discrete: Optional[bool]
|
|
53
53
|
_reverse: Optional[bool]
|
LOGS/Parameters/ParameterBase.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from typing import List, Optional
|
|
2
2
|
|
|
3
|
-
from LOGS.Entity.
|
|
3
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
4
4
|
from LOGS.Parameters.Color import Color
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class ParameterBase(
|
|
7
|
+
class ParameterBase(SerializableContent):
|
|
8
8
|
_name: str = ""
|
|
9
9
|
_tracks: Optional[List[str]] = None
|
|
10
10
|
_colors: List[Color] = []
|
LOGS/ServerMetaData.py
CHANGED
|
@@ -2,10 +2,10 @@ from datetime import datetime
|
|
|
2
2
|
from typing import Optional
|
|
3
3
|
from uuid import UUID
|
|
4
4
|
|
|
5
|
-
from LOGS.Entity.
|
|
5
|
+
from LOGS.Entity.SerializableContent import SerializableContent
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class ServerMetaData(
|
|
8
|
+
class ServerMetaData(SerializableContent):
|
|
9
9
|
_application: Optional[str] = None
|
|
10
10
|
_vendor: Optional[str] = None
|
|
11
11
|
_version: Optional[str] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: logs-py
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.7
|
|
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
|
|
@@ -19,6 +19,7 @@ Requires-Dist: regex>=2019.12.9
|
|
|
19
19
|
Requires-Dist: Pillow
|
|
20
20
|
Requires-Dist: deprecation
|
|
21
21
|
Requires-Dist: pytz
|
|
22
|
+
Requires-Dist: tzlocal; platform_system == "Windows"
|
|
22
23
|
Dynamic: author
|
|
23
24
|
Dynamic: author-email
|
|
24
25
|
Dynamic: classifier
|