Skip to content

v5.0.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 05:19
· 22 commits to main since this release

πŸ—’οΈ 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

  1. Remove internal_api_admin_email, internal_api_admin_password, and playwright_data_dir from BenchlingConnection definitions.
  2. Remove use_internal_api from BenchlingService definitions.
  3. 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_email and internal_api_admin_password properties in BenchlingConnection have been removed. use_internal_api property in BenchlingService has 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) and bases (exact match). This will have to be defined through the Benchling UI until this is supported in the v3 API.
  • Updated SchemaProperties validation; setting invalid schema-specific properties will now raise an error.

Internal Changes

  • Removed pre-v3 enums BenchlingAPIFieldType, BenchlingFolderItemType, BenchlingSequenceType.
  • Removed TagSchemaModel, v2 EntitySchemaModel, and linked classes for pre-v3 data models.

Non-breaking Changes

  • Removed playwright, bs4, lxml, and requests dependencies.
  • Added new UnarchiveDropdownOption operation.

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

🐞 Bug Fixes

πŸ“” Documentation

⛏ Dependency Changes

🚧 Tasks