Skip to content

Commit

Permalink
Merge pull request #84 from aarushgarg1110/cover-chip
Browse files Browse the repository at this point in the history
cover chip naming
  • Loading branch information
ndamania00 authored Jan 11, 2025
2 parents e84868e + f7b792e commit 26f3468
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 0 deletions.
6 changes: 6 additions & 0 deletions liminal/base/properties/base_schema_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ class BaseSchemaProperties(BaseModel):
The naming strategies of the schema.
mixture_schema_config : MixtureSchemaConfig | None
The mixture schema config of the schema.
use_registry_id_as_label : bool | None = None
If the schema will display the Registry ID as the main label for items
include_registry_id_in_chips : bool | None = None
If the registry ID is included in the chip for an item
constraint_fields : set[str] | None
Set of constraints of field values for the schema. Set of column names, that specify that their values must be a unique combination in their entities.
_archived : bool | None
Expand All @@ -73,6 +77,8 @@ class BaseSchemaProperties(BaseModel):
entity_type: BenchlingEntityType | None = None
naming_strategies: set[BenchlingNamingStrategy] | None = None
mixture_schema_config: MixtureSchemaConfig | None = None
use_registry_id_as_label: bool | None = None
include_registry_id_in_chips: bool | None = None
constraint_fields: set[str] | None = None
_archived: bool | None = None

Expand Down
4 changes: 4 additions & 0 deletions liminal/entity_schemas/entity_schema_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ class CreateEntitySchemaModel(BaseModel):
registryId: str
type: BenchlingEntityType
mixtureSchemaConfig: MixtureSchemaConfig | None = None
includeRegistryIdInChips: bool | None = None
useOrganizationCollectionAliasForDisplayLabel: bool | None = None
labelingStrategies: list[str] | None = None
constraint: EntitySchemaConstraint | None = None

Expand Down Expand Up @@ -163,6 +165,8 @@ def from_benchling_props(
registryId=benchling_service.registry_id,
type=benchling_props.entity_type,
mixtureSchemaConfig=benchling_props.mixture_schema_config,
includeRegistryIdInChips=benchling_props.include_registry_id_in_chips,
useOrganizationCollectionAliasForDisplayLabel=benchling_props.use_registry_id_as_label,
labelingStrategies=[s.value for s in benchling_props.naming_strategies],
constraint=EntitySchemaConstraint.from_constraint_fields(
benchling_props.constraint_fields
Expand Down
8 changes: 8 additions & 0 deletions liminal/entity_schemas/tag_schema_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ class UpdateTagSchemaModel(BaseModel):
sequenceType: BenchlingSequenceType | None = None
shouldCreateAsOligo: bool | None = None
showResidues: bool | None = None
includeRegistryIdInChips: bool | None = None
useOrganizationCollectionAliasForDisplayLabel: bool | None = None
constraint: TagSchemaConstraint | None = None


Expand Down Expand Up @@ -373,6 +375,12 @@ def update_schema_props(self, update_diff: dict[str, Any]) -> TagSchemaModel:
self.labelingStrategies = [o.value for o in update_props.naming_strategies]
if "mixture_schema_config" in update_diff_names:
self.mixtureSchemaConfig = update_props.mixture_schema_config
if "use_registry_id_as_label" in update_diff_names:
self.useOrganizationCollectionAliasForDisplayLabel = (
update_props.use_registry_id_as_label
)
if "include_registry_id_in_chips" in update_diff_names:
self.includeRegistryIdInChips = update_props.include_registry_id_in_chips

if "constraint_fields" in update_diff_names:
if update_props.constraint_fields:
Expand Down
2 changes: 2 additions & 0 deletions liminal/entity_schemas/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ def convert_tag_schema_to_internal_schema(
),
constraint_fields=constraint_fields,
_archived=tag_schema.archiveRecord is not None,
use_registry_id_as_label=tag_schema.useOrganizationCollectionAliasForDisplayLabel,
include_registry_id_in_chips=tag_schema.includeRegistryIdInChips,
),
{
f.systemName: convert_tag_schema_field_to_field_properties(f, dropdowns_map)
Expand Down
6 changes: 6 additions & 0 deletions liminal/orm/schema_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class SchemaProperties(BaseSchemaProperties):
The naming strategies of the schema.
mixture_schema_config : MixtureSchemaConfig | None
The mixture schema config of the schema.
use_registry_id_as_label : bool | None = None
If the schema will display the Registry ID as the main label for items
include_registry_id_in_chips : bool | None = None
If the registry ID is included in the chip for an item
constraint_fields : set[str] | None
Set of constraints of field values for the schema. Set of column names, that specify that their values must be a unique combination in their entities.
If the entity type is a Sequence, "bases" can be a constraint field.
Expand All @@ -43,6 +47,8 @@ class SchemaProperties(BaseSchemaProperties):
prefix: str
entity_type: BenchlingEntityType
naming_strategies: set[BenchlingNamingStrategy]
use_registry_id_as_label: bool | None = False
include_registry_id_in_chips: bool | None = False
mixture_schema_config: MixtureSchemaConfig | None = None
constraint_fields: set[str] | None = None
_archived: bool = False
Expand Down
4 changes: 4 additions & 0 deletions liminal/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ def mock_benchling_schema(
prefix="MockEntity",
entity_type=BenchlingEntityType.CUSTOM_ENTITY,
naming_strategies=[BenchlingNamingStrategy.NEW_IDS],
use_registry_id_as_label=True,
include_registry_id_in_chips=False,
constraint_fields={"enum_field", "string_field_req"},
)
fields = {
Expand Down Expand Up @@ -348,6 +350,8 @@ class MockEntity(BaseModel):
prefix="MockEntity",
entity_type=BenchlingEntityType.CUSTOM_ENTITY,
naming_strategies=[BenchlingNamingStrategy.NEW_IDS],
use_registry_id_as_label=True,
include_registry_id_in_chips=False,
constraint_fields={"enum_field", "string_field_req"},
)
enum_field: SqlColumn = Column(
Expand Down
13 changes: 13 additions & 0 deletions liminal/tests/test_entity_schema_compare.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,3 +359,16 @@ def test_compare_benchling_schema_fields( # type: ignore[no-untyped-def]
"string_field_req",
"enum_field",
}

# Test when the Benchling schema has different display naming fields
benchling_mismatch_display_fields = copy.deepcopy(mock_benchling_schema)
benchling_mismatch_display_fields[0][0].use_registry_id_as_label = False
mock_get_benchling_entity_schemas.return_value = (
benchling_mismatch_display_fields
)
invalid_models = compare_entity_schemas(mock_benchling_sdk)
assert len(invalid_models["mock_entity"]) == 1
assert isinstance(invalid_models["mock_entity"][0].op, UpdateEntitySchema)
assert invalid_models["mock_entity"][
0
].op.update_props.use_registry_id_as_label

0 comments on commit 26f3468

Please sign in to comment.