Repository navigation
v5.0.0
ποΈ Summary
v5.0.0 release fully migrates Liminal to the v3 Benchling API, a big milestone in Liminal's roadmap! This removes the dependencies on Benchling's internal API, and migrates the underlying and data models to match Benchling's v3 endpoints. Most notably, BenchlingConnection no longer should have internal_api_admin_email and internal_api_admin_password set. These properties are denoted as deprecated, and will be officially removed from the class in the v6 Liminal release.
With this release, the technical decision was made to maintain Liminal's interface, in order to limit the amount of breaking changes for users with existing schemas defined in code. This means that certain enums and properties in Liminal's interface may be different compared to Benchling's v3 API in some cases, but ultimately the functionality remains the same. Liminal was originally built on Benchling's v2 API and internal API. Benchling's v3 API endpoints have modfied the response shape and property names in some cases. After this Liminal v5 release has time to settle and Benchling's v3 API becomes more stable, the decision may be made to refactor Liminal's interface to mirror Benchling's v3 API 1-to-1.
It is also important to note that Benchling's v3 API currently has strict Rate Limits. Each v3 endpoint is assigned a rate limit tier, and the List endpoints are limited to 50 requests per minute. The rate limit budget replenishes at roughly 0.8 requests per second, and any request that gets sent past the rate limit responds with a HTTP 429 Error. As a result, Liminal v5 commands with heavy endpoint usage may be slower than Liminal v4, especially for tenants with many schemas and dropodwns. As Benchling gathers usage statistics of v3 endpoints, this rate limit is likely to change.
π Upgrade Steps
- Remove
internal_api_admin_email,internal_api_admin_password, andplaywright_data_dirfromBenchlingConnectiondefinitions. - Remove
use_internal_apifromBenchlingServicedefinitions. - Run
liminal current <benchling_tenant_name>to test. Reach out if you have any issues or questions!
βοΈ Changes
Breaking Changes
- Authentication and connnecting with the BenchlingService
internal_api_admin_emailandinternal_api_admin_passwordproperties inBenchlingConnectionhave been removed.use_internal_apiproperty inBenchlingServicehas also been removed. Liminal no longer connects the Benchling's internal API, so the authentication properties are no longer needed.
- Sequence Constraints
- Benchling's v3 API currently is unable to set sequence constraints. The v3 API cannot differentiate between
bases (ignore case)andbases (exact match). This will have to be defined through the Benchling UI until this is supported in the v3 API.
- Benchling's v3 API currently is unable to set sequence constraints. The v3 API cannot differentiate between
- Updated
SchemaPropertiesvalidation; setting invalid schema-specific properties will now raise an error.
Internal Changes
- Removed pre-v3 enums
BenchlingAPIFieldType,BenchlingFolderItemType,BenchlingSequenceType. - Removed
TagSchemaModel, v2EntitySchemaModel, and linked classes for pre-v3 data models.
Non-breaking Changes
- Removed
playwright,bs4,lxml, andrequestsdependencies. - Added new
UnarchiveDropdownOptionoperation.
PRs
- PR #243: collection of bug fixes.
- PR #242: refactors and removes _v3 suffixes.
- PR #241: renames mapper function names.
- PR #240: updates documentation for v5.0.0 release.
- PR #239: removes unused dependencies.
- PR #238: removes all code that depended on Benchling's internal API.
- PR #233: migrates results schemas to the v3 API.
- PR #232: migrates entity schemas to the v3 API.
- PR #213: migrates dropdowns to the v3 API.
- PR #236: adds v3 API helpers (pagination, rate limiting, async task polling).
βοΈ Minor Enhancements
- Clean up old code that depended on internal api (#238) @ndamania00
- Results schemas to v3 (#233) @ndamania00
- Entity schemas to v3 (#232) @ndamania00
- Dropdowns to v3 (#213) @ndamania00
- add v3 api files (#236) @ndamania00
- add liminal head --reset command (#244) @ndamania00
π Bug Fixes
- Last testing bug fixes (#243) @ndamania00
π Documentation
- Update documentation for release (#240) @ndamania00
β Dependency Changes
- Clean up dependencies (#239) @ndamania00
π§ Tasks
- refactor and remove all _v3 suffixes (#242) @ndamania00
- rename mappers from convert_ to map_ (#241) @ndamania00