benchling_sdk.apps.framework module

class App

Bases: Generic[benchling_sdk.apps.framework.ConfigType]

App.

See https://docs.benchling.com/docs/getting-started-benchling-apps

Accepts providers as arguments to lazily initialize since some required attributes may not be known until runtime. Also allows for easier mocking in tests.

__init__(id: str, benchling_provider: BenchlingProvider, tenant_url_provider: TenantUrlProvider, config_provider: ConfigProvider[benchling_sdk.apps.framework.ConfigType] = attr_dict['_config_provider'].default) None

Method generated by attrs for class App.

property benchling: Benchling

Return a Benchling instance for the App.

property config: benchling_sdk.apps.framework.ConfigType

Return config for the app.

Apps which do not have config will raise MissingAppConfigTypeError.

continue_session_context(session_id: str, context_enter_handler: Optional[SessionContextEnterHandler[benchling_sdk.apps.framework.AppType]] = None, context_exit_handler: Optional[SessionContextExitHandler[benchling_sdk.apps.framework.AppType]] = None) SessionContextManager[benchling_sdk.apps.framework.AppType]

Continue Session Context.

Fetch an existing app session from Benchling and enter a context with it.

create_session_context(name: str, timeout_seconds: int, context_enter_handler: Optional[SessionContextEnterHandler[benchling_sdk.apps.framework.AppType]] = None, context_exit_handler: Optional[SessionContextExitHandler[benchling_sdk.apps.framework.AppType]] = None) SessionContextManager[benchling_sdk.apps.framework.AppType]

Create Session Context.

Create a new app session in Benchling.

id: str
classmethod init(id: str, benchling_provider: BenchlingProvider, tenant_url_provider: TenantUrlProvider, config_provider: Optional[ConfigProvider] = None) benchling_sdk.apps.framework.AppType

Init.

Initialize an app from its class.

reset() None

Reset the app.

Generally clears all states and internal caches, which may cause subsequent invocations of the App to be expensive.

with_base_url(base_url: str) benchling_sdk.apps.framework.AppType

Create a new copy of the app with a different base URL.

with_webhook(webhook: Union[dict, WebhookEnvelopeV0]) benchling_sdk.apps.framework.AppType

Create a new copy of the app with a different base URL provided by a webhook.

class BaseAppFactory

Bases: abc.ABC, Generic[benchling_sdk.apps.framework.AppType, benchling_sdk.apps.framework.ConfigType]

Base App Factory.

Can be used as an alternative to init_app() for those who prefer to import a pre-defined app instance globally. Call create() on the factory to initialize an App.

Users must subclass AppFactory and implement its abstract methods to create a subclass of App.

__init__(app_type: Type[benchling_sdk.apps.framework.AppType], app_id: str, config_type: Optional[Type[benchling_sdk.apps.framework.ConfigType]] = None)

Initialize App Factory.

app_id: str
abstract property auth_method: benchling_api_client.v2.benchling_client.AuthorizationMethod

Get an auth method to pass to Benchling.

Must be implemented on all subclasses.

property base_path: Optional[str]

Get a base_path for Benchling.

benchling_provider: BenchlingProvider
property client_decorator: Optional[BenchlingApiClientDecorator]

Get a BenchlingApiClientDecorator for Benchling.

config_provider: ConfigProvider[benchling_sdk.apps.framework.ConfigType]
create() benchling_sdk.apps.framework.AppType

Create an App instance from the factory.

property decryption_provider: Optional[BaseDecryptionProvider]

Get a decryption provider for decryption app config secrets.

property httpx_client: Optional[httpx.Client]

Get a custom httpx Client for Benchling.

property retry_strategy: RetryStrategy

Get a RetryStrategy for Benchling.

property tenant_url_provider: TenantUrlProvider

Get a tenant URL provider that will provide a base URL for Benchling at runtime.

By default, assumes that the App has no base_url and will be provided one later (e.g., from a webhook). Invoking app.benchling on an App in this state without setting a URL will raise an error.

Use tenant_url_provider_static(”https://myurl…”) to specify a single URL.

class BenchlingProvider

Bases: Protocol

Return a Benchling instance.

__init__(*args, **kwargs)
class ConfigProvider

Bases: Protocol[benchling_sdk.apps.framework.ConfigType]

Return a ConfigType instance.

__init__(*args, **kwargs)
exception MalformedAppWebhookError

Bases: Exception

Error when a webhook cannot be read by an app.

exception MissingAppConfigTypeError

Bases: Exception

Error when app config is expected but unspecified.

exception MissingTenantUrlProviderError

Bases: Exception

Error when a base URL is expected but unspecified.

class TenantUrlProvider

Bases: Protocol

Return a base URL.

__init__(*args, **kwargs)
benchling_provider_static(benchling: Benchling) BenchlingProvider

Create a provider function that always returns a static Benchling.

config_provider_error_on_call() ConfigProvider[benchling_sdk.apps.framework.ConfigType]

Create a provider function that raises an error.

Used as a ConfigProvider for apps which don’t support config and don’t expect to invoke it.

config_provider_static(config: benchling_sdk.apps.framework.ConfigType) ConfigProvider[benchling_sdk.apps.framework.ConfigType]

Create a provider function that always returns a static app config.

init_app(app_id: str, benchling_provider: BenchlingProvider, tenant_url_provider: TenantUrlProvider, config_provider: Optional[ConfigProvider[benchling_sdk.apps.framework.ConfigType]] = None) App[benchling_sdk.apps.framework.ConfigType]

Init App.

Initializes a Benchling App with a series of functions to provide App dependencies at runtime.

init_static_app(app_id: str, benchling: Benchling, config: Optional[benchling_sdk.apps.framework.ConfigType] = None) App[benchling_sdk.apps.framework.ConfigType]

Init Static App.

Initializes a Benchling App with static values. Suitable for apps that communicate with a single URL.

tenant_url_provider_lazy() TenantUrlProvider

Create a provider function for app that will be initialized at runtime, such as from a webhook.

Useful for when a base_url for Benchling is not known in advance but can be supplied at runtime.

tenant_url_provider_static(tenant_url: str) TenantUrlProvider

Create a provider function that always returns a static tenant URL.