benchling-sdk 1.18.0__tar.gz → 1.18.1__tar.gz
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.
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/PKG-INFO +1 -1
- benchling_sdk-1.18.1/benchling_sdk/apps/config/helpers.py +186 -0
- benchling_sdk-1.18.1/benchling_sdk/apps/config/mock_config.py +635 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/pyproject.toml +1 -1
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/LICENSE +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/README.md +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/errors.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/framework.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/types.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/cryptography_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/decryption_provider.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/errors.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/framework.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/types.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/framework.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/manifest_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/webhook_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/errors.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/framework.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/types.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/apps/types.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/auth/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/auth/api_key_auth.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/auth/bearer_token_auth.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/auth/client_credentials_oauth2.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/benchling.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/docs/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/docs/__main__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/errors.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/client_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/constants.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/decorators.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/file_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/logging_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/package_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/pagination_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/response_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/retry_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/serialization_helpers.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/helpers/transaction_manager.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/models/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/models/webhooks/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/models/webhooks/v0/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/py.typed +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/alpha/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/alpha/v2_alpha_app_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/alpha/v2_alpha_assembly_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/base_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_analysis_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_app_definition_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_app_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_audit_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_collaboration_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_entry_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_folder_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_project_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_worklist_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/__init__.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/aa_sequence_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/api_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/app_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/assay_result_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/assay_run_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/blob_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/box_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/codon_usage_table_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/container_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/custom_entity_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/custom_notation_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_alignments_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_oligo_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_sequence_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dropdown_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/entity_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/entry_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/enzyme_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/event_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/export_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/feature_library_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/folder_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/instrument_query_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/inventory_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/lab_automation_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/label_template_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/location_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/mixture_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/molecule_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/monomer_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/oligo_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/organization_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/plate_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/printer_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/project_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/registry_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/request_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/rna_oligo_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/rna_sequence_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/schema_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/task_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/team_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/user_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/warehouse_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_flowchart_config_version_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_flowchart_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_output_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_task_group_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_task_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_alpha_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_beta_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_stable_service.py +0 -0
- {benchling_sdk-1.18.0 → benchling_sdk-1.18.1}/benchling_sdk/services/v2_service.py +0 -0
@@ -0,0 +1,186 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from enum import Enum
|
3
|
+
from functools import lru_cache
|
4
|
+
from typing import cast, List, Optional, Union
|
5
|
+
|
6
|
+
from benchling_api_client.v2.beta.extensions import Enums
|
7
|
+
from benchling_api_client.v2.beta.models.base_manifest_config import BaseManifestConfig
|
8
|
+
from benchling_api_client.v2.beta.models.dropdown_dependency import DropdownDependency
|
9
|
+
from benchling_api_client.v2.beta.models.dropdown_dependency_types import DropdownDependencyTypes
|
10
|
+
from benchling_api_client.v2.beta.models.entity_schema_dependency import EntitySchemaDependency
|
11
|
+
from benchling_api_client.v2.beta.models.entity_schema_dependency_type import EntitySchemaDependencyType
|
12
|
+
from benchling_api_client.v2.beta.models.field_definitions_manifest import FieldDefinitionsManifest
|
13
|
+
from benchling_api_client.v2.beta.models.manifest_array_config import ManifestArrayConfig
|
14
|
+
from benchling_api_client.v2.beta.models.manifest_float_scalar_config import ManifestFloatScalarConfig
|
15
|
+
from benchling_api_client.v2.beta.models.manifest_integer_scalar_config import ManifestIntegerScalarConfig
|
16
|
+
from benchling_api_client.v2.beta.models.manifest_scalar_config import ManifestScalarConfig
|
17
|
+
from benchling_api_client.v2.beta.models.manifest_text_scalar_config import ManifestTextScalarConfig
|
18
|
+
from benchling_api_client.v2.beta.models.resource_dependency import ResourceDependency
|
19
|
+
from benchling_api_client.v2.beta.models.resource_dependency_types import ResourceDependencyTypes
|
20
|
+
from benchling_api_client.v2.beta.models.schema_dependency import SchemaDependency
|
21
|
+
from benchling_api_client.v2.beta.models.schema_dependency_subtypes import SchemaDependencySubtypes
|
22
|
+
from benchling_api_client.v2.beta.models.schema_dependency_types import SchemaDependencyTypes
|
23
|
+
from benchling_api_client.v2.beta.models.workflow_task_schema_dependency import WorkflowTaskSchemaDependency
|
24
|
+
from benchling_api_client.v2.beta.models.workflow_task_schema_dependency_output import (
|
25
|
+
WorkflowTaskSchemaDependencyOutput,
|
26
|
+
)
|
27
|
+
from benchling_api_client.v2.beta.models.workflow_task_schema_dependency_type import (
|
28
|
+
WorkflowTaskSchemaDependencyType,
|
29
|
+
)
|
30
|
+
from benchling_api_client.v2.extensions import UnknownType
|
31
|
+
from benchling_api_client.v2.stable.extensions import NotPresentError
|
32
|
+
|
33
|
+
_ArrayElementDependency = Union[
|
34
|
+
SchemaDependency,
|
35
|
+
EntitySchemaDependency,
|
36
|
+
WorkflowTaskSchemaDependency,
|
37
|
+
DropdownDependency,
|
38
|
+
ResourceDependency,
|
39
|
+
ManifestScalarConfig,
|
40
|
+
]
|
41
|
+
|
42
|
+
|
43
|
+
class _UnsupportedSubTypeError(Exception):
|
44
|
+
"""Error when an unsupported subtype is encountered."""
|
45
|
+
|
46
|
+
pass
|
47
|
+
|
48
|
+
|
49
|
+
class _ScalarConfigTypes(Enums.KnownString):
|
50
|
+
"""Enum type copied from an earlier version of benchling-api-client, for internal use only.
|
51
|
+
|
52
|
+
See BNCH-108704.
|
53
|
+
"""
|
54
|
+
|
55
|
+
TEXT = "text"
|
56
|
+
FLOAT = "float"
|
57
|
+
INTEGER = "integer"
|
58
|
+
BOOLEAN = "boolean"
|
59
|
+
DATE = "date"
|
60
|
+
DATETIME = "datetime"
|
61
|
+
SECURE_TEXT = "secure_text"
|
62
|
+
JSON = "json"
|
63
|
+
|
64
|
+
def __str__(self) -> str:
|
65
|
+
return str(self.value)
|
66
|
+
|
67
|
+
@staticmethod
|
68
|
+
@lru_cache(maxsize=None)
|
69
|
+
def of_unknown(val: str) -> "_ScalarConfigTypes":
|
70
|
+
if not isinstance(val, str):
|
71
|
+
raise ValueError(f"Value of _ScalarConfigTypes must be a string (encountered: {val})")
|
72
|
+
newcls = Enum("_ScalarConfigTypes", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
|
73
|
+
return cast(_ScalarConfigTypes, getattr(newcls, "_UNKNOWN"))
|
74
|
+
|
75
|
+
|
76
|
+
def _field_definitions_from_dependency(
|
77
|
+
dependency: Union[
|
78
|
+
EntitySchemaDependency,
|
79
|
+
SchemaDependency,
|
80
|
+
WorkflowTaskSchemaDependency,
|
81
|
+
WorkflowTaskSchemaDependencyOutput,
|
82
|
+
]
|
83
|
+
) -> List[FieldDefinitionsManifest]:
|
84
|
+
"""Safely return a list of field definitions from a schema dependency or empty list."""
|
85
|
+
try:
|
86
|
+
if hasattr(dependency, "field_definitions"):
|
87
|
+
return dependency.field_definitions
|
88
|
+
# We can't seem to handle this programmatically by checking isinstance() or field truthiness
|
89
|
+
except NotPresentError:
|
90
|
+
pass
|
91
|
+
return []
|
92
|
+
|
93
|
+
|
94
|
+
def _element_definition_from_dependency(dependency: ManifestArrayConfig) -> List[_ArrayElementDependency]:
|
95
|
+
"""Safely return an element definition as a list of dependencies from an array dependency or empty list."""
|
96
|
+
try:
|
97
|
+
if hasattr(dependency, "element_definition"):
|
98
|
+
return [
|
99
|
+
_fix_element_definition_deserialization(element) for element in dependency.element_definition
|
100
|
+
]
|
101
|
+
# We can't seem to handle this programmatically by checking isinstance() or field truthiness
|
102
|
+
except NotPresentError:
|
103
|
+
pass
|
104
|
+
return []
|
105
|
+
|
106
|
+
|
107
|
+
def _enum_from_dependency(
|
108
|
+
dependency: Union[
|
109
|
+
ManifestFloatScalarConfig,
|
110
|
+
ManifestIntegerScalarConfig,
|
111
|
+
ManifestTextScalarConfig,
|
112
|
+
]
|
113
|
+
) -> List:
|
114
|
+
"""Safely return an enum from a scalar config."""
|
115
|
+
try:
|
116
|
+
if hasattr(dependency, "enum"):
|
117
|
+
return dependency.enum
|
118
|
+
# We can't seem to handle this programmatically by checking isinstance() or field truthiness
|
119
|
+
except NotPresentError:
|
120
|
+
pass
|
121
|
+
return []
|
122
|
+
|
123
|
+
|
124
|
+
# TODO BNCH-57036 All element definitions currently deserialize to UnknownType. Hack around this temporarily
|
125
|
+
def _fix_element_definition_deserialization(
|
126
|
+
element: Union[UnknownType, _ArrayElementDependency]
|
127
|
+
) -> _ArrayElementDependency:
|
128
|
+
if isinstance(element, UnknownType):
|
129
|
+
if "type" in element.value:
|
130
|
+
element_type = element.value["type"]
|
131
|
+
if element_type == WorkflowTaskSchemaDependencyType.WORKFLOW_TASK_SCHEMA:
|
132
|
+
return WorkflowTaskSchemaDependency.from_dict(element.value)
|
133
|
+
elif element_type == EntitySchemaDependencyType.ENTITY_SCHEMA:
|
134
|
+
return EntitySchemaDependency.from_dict(element.value)
|
135
|
+
elif element_type in [member.value for member in SchemaDependencyTypes]:
|
136
|
+
return SchemaDependency.from_dict(element.value)
|
137
|
+
elif element_type == DropdownDependencyTypes.DROPDOWN:
|
138
|
+
return DropdownDependency.from_dict(element.value)
|
139
|
+
elif element_type in [member.value for member in ResourceDependencyTypes]:
|
140
|
+
return ResourceDependency.from_dict(element.value)
|
141
|
+
elif element_type in [member.value for member in _ScalarConfigTypes]:
|
142
|
+
return type(element_type).from_dict(element.value)
|
143
|
+
raise NotImplementedError(f"No array deserialization fix for {element}")
|
144
|
+
return element
|
145
|
+
|
146
|
+
|
147
|
+
def _workflow_task_schema_output_from_dependency(
|
148
|
+
dependency: WorkflowTaskSchemaDependency,
|
149
|
+
) -> Optional[WorkflowTaskSchemaDependencyOutput]:
|
150
|
+
"""Safely return a workflow task schema output from a workflow task schema or None."""
|
151
|
+
try:
|
152
|
+
if hasattr(dependency, "output"):
|
153
|
+
return dependency.output
|
154
|
+
# We can't seem to handle this programmatically by checking isinstance() or output truthiness
|
155
|
+
except NotPresentError:
|
156
|
+
pass
|
157
|
+
return None
|
158
|
+
|
159
|
+
|
160
|
+
def _options_from_dependency(dependency: DropdownDependency) -> List[BaseManifestConfig]:
|
161
|
+
"""Safely return a list of options from a dropdown dependency or empty list."""
|
162
|
+
try:
|
163
|
+
if hasattr(dependency, "options"):
|
164
|
+
return dependency.options
|
165
|
+
# We can't seem to handle this programmatically by checking isinstance() or field truthiness
|
166
|
+
except NotPresentError:
|
167
|
+
pass
|
168
|
+
return []
|
169
|
+
|
170
|
+
|
171
|
+
def _subtype_from_entity_schema_dependency(
|
172
|
+
dependency: EntitySchemaDependency,
|
173
|
+
) -> Optional[SchemaDependencySubtypes]:
|
174
|
+
"""Safely return an entity schema dependency's subtype, if present."""
|
175
|
+
try:
|
176
|
+
if hasattr(dependency, "subtype") and dependency.subtype:
|
177
|
+
return dependency.subtype
|
178
|
+
# We can't seem to handle this programmatically by checking isinstance() or field truthiness
|
179
|
+
except NotPresentError:
|
180
|
+
pass
|
181
|
+
return None
|
182
|
+
|
183
|
+
|
184
|
+
def datetime_config_value_to_str(value: datetime) -> str:
|
185
|
+
"""Convert a datetime value to a valid string accepted by a datetime app config item."""
|
186
|
+
return value.strftime("%Y-%m-%d %I:%M:%S %p")
|