benchling-sdk 1.21.0__tar.gz → 1.21.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/PKG-INFO +1 -1
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/helpers/webhook_helpers.py +24 -6
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/status/framework.py +1 -1
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/serialization_helpers.py +1 -1
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/pyproject.toml +80 -22
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/LICENSE +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/README.md +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/canvas/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/canvas/errors.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/canvas/framework.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/canvas/types.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/cryptography_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/decryption_provider.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/errors.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/framework.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/mock_config.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/types.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/framework.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/helpers/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/helpers/manifest_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/status/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/status/errors.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/status/helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/status/types.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/types.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/auth/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/auth/api_key_auth.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/auth/bearer_token_auth.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/auth/client_credentials_oauth2.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/benchling.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/docs/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/docs/__main__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/errors.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/client_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/constants.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/decorators.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/file_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/logging_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/package_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/pagination_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/response_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/retry_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/task_helpers.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/transaction_manager.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/models/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/models/webhooks/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/models/webhooks/v0/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/py.typed +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/alpha/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/alpha/v2_alpha_app_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/alpha/v2_alpha_assembly_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/base_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_analysis_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_app_definition_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_app_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_audit_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_collaboration_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_entry_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_folder_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_project_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_worklist_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/__init__.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/aa_sequence_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/api_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/app_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/assay_result_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/assay_run_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/blob_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/box_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/codon_usage_table_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/container_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/custom_entity_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/custom_notation_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dna_alignments_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dna_oligo_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dna_sequence_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dropdown_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/entity_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/entry_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/enzyme_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/event_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/export_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/feature_library_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/folder_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/instrument_query_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/inventory_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/lab_automation_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/label_template_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/location_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/mixture_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/molecule_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/monomer_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/oligo_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/organization_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/plate_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/printer_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/project_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/registry_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/request_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/rna_oligo_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/rna_sequence_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/schema_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/task_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/team_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/user_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/warehouse_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/workflow_flowchart_config_version_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/workflow_flowchart_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/workflow_output_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/workflow_task_group_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/workflow_task_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/v2_alpha_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/v2_beta_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/v2_stable_service.py +0 -0
- {benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2_service.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
import base64
|
2
2
|
from datetime import datetime, timedelta, timezone
|
3
|
-
from typing import
|
3
|
+
from typing import cast, List, Optional, Protocol, Union
|
4
4
|
|
5
5
|
from benchling_api_client.v2.benchling_client import BenchlingApiClient
|
6
6
|
import httpx
|
@@ -12,6 +12,21 @@ from benchling_sdk.helpers.package_helpers import _required_packages_context, Ex
|
|
12
12
|
from benchling_sdk.services.v2.stable.api_service import build_json_response
|
13
13
|
|
14
14
|
|
15
|
+
class HeadersMapping(Protocol):
|
16
|
+
"""
|
17
|
+
A general type for objects that represent request headers.
|
18
|
+
|
19
|
+
This can be a dict, or any `Mapping[str, str]`, or an instance of a class like
|
20
|
+
Flask's Headers class which is dict-like to a limited degree.
|
21
|
+
"""
|
22
|
+
|
23
|
+
def __contains__(self, key: str) -> bool:
|
24
|
+
pass
|
25
|
+
|
26
|
+
def __getitem__(self, key: str) -> str:
|
27
|
+
pass
|
28
|
+
|
29
|
+
|
15
30
|
class WebhookVerificationError(Exception):
|
16
31
|
"""
|
17
32
|
Webhook Verification Error.
|
@@ -146,7 +161,7 @@ def jwks_by_app_definition(
|
|
146
161
|
|
147
162
|
|
148
163
|
def verify_app_installation(
|
149
|
-
app_id: str, data: str, headers:
|
164
|
+
app_id: str, data: str, headers: HeadersMapping, jwk_function: Optional[LegacyGetJwksFunction] = None
|
150
165
|
) -> None:
|
151
166
|
"""
|
152
167
|
Verify a webhook for an app installation (Deprecated).
|
@@ -165,7 +180,7 @@ def verify_app_installation(
|
|
165
180
|
def verify(
|
166
181
|
app_definition_id: str,
|
167
182
|
data: str,
|
168
|
-
headers:
|
183
|
+
headers: HeadersMapping,
|
169
184
|
jwk_function: Optional[GetJwksFunction] = None,
|
170
185
|
) -> None:
|
171
186
|
"""
|
@@ -174,6 +189,9 @@ def verify(
|
|
174
189
|
Verifies that a webhook was a valid webhook from Benchling.
|
175
190
|
Raises WebhookVerificationError if the webhook could not be verified.
|
176
191
|
Resolves JWKs from Benchling with default settings. Pass jwk_function for customization.
|
192
|
+
|
193
|
+
The headers parameter can be a dict, or a dict-like object such as the Headers type
|
194
|
+
from Flask.
|
177
195
|
"""
|
178
196
|
default_jwk_function: GetJwksFunction = jwks_by_app_definition
|
179
197
|
_jwk_function: GetJwksFunction = default_jwk_function if jwk_function is None else jwk_function
|
@@ -201,7 +219,7 @@ def _has_valid_signature(to_verify: str, jwks: jwk.JWKSet, encoded_signatures: L
|
|
201
219
|
def _verify(
|
202
220
|
app_installation_or_definition_id: str,
|
203
221
|
data: str,
|
204
|
-
headers:
|
222
|
+
headers: HeadersMapping,
|
205
223
|
jwk_function: Union[GetJwksFunction, LegacyGetJwksFunction],
|
206
224
|
) -> None:
|
207
225
|
_verify_headers_present(headers)
|
@@ -215,7 +233,7 @@ def _verify(
|
|
215
233
|
raise WebhookVerificationError("No matching signature found")
|
216
234
|
|
217
235
|
|
218
|
-
def _der_signatures_from_versioned_signatures(versioned_signatures: str) -> List[str]:
|
236
|
+
def _der_signatures_from_versioned_signatures(versioned_signatures: List[str]) -> List[str]:
|
219
237
|
"""
|
220
238
|
Parse and return a list of ders signatures from a single string.
|
221
239
|
|
@@ -231,7 +249,7 @@ def _der_signatures_from_versioned_signatures(versioned_signatures: str) -> List
|
|
231
249
|
return der_signatures
|
232
250
|
|
233
251
|
|
234
|
-
def _verify_headers_present(headers:
|
252
|
+
def _verify_headers_present(headers: HeadersMapping) -> None:
|
235
253
|
"""
|
236
254
|
Verify Headers Present.
|
237
255
|
|
@@ -5,7 +5,7 @@ from contextlib import AbstractContextManager
|
|
5
5
|
from types import TracebackType
|
6
6
|
from typing import cast, Iterable, List, Optional, Protocol, Type, TYPE_CHECKING, Union
|
7
7
|
|
8
|
-
from benchling_api_client.v2.stable.types import
|
8
|
+
from benchling_api_client.v2.stable.types import UNSET, Unset
|
9
9
|
|
10
10
|
from benchling_sdk.apps.status.errors import (
|
11
11
|
AppUserFacingError,
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/helpers/serialization_helpers.py
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
from dataclasses import dataclass
|
2
2
|
from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union
|
3
3
|
|
4
|
-
from benchling_api_client.v2.types import
|
4
|
+
from benchling_api_client.v2.types import UNSET, Unset
|
5
5
|
from dataclasses_json import DataClassJsonMixin
|
6
6
|
|
7
7
|
from benchling_sdk.models import CustomFields, Field, Fields, SchemaFieldsQueryParam
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "benchling-sdk"
|
3
|
-
version = "1.21.
|
3
|
+
version = "1.21.1" # NOTE: This version number is ignored and does not correspond to releases (see README)
|
4
4
|
description = "SDK for interacting with the Benchling Platform."
|
5
5
|
authors = ["Benchling Support <support@benchling.com>"]
|
6
6
|
packages = [{include = "benchling_sdk"}]
|
@@ -44,19 +44,16 @@ cryptography = ["cryptography"]
|
|
44
44
|
python-jose = ["python-jose"]
|
45
45
|
|
46
46
|
[tool.poetry.group.dev.dependencies]
|
47
|
-
black = "^22.3.0"
|
48
|
-
isort = "^5.10.1"
|
49
47
|
pre-commit = "^2.6.0"
|
50
48
|
ipython = "^7.16.1"
|
51
49
|
mypy = "^1.13"
|
52
|
-
|
50
|
+
ruff = "^0.7.3"
|
53
51
|
taskipy = "^1.6.0"
|
54
52
|
Jinja2 = "^3.1.2"
|
55
53
|
Markdown = "3.3.4" # Errors in Markdown 3.3.5 related to TypeError: entry_points() got an unexpected keyword argument 'group'
|
56
54
|
toml = "^0.10.2"
|
57
55
|
packaging = "^20.9"
|
58
56
|
coverage = "^5.5"
|
59
|
-
flake8-docstrings = "^1.6.0"
|
60
57
|
ddt = "1.4.4"
|
61
58
|
pytest = "^7.1.2"
|
62
59
|
beautifulsoup4 = "4.10.0"
|
@@ -67,8 +64,6 @@ boto3 = "^1.24.67"
|
|
67
64
|
boto3-stubs = {extras = ["ssm"], version = "1.24.67"}
|
68
65
|
types-s3transfer = "0.6.0.post4"
|
69
66
|
botocore-stubs = "1.28.4"
|
70
|
-
# Used by flake8, version pinning is because v5 removes a deprecated call flake is currently using.
|
71
|
-
importlib-metadata = "^4.13.0"
|
72
67
|
sphinx-multiversion-pre-post-build = "^0.2.4"
|
73
68
|
time-machine = "^2.15.0" # change to >=2.15.0 once we drop Python 3.8 support
|
74
69
|
python-jose = "^3.3.0"
|
@@ -81,29 +76,92 @@ unit = "pytest -s tests/unit/"
|
|
81
76
|
integration = "pytest -vv --reruns 3 --reruns-delay 1 -s tests/integration/"
|
82
77
|
# Separate than unit tests because they intentionally take awhile but still mock Benchling
|
83
78
|
retry_strategy_tests = "pytest -vv --reruns 3 --reruns-delay 1 -s tests/retries/"
|
79
|
+
format = "ruff check . --fix"
|
80
|
+
lint = "ruff check . && mypy ."
|
84
81
|
models = "task generate_models && task sort_models && task format_models"
|
85
82
|
generate_models = "python3 -m regenerate_models"
|
86
83
|
format_models = "black benchling_sdk/models"
|
87
|
-
sort_models = "
|
84
|
+
sort_models = "ruff check benchling_sdk/models --fix"
|
88
85
|
regenerate_docs = "./scripts/regenerate_docs.sh"
|
89
86
|
regenerate_doc_sources = "sphinx-apidoc --module-first -H benchling-sdk -e -f -o sphinx/source . tests* regenerate* > stdout.log 2> stderr.log"
|
90
87
|
check_docs = "python3 -m regenerate_docs --check"
|
91
88
|
|
92
|
-
[tool.
|
93
|
-
|
89
|
+
[tool.ruff]
|
90
|
+
target-version = "py39"
|
91
|
+
line-length = 110
|
92
|
+
exclude = [
|
93
|
+
".git",
|
94
|
+
".mypy_cache",
|
95
|
+
".venv",
|
96
|
+
]
|
97
|
+
|
98
|
+
[tool.ruff.lint]
|
99
|
+
select = ["D", "E", "F", "I", "UP", "B", "PL", "RUF"]
|
100
|
+
ignore = [
|
101
|
+
"D100", # don't require docstring for modules
|
102
|
+
"D104", # don't require docstring for public packages
|
103
|
+
"D105", # don't require docstring for magic methods
|
104
|
+
"D203", # don't require blank line before class docstring
|
105
|
+
"D211", # no-blank-line-before-class
|
106
|
+
"D212", # multi-line-summary-first-line
|
107
|
+
"D213", # multi-line-summary-second-line
|
108
|
+
"D413", # don't require blank line after docstring section
|
109
|
+
|
110
|
+
"E501",
|
111
|
+
"PLR0913",
|
112
|
+
"PLR2004",
|
113
|
+
|
114
|
+
# rules that we can unignore once we've made some code updates:
|
115
|
+
"B006",
|
116
|
+
"B007",
|
117
|
+
"B008",
|
118
|
+
"B009",
|
119
|
+
"B010",
|
120
|
+
"B018",
|
121
|
+
"B028",
|
122
|
+
"B904",
|
123
|
+
"E721",
|
124
|
+
"E731",
|
125
|
+
"PLR0911",
|
126
|
+
"PLW2901",
|
127
|
+
"RUF002",
|
128
|
+
"RUF005",
|
129
|
+
"RUF012",
|
130
|
+
"RUF019",
|
131
|
+
"RUF100",
|
132
|
+
"UP004",
|
133
|
+
"UP006",
|
134
|
+
"UP007",
|
135
|
+
"UP012",
|
136
|
+
"UP015",
|
137
|
+
"UP018",
|
138
|
+
"UP033",
|
139
|
+
"UP037",
|
140
|
+
"UP035",
|
141
|
+
]
|
142
|
+
|
143
|
+
[tool.ruff.lint.isort]
|
144
|
+
combine-as-imports=true
|
145
|
+
default-section="third-party"
|
146
|
+
force-sort-within-sections=true
|
147
|
+
known-first-party=["benchling_sdk"]
|
148
|
+
known-third-party=["attr", "backoff", "benchling_api_client", "benchling_jira_api", "boto3", "bs4", "cryptography", "dataclasses_json", "httpx", "jinja2", "jose", "jwcrypto", "ordered_set", "pytest", "time_machine", "util", "yaml"]
|
149
|
+
order-by-type=false
|
94
150
|
|
95
|
-
[tool.
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
151
|
+
[tool.ruff.lint.per-file-ignores]
|
152
|
+
"tests/*" = [
|
153
|
+
"D100", "D101", "D102", "D104", "D106", "D107", # missing docstrings
|
154
|
+
"PLR2004",
|
155
|
+
]
|
156
|
+
"tests/packaged/run_smoke_test.py" = [
|
157
|
+
"D103", # missing docstrings
|
158
|
+
]
|
159
|
+
# Ignore imperative mood for some class docstrings
|
160
|
+
"benchling_sdk/benchling.py" = ["D401"]
|
161
|
+
"benchling_sdk/services/v2/v2_stable_service.py" = ["D401"]
|
162
|
+
"benchling_sdk/services/v2/stable/assay_run_service.py" = ["D401"]
|
163
|
+
# Scripts that aren't published
|
164
|
+
"regenerate_docs.py" = [ "D103", "D205", "D400", "D415" ]
|
107
165
|
|
108
166
|
[build-system]
|
109
167
|
requires = ["poetry>=1.2"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/cryptography_helpers.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/config/decryption_provider.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/apps/helpers/manifest_helpers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/auth/client_credentials_oauth2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/beta/v2_beta_app_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/api_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/app_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/assay_run_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/blob_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/box_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/container_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dna_oligo_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/dropdown_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/entity_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/entry_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/enzyme_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/event_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/export_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/folder_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/inventory_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/location_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/mixture_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/molecule_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/monomer_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/oligo_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/plate_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/printer_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/project_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/registry_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/request_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/rna_oligo_service.py
RENAMED
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/schema_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/task_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/team_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/user_service.py
RENAMED
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/stable/warehouse_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{benchling_sdk-1.21.0 → benchling_sdk-1.21.1}/benchling_sdk/services/v2/v2_stable_service.py
RENAMED
File without changes
|
File without changes
|