Release notes
For full release notes, please visit the GitHub Releases page. Release versions follow semantic versioning. This page will document migration steps needed for major and minor version changes.
v3.1.0
🗒️ Summary
This release adds the ability to define tenant-specific configuration flags for entity schemas. The goal of this is to reflect Benchling's tenant level configuration flags and propagate the logic across Liminal. We have started with the schemas_enable_change_warehouse_name
flag. When set to True
, this flag allows users to change the warehouse name of entity schemas and fields and migrate the changes to your tenants.
Upgrade Steps
-
PR #120: adds ability to define tenant-specific configuration flags for entity schemas.
-
Upgrade step: Remove the
warehouse_access
parameter from theBenchlingConnection
object. Set theconfig_flags
parameter on yourBenchlingConnection
object(s) to aTenantConfigFlags
object. See documentation for BenchlingConnection for full details.
v3.0.0
🗒️ Summary
v3.0.0 release brings Liminal's coverage of entity schemas to 100% parity with Benchling, a big milestone in Liminal's roadmap!! Any property that can be defined on Entity Schemas in Benchling can now be defined and migrated through Liminal. With this release, user's will now be able to define unit aware fields and "Show bases in expanded view" in their Liminal models defined in code.
show_bases_in_expanded_view
has been added to theSchemaProperties
parameters
unit_name
anddecimal_places
has been added to theColumn
parameters.
Next up are results schemas 🚀
Upgrade Steps
- PR #114: adds ability to define unit aware fields for entity schema fields.
-
PR #113: adds ability to define
show_bases_in_expanded_view
for entity schema fields. -
Upgrade step: The guidance for migrating to v3.0.0 is after you've upgraded your liminal package to the latest version, regenerate your schemas defined in code using
liminal generate-files <benchling_tenant> -p [<write_path>]
. This will write your dropdown/schema files based on your Benchling tenant to a specified path, this time with the new properties that are now covered by Liminal. If you do not have many enitty schemas, it may be easier to manually update your schema files with the new properties. Note, you may have to comment out the schema/dropdown imports in yourenv.py
file before generating the files since there may be some breaking changes to your current schema/dropdown files.
v2.0.0
🗒️ Summary
v2.0.0 brings Liminal closer to reaching 100% parity with Benchling Entity Schemas. This release introduces the ability to define namesets, chip naming properties, and constraints on your Liminal entity schema models. Validation has also gone through a major change making it MUCH easier to define custom business logic as validation rules for entities. Now, users can use the @liminal_validator
decorator to define validation functions within Liminal models. When TestSchema.validate() is run, these decorated functions are run on all queried entity rows from the Benchling warehouse, catching any Exceptions
raised and returned a BenchlingValidatorReport
.
constraint_fields
,include_registry_id_in_chips
,use_registry_id_as_label
added to SchemaProperties parameters.__name_template__
can now be defined on Liminal models
- New pattern for defining validation rules
from liminal.validation import ValidationSeverity, liminal_validator
class Pizza(BaseModel, CustomEntityMixin):
...
@liminal_validator
def cook_time_and_temp_validator(self) -> None:
if self.cook_time is not None and self.cook_temp is None:
raise ValueError("Cook temp is required if cook time is set")
if self.cook_time is None and self.cook_temp is not None:
raise ValueError("Cook time is required if cook temp is set")
Next release will aim to finish off coverage for Entity Schemas!
Upgrade Steps
- PR #88: adds ability to defined name templates for entity schemas
- PR #84: adds ability to define chip naming for entity schemas
-
PR #82: adds ability to define constraints for entity schemas.
-
Upgrade step: The guidance for migrating to v2.0.0 is to regenerate your schemas defined in code using
liminal generate-files <benchling_tenant> -p [<write_path>]
. This will recreate your dropdown/schema files, this time with the new properties covered by Liminal. If you do not have many enitty schemas, it may be easier to manually update your schema files with the new properties. -
PR #68: refactors how validators are done in Liminal using a decorator pattern. Refer to the validators page for full details on implementation.
-
Upgrade step: If you don't have validators defined, no action is needed! Otherwise, you will need to manually refactor your validators to use the new pattern.
v1.1.0
Upgrade Steps
- PR #64: makes query function optional in schema classes.
- Remove query functions from schema classes, unless you have custom logic.
- PR #72: block warehouse name changes to operations.
- BenchlingConnetion now takes in
warehouse_access
parameter. If you do not have warehouse access on your Benchling tenant, set this toFalse
.
- BenchlingConnetion now takes in
-
PR #53: move field wh name to base field props.
- Update historical revision files with changed operation signatures.
# Replace UpdateEntitySchemaName with... UpdateEntitySchema('old_warehouse_name', BaseSchemaProperties(warehouse_name='new_warehouse_name')) # Replace UpdateEntitySchemaFieldName with... UpdateEntitySchemaField('entity_schema_warehouse_name', 'field_warehouse_name', BaseFieldProperties(warehouse_name='new_warehouse_name')) # CreateEntitySchemaField no longer takes wh_field_name as a parameter. # Now gets passed in via BaseFieldProperties. CreateEntitySchemaField('entity_schema_warehouse_name', BaseFieldProperties(warehouse_name='new_warehouse_name', ...)) # CreateEntitySchema takes in a list of fields instead of dict[str, Benchling FieldProperties] CreateEntitySchema(BaseSchemaProperties(...), [BaseFieldProperties(...), ...])
-
PR #63: numpy and pandas version tightening.
- numpy = “^1.23.5”
- pandas = ">=1.5.3" --> “^1.5.3"