liminal-orm 4.6.0__tar.gz → 4.6.2__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.
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/PKG-INFO +2 -2
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/connection/benchling_service.py +1 -2
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/pyproject.toml +1 -1
- liminal_orm-4.6.0/liminal/entity_schemas/api_v3.py +0 -160
- liminal_orm-4.6.0/liminal/entity_schemas/entity_schema_models_v3.py +0 -86
- liminal_orm-4.6.0/liminal/enums/benchling_api_entity_type.py +0 -18
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/.gitignore +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/LICENSE.md +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/README.md +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/base_dropdown.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/base_operation.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/base_validation_filters.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/compare_operation.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/name_template_parts.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/properties/base_field_properties.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/properties/base_name_template.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/properties/base_schema_properties.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/base/str_enum.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/cli/cli.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/cli/controller.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/cli/live_test_dropdown_migration.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/cli/live_test_entity_schema_migration.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/cli/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/connection/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/connection/benchling_connection.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/dropdowns/api.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/dropdowns/compare.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/dropdowns/generate_files.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/dropdowns/operations.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/dropdowns/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/api.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/compare.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/entity_schema_models.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/generate_files.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/operations.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/tag_schema_models.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/entity_schemas/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_api_field_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_entity_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_field_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_folder_item_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_naming_strategy.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/benchling_sequence_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/name_template_part_type.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/enums/sequence_constraint.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/external/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/mappers.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/migrate/components.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/migrate/revision.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/migrate/revisions_timeline.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base_model.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base_results_model.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base_tables/registry_entity.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base_tables/schema.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/base_tables/user.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/column.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/mixins.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/name_template.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/name_template_parts.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/relationship.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/results_schema_properties.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/orm/schema_properties.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/py.typed +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/results_schemas/generate_files.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/results_schemas/models/results_schema_model.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/results_schemas/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/conftest.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/from benchling_sdk.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/test_benchling_service.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/test_dropdown_compare.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/tests/test_entity_schema_compare.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/unit_dictionary/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/utils.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/validation/__init__.py +0 -0
- {liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/validation/validation_severity.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: liminal-orm
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.2
|
|
4
4
|
Summary: An ORM and toolkit that builds on top of Benchling's platform to keep your schemas and downstream code dependencies in sync.
|
|
5
5
|
Project-URL: Homepage, https://github.com/dynotx/liminal-orm
|
|
6
6
|
Project-URL: Repository, https://github.com/dynotx/liminal-orm
|
|
@@ -43,7 +43,6 @@ class SSODisabledError(ValueError):
|
|
|
43
43
|
class BenchlingService(Benchling):
|
|
44
44
|
"""
|
|
45
45
|
Class that creates a connection object that can be used to connect to Benchling's API, database, or internal API.
|
|
46
|
-
This inherits from LiminalBenchlingService, which takes in credentials and connects the specified services.
|
|
47
46
|
|
|
48
47
|
Parameters
|
|
49
48
|
----------
|
|
@@ -398,7 +397,7 @@ class BenchlingService(Benchling):
|
|
|
398
397
|
)
|
|
399
398
|
if not signin_response.ok:
|
|
400
399
|
raise ValueError(
|
|
401
|
-
f"Failed to sign in to Benchling: {signin_response.
|
|
400
|
+
f"Failed to sign in to Benchling: {signin_response.reason}. Ensure your email and password are correct."
|
|
402
401
|
)
|
|
403
402
|
if not signin_response.headers.get("Set-Cookie"):
|
|
404
403
|
raise ValueError(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "liminal-orm"
|
|
3
|
-
version = "4.6.
|
|
3
|
+
version = "4.6.2"
|
|
4
4
|
description = "An ORM and toolkit that builds on top of Benchling's platform to keep your schemas and downstream code dependencies in sync."
|
|
5
5
|
authors = [{ name = "DynoTx Open Source", email = "opensource@dynotx.com" }]
|
|
6
6
|
requires-python = ">=3.9,<4"
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
import requests
|
|
5
|
-
|
|
6
|
-
from liminal.connection import BenchlingService
|
|
7
|
-
from liminal.enums.benchling_api_entity_type import BenchlingAPIEntityType
|
|
8
|
-
from liminal.utils import await_queued_response
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def create_entity_schema(
|
|
12
|
-
benchling_service: BenchlingService,
|
|
13
|
-
api_entity_type: BenchlingAPIEntityType,
|
|
14
|
-
payload: dict[str, Any],
|
|
15
|
-
) -> dict[str, Any]:
|
|
16
|
-
"""
|
|
17
|
-
Create a new entity schema.
|
|
18
|
-
"""
|
|
19
|
-
response = benchling_service.api.post_response(
|
|
20
|
-
url=f"/api/v3-alpha/benchling/{api_entity_type.value}", body=payload
|
|
21
|
-
)
|
|
22
|
-
if not (200 <= response.status_code < 300):
|
|
23
|
-
raise Exception("Failed to create entity schema:", response.content)
|
|
24
|
-
return json.loads(response.content)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def get_entity_schema(
|
|
28
|
-
benchling_service: BenchlingService,
|
|
29
|
-
api_entity_type: BenchlingAPIEntityType,
|
|
30
|
-
entity_schema_id: str,
|
|
31
|
-
) -> dict[str, Any]:
|
|
32
|
-
"""
|
|
33
|
-
Get an entity schema.
|
|
34
|
-
"""
|
|
35
|
-
response = benchling_service.api.get_response(
|
|
36
|
-
url=f"/api/v3-alpha/benchling/{api_entity_type.value}/{entity_schema_id}"
|
|
37
|
-
)
|
|
38
|
-
if not (200 <= response.status_code < 300):
|
|
39
|
-
raise Exception("Failed to get entity schema:", response.content)
|
|
40
|
-
return json.loads(response.content)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def list_entity_schemas(
|
|
44
|
-
benchling_service: BenchlingService,
|
|
45
|
-
) -> dict[str, Any]:
|
|
46
|
-
"""
|
|
47
|
-
List all entity schemas.
|
|
48
|
-
"""
|
|
49
|
-
response = benchling_service.api.get_response(
|
|
50
|
-
url="/api/v3-alpha/benchling/entity-schema/items"
|
|
51
|
-
)
|
|
52
|
-
if not (200 <= response.status_code < 300):
|
|
53
|
-
raise Exception("Failed to get entity schema:", response.content)
|
|
54
|
-
return json.loads(response.content)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def get_entity_schema_field_definitions(
|
|
58
|
-
benchling_service: BenchlingService,
|
|
59
|
-
api_entity_type: BenchlingAPIEntityType,
|
|
60
|
-
entity_schema_id: str,
|
|
61
|
-
) -> dict[str, Any]:
|
|
62
|
-
"""
|
|
63
|
-
Get the field definitions for an entity schema.
|
|
64
|
-
"""
|
|
65
|
-
response = benchling_service.api.get_response(
|
|
66
|
-
url=f"/api/v3-alpha/benchling/{api_entity_type.value}/{entity_schema_id}/field-definitions/items"
|
|
67
|
-
)
|
|
68
|
-
if not (200 <= response.status_code < 300):
|
|
69
|
-
raise Exception("Failed to get entity schema:", response.content)
|
|
70
|
-
return json.loads(response.content)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def get_entity_schema_fieldsets(
|
|
74
|
-
benchling_service: BenchlingService,
|
|
75
|
-
api_entity_type: BenchlingAPIEntityType,
|
|
76
|
-
entity_schema_id: str,
|
|
77
|
-
) -> dict[str, Any]:
|
|
78
|
-
"""
|
|
79
|
-
Get the fieldsets for an entity schema.
|
|
80
|
-
"""
|
|
81
|
-
response = benchling_service.api.get_response(
|
|
82
|
-
url=f"/api/v3-alpha/benchling/{api_entity_type.value}/{entity_schema_id}/fieldsets/items"
|
|
83
|
-
)
|
|
84
|
-
if not (200 <= response.status_code < 300):
|
|
85
|
-
raise Exception("Failed to get entity schema:", response.content)
|
|
86
|
-
return json.loads(response.content)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
# def archive_tag_schemas(
|
|
90
|
-
# benchling_service: BenchlingService, entity_schema_ids: list[str]
|
|
91
|
-
# ) -> dict[str, Any]:
|
|
92
|
-
# """
|
|
93
|
-
# Archive a list of entity schema ids.
|
|
94
|
-
# """
|
|
95
|
-
# with requests.Session() as session:
|
|
96
|
-
# response = session.post(
|
|
97
|
-
# f"https://{benchling_service.benchling_tenant}.benchling.com/1/api/tag-schemas:bulk-archive",
|
|
98
|
-
# data=json.dumps({"ids": entity_schema_ids, "purpose": "Made in error"}),
|
|
99
|
-
# headers=benchling_service.custom_post_headers,
|
|
100
|
-
# cookies=benchling_service.custom_post_cookies,
|
|
101
|
-
# )
|
|
102
|
-
# if not response.ok:
|
|
103
|
-
# raise Exception("Failed to archive tag schemas:", response.content)
|
|
104
|
-
# return response.json()
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
# def unarchive_tag_schemas(
|
|
108
|
-
# benchling_service: BenchlingService, entity_schema_ids: list[str]
|
|
109
|
-
# ) -> dict[str, Any]:
|
|
110
|
-
# """
|
|
111
|
-
# Unarchive a list of entity schema ids.
|
|
112
|
-
# """
|
|
113
|
-
# with requests.Session() as session:
|
|
114
|
-
# response = session.post(
|
|
115
|
-
# f"https://{benchling_service.benchling_tenant}.benchling.com/1/api/tag-schemas:bulk-unarchive",
|
|
116
|
-
# data=json.dumps({"ids": entity_schema_ids}),
|
|
117
|
-
# headers=benchling_service.custom_post_headers,
|
|
118
|
-
# cookies=benchling_service.custom_post_cookies,
|
|
119
|
-
# )
|
|
120
|
-
# if not response.ok:
|
|
121
|
-
# raise Exception("Failed to unarchive tag schemas:", response.content)
|
|
122
|
-
# return response.json()
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
# def update_tag_schema(
|
|
126
|
-
# benchling_service: BenchlingService, entity_schema_id: str, payload: dict[str, Any]
|
|
127
|
-
# ) -> dict[str, Any]:
|
|
128
|
-
# """
|
|
129
|
-
# Update the tag schema with a new field.
|
|
130
|
-
# """
|
|
131
|
-
# with requests.Session() as session:
|
|
132
|
-
# queued_response = session.post(
|
|
133
|
-
# f"https://{benchling_service.benchling_tenant}.benchling.com/1/api/tag-schemas/{entity_schema_id}/actions/update",
|
|
134
|
-
# data=json.dumps(payload),
|
|
135
|
-
# headers=benchling_service.custom_post_headers,
|
|
136
|
-
# cookies=benchling_service.custom_post_cookies,
|
|
137
|
-
# )
|
|
138
|
-
# if not queued_response.ok:
|
|
139
|
-
# raise Exception("Failed to update tag schema:", queued_response.content)
|
|
140
|
-
# return await_queued_response(
|
|
141
|
-
# queued_response.json()["status_url"], benchling_service
|
|
142
|
-
# )
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
# def set_tag_schema_name_template(
|
|
146
|
-
# benchling_service: BenchlingService, entity_schema_id: str, payload: dict[str, Any]
|
|
147
|
-
# ) -> dict[str, Any]:
|
|
148
|
-
# """
|
|
149
|
-
# Update the tag schema name template. Must be in a separate endpoint compared to update_tag_schema.
|
|
150
|
-
# """
|
|
151
|
-
# with requests.Session() as session:
|
|
152
|
-
# response = session.post(
|
|
153
|
-
# f"https://{benchling_service.benchling_tenant}.benchling.com/1/api/tag-schemas/{entity_schema_id}/actions/set-name-template",
|
|
154
|
-
# data=json.dumps(payload),
|
|
155
|
-
# headers=benchling_service.custom_post_headers,
|
|
156
|
-
# cookies=benchling_service.custom_post_cookies,
|
|
157
|
-
# )
|
|
158
|
-
# if not response.ok:
|
|
159
|
-
# raise Exception("Failed to set tag schema name template:", response.content)
|
|
160
|
-
# return response.json()
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
-
from liminal.connection import BenchlingService
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class EntitySchemaOrganizationRefV2(BaseModel):
|
|
10
|
-
id: str
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class EntitySchemaConstraintV2(BaseModel):
|
|
14
|
-
fieldDefinitionNames: list[str] = Field(default_factory=list)
|
|
15
|
-
hasUniqueResidues: bool | None = None
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class FieldDefinitionLinkRefV2(BaseModel):
|
|
19
|
-
id: str
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class EntitySchemaFieldDefinitionV2(BaseModel):
|
|
23
|
-
id: str
|
|
24
|
-
name: str
|
|
25
|
-
archived: bool
|
|
26
|
-
systemName: str
|
|
27
|
-
isMulti: bool | None = None
|
|
28
|
-
isRequired: bool
|
|
29
|
-
derivationType: str
|
|
30
|
-
isParent: bool | None = None
|
|
31
|
-
archiveReason: str | None = None
|
|
32
|
-
description: str | None = None
|
|
33
|
-
linkDefinition: FieldDefinitionLinkRefV2 | None = None
|
|
34
|
-
__typename: str | None = None
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class EntitySchemaModelV2(BaseModel):
|
|
38
|
-
"""Pydantic model for Benchling entity schema API payloads (e.g. RnaSequenceSchema)."""
|
|
39
|
-
|
|
40
|
-
model_config = ConfigDict(extra="ignore")
|
|
41
|
-
|
|
42
|
-
id: str
|
|
43
|
-
fieldDefinitions: str
|
|
44
|
-
fields: list[EntitySchemaFieldDefinitionV2] = Field(default_factory=list)
|
|
45
|
-
systemName: str
|
|
46
|
-
itemIdPrefix: str
|
|
47
|
-
containableType: str
|
|
48
|
-
fieldsets: str
|
|
49
|
-
systemCategories: list[Any] = Field(default_factory=list)
|
|
50
|
-
organization: EntitySchemaOrganizationRefV2
|
|
51
|
-
modifiedAt: str
|
|
52
|
-
includeRegistryIdInChips: bool | None = None
|
|
53
|
-
useRegistryIdForItemDisplayLabel: bool | None = None
|
|
54
|
-
availableRegistrationNamingOptions: list[str] = Field(default_factory=list)
|
|
55
|
-
archived: bool | None = None
|
|
56
|
-
name: str
|
|
57
|
-
description: str | None = None
|
|
58
|
-
showResidues: bool | None = None
|
|
59
|
-
createdAt: str
|
|
60
|
-
constraint: EntitySchemaConstraintV2 | None = None
|
|
61
|
-
archiveReason: str | None = None
|
|
62
|
-
__typename: str | None = None
|
|
63
|
-
|
|
64
|
-
@classmethod
|
|
65
|
-
def get_one(
|
|
66
|
-
cls,
|
|
67
|
-
benchling_service: BenchlingService,
|
|
68
|
-
wh_schema_name: str,
|
|
69
|
-
schemas_data: list[dict[str, Any]] | None = None,
|
|
70
|
-
) -> EntitySchemaModelV2:
|
|
71
|
-
if schemas_data is None:
|
|
72
|
-
schemas_data = cls.get_all_json(benchling_service)
|
|
73
|
-
schema = next(
|
|
74
|
-
(
|
|
75
|
-
schema
|
|
76
|
-
for schema in schemas_data
|
|
77
|
-
if schema["sqlIdentifier"] == wh_schema_name
|
|
78
|
-
and schema["registryId"] == benchling_service.registry_id
|
|
79
|
-
),
|
|
80
|
-
None,
|
|
81
|
-
)
|
|
82
|
-
if schema is None:
|
|
83
|
-
raise ValueError(
|
|
84
|
-
f"Schema {wh_schema_name} not found in Benchling {benchling_service.benchling_tenant}."
|
|
85
|
-
)
|
|
86
|
-
return cls.model_validate(schema)
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from liminal.base.str_enum import StrEnum
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class BenchlingAPIEntityType(StrEnum):
|
|
5
|
-
"""This enum represents the different types a Benchling field can have on an entity schema.
|
|
6
|
-
These are ONLY USED FOR THE INTERNAL BENCHLING API."""
|
|
7
|
-
|
|
8
|
-
CUSTOM_ENTITY_SCHEMA = "custom-entity-schema"
|
|
9
|
-
AA_SEQUENCE_SCHEMA = "aa-sequence-schema"
|
|
10
|
-
DNA_OLIGO_SCHEMA = "dna-oligo-schema"
|
|
11
|
-
DNA_SEQUENCE_SCHEMA = "dna-sequence-schema"
|
|
12
|
-
OLIGO_CONJUGATE_SCHEMA = "oligo-conjugate-schema"
|
|
13
|
-
OLIGO_DUPLEX_SCHEMA = "oligo-duplex-schema"
|
|
14
|
-
RNA_OLIGO_SCHEMA = "rna-oligo-schema"
|
|
15
|
-
RNA_SEQUENCE_SCHEMA = "rna-sequence-schema"
|
|
16
|
-
MIXTURE_SCHEMA = "mixture-schema"
|
|
17
|
-
MOLECULE_SCHEMA = "molecule-schema"
|
|
18
|
-
EQUIPMENT_SCHEMA = "equipment-schema"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{liminal_orm-4.6.0 → liminal_orm-4.6.2}/liminal/results_schemas/models/results_schema_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|