benchling-sdk 1.10.0a6__py3-none-any.whl → 1.10.0a7__py3-none-any.whl

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.
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import json
3
4
  from typing import cast, Dict, Generic, List, Optional, Protocol, Set, Type, TypeVar, Union
4
5
 
5
6
  from benchling_api_client.v2.extensions import UnknownType
@@ -13,6 +14,7 @@ from benchling_sdk.apps.canvas.types import (
13
14
  UiBlock,
14
15
  UiBlockType,
15
16
  )
17
+ from benchling_sdk.apps.types import JsonType
16
18
  from benchling_sdk.models import (
17
19
  AppCanvas,
18
20
  AppCanvasApp,
@@ -366,6 +368,7 @@ class CanvasBuilder:
366
368
  enabled: bool = True,
367
369
  session_id: Optional[str] = None,
368
370
  blocks: Optional[List[UiBlock]] = None,
371
+ data: Optional[JsonType] = None,
369
372
  ):
370
373
  """
371
374
  Init AppCanvas.
@@ -379,6 +382,7 @@ class CanvasBuilder:
379
382
  enabled=enabled,
380
383
  session_id=session_id,
381
384
  blocks=blocks if blocks else [],
385
+ data=json.dumps(data) if data is not None else None,
382
386
  )
383
387
 
384
388
  @classmethod
@@ -395,6 +399,7 @@ class CanvasBuilder:
395
399
  enabled=canvas.enabled,
396
400
  session_id=canvas.session_id,
397
401
  blocks=canvas.blocks,
402
+ data=json.loads(canvas.data) if canvas.data is not None else None,
398
403
  )
399
404
 
400
405
  def _with_enabled(self, value: bool) -> CanvasBuilder:
@@ -406,6 +411,7 @@ class CanvasBuilder:
406
411
  enabled=value,
407
412
  session_id=self._source_canvas.session_id,
408
413
  blocks=self._source_canvas.blocks,
414
+ data=self._source_canvas.data,
409
415
  )
410
416
 
411
417
  def with_enabled(self, enabled: bool = True) -> CanvasBuilder:
@@ -430,6 +436,23 @@ class CanvasBuilder:
430
436
  enabled=self._source_canvas.enabled,
431
437
  session_id=self._source_canvas.session_id,
432
438
  blocks=new_blocks,
439
+ data=self._source_canvas.data,
440
+ )
441
+
442
+ def with_data(self, new_data: Optional[JsonType]) -> CanvasBuilder:
443
+ """
444
+ Return a new CanvasBuilder with the underlying data replaced.
445
+
446
+ This does not call the API, it only assigns state in the CanvasBuilder.
447
+ """
448
+ return CanvasBuilder(
449
+ app_id=self._source_canvas.app.id,
450
+ feature_id=self._source_canvas.feature_id,
451
+ resource_id=self._source_canvas.resource_id,
452
+ enabled=self._source_canvas.enabled,
453
+ session_id=self._source_canvas.session_id,
454
+ blocks=self._source_canvas.blocks,
455
+ data=new_data,
433
456
  )
434
457
 
435
458
  def with_session_id(self, session_id: Optional[str]) -> CanvasBuilder:
@@ -445,6 +468,7 @@ class CanvasBuilder:
445
468
  enabled=self._source_canvas.enabled,
446
469
  session_id=session_id,
447
470
  blocks=self._source_canvas.blocks,
471
+ data=self._source_canvas.data,
448
472
  )
449
473
 
450
474
  def inputs_to_dict(self) -> Dict[str, Union[str, List[str]]]:
@@ -574,6 +598,7 @@ class CanvasBuilder:
574
598
  enabled=self._source_canvas.enabled,
575
599
  session_id=self._source_canvas.session_id,
576
600
  blocks=[_ui_block_to_update(block) for block in self._source_canvas.blocks],
601
+ data=self._source_canvas.data,
577
602
  )
578
603
 
579
604
  def to_create(self) -> AppCanvasCreate:
@@ -585,6 +610,7 @@ class CanvasBuilder:
585
610
  enabled=self._source_canvas.enabled,
586
611
  session_id=self._source_canvas.session_id,
587
612
  blocks=[_ui_block_to_create(block) for block in self._source_canvas.blocks],
613
+ data=self._source_canvas.data,
588
614
  )
589
615
 
590
616
  @property
@@ -597,6 +623,14 @@ class CanvasBuilder:
597
623
  """
598
624
  return CanvasBuilderBlockStream.from_builder(self)
599
625
 
626
+ def data_to_json(self) -> Optional[JsonType]:
627
+ """
628
+ Convert Canvas data to JSON.
629
+
630
+ Return a JSON object parsed from the string of the canvas's `data`, if present. Otherwise, return None.
631
+ """
632
+ return json.loads(self._source_canvas.data) if self._source_canvas.data is not None else None
633
+
600
634
 
601
635
  def _is_included_class(included_classes: Set[Type[UiBlock]], target_class: UiBlock) -> bool:
602
636
  return isinstance(target_class, tuple(c for c in included_classes))
@@ -45,7 +45,8 @@ from benchling_sdk.apps.config.helpers import (
45
45
  _workflow_task_schema_output_from_dependency,
46
46
  datetime_config_value_to_str,
47
47
  )
48
- from benchling_sdk.apps.config.types import ConfigurationReference, JsonType
48
+ from benchling_sdk.apps.config.types import ConfigurationReference
49
+ from benchling_sdk.apps.types import JsonType
49
50
  from benchling_sdk.helpers.logging_helpers import log_stability_warning, StabilityLevel
50
51
  from benchling_sdk.models import (
51
52
  AppConfigItem,
@@ -1,5 +1,5 @@
1
1
  # Tuple instead of list so it's hashable and preserves order
2
- from typing import Any, Dict, List, Tuple, Union
2
+ from typing import Tuple, Union
3
3
 
4
4
  from benchling_sdk.models import (
5
5
  ArrayElementAppConfigItem,
@@ -34,5 +34,3 @@ ConfigurationReference = Union[
34
34
  SecureTextAppConfigItem,
35
35
  TextAppConfigItem,
36
36
  ]
37
-
38
- JsonType = Union[Dict[str, Any], List[Any], str, int, float, bool]
@@ -0,0 +1,3 @@
1
+ from typing import Any, Dict, List, Union
2
+
3
+ JsonType = Union[Dict[str, Any], List[Any], str, int, float, bool]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-sdk
3
- Version: 1.10.0a6
3
+ Version: 1.10.0a7
4
4
  Summary: SDK for interacting with the Benchling Platform.
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
@@ -17,7 +17,7 @@ Provides-Extra: python-jose
17
17
  Requires-Dist: PyYAML (>=6.0,<7.0)
18
18
  Requires-Dist: attrs (>=20.1.0,<23)
19
19
  Requires-Dist: backoff (>=1.10.0,<2.0.0)
20
- Requires-Dist: benchling-api-client (==2.0.241)
20
+ Requires-Dist: benchling-api-client (==2.0.243)
21
21
  Requires-Dist: certifi (>=2022.12.7)
22
22
  Requires-Dist: cryptography (>=41.0.3,<42.0.0) ; extra == "cryptography"
23
23
  Requires-Dist: dataclasses-json (>=0.5.2,<0.6.0)
@@ -3,7 +3,7 @@ benchling_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  benchling_sdk/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  benchling_sdk/apps/canvas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  benchling_sdk/apps/canvas/errors.py,sha256=5YTZOhSV-O0WqURjB1a676BIO429drCKfz5aQjsezms,358
6
- benchling_sdk/apps/canvas/framework.py,sha256=99Ox8V-CvPjxWNyJQ0eaJmP-O8wABVBumjmfw7UMH5U,22971
6
+ benchling_sdk/apps/canvas/framework.py,sha256=a6XbCZIUsz4VmOCtu6kZnBQoQiLJtBk2Ndw94J0s4kM,24381
7
7
  benchling_sdk/apps/canvas/types.py,sha256=tmuU0kpzd1pXqxs3X6x5kjWpCZJrJMb6hnfN1CbtFG4,3613
8
8
  benchling_sdk/apps/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  benchling_sdk/apps/config/cryptography_helpers.py,sha256=VCzgQURLAitYjcjdwFzMPSKZ7MOD6ghxFdbPGA_6RbY,1778
@@ -11,8 +11,8 @@ benchling_sdk/apps/config/decryption_provider.py,sha256=-HgjkBto8mYlooV0LXFenfai
11
11
  benchling_sdk/apps/config/errors.py,sha256=-qkfLdcUTuuRD-V4L2l7nzQWnWTRuifDtkNDv8tfHoo,800
12
12
  benchling_sdk/apps/config/framework.py,sha256=a2cIkPugEVUfBNtHm2cbE3Qu326xb-SpMuM0Gi6U-3Q,13337
13
13
  benchling_sdk/apps/config/helpers.py,sha256=LTLDR0GCDoo_8Sx4kepQnMmgVEQT7MHfKAxIoAvV9TM,7077
14
- benchling_sdk/apps/config/mock_config.py,sha256=kMSKL5P5upxGW4O0R7CY9F3FvWjE5fH6bymmpuQ4k98,26931
15
- benchling_sdk/apps/config/types.py,sha256=loVMi9RshnP3dGmdTRm6ckkI3Hm-ZeMx0fAZdAMFJ9E,1038
14
+ benchling_sdk/apps/config/mock_config.py,sha256=EPUCxWiUSsWxWilnHAJIq-_f1q6ckZkXoIFv1S25hnM,26967
15
+ benchling_sdk/apps/config/types.py,sha256=XKfSGv-75CU-j1XwfXBGq8zbtnkF-PQnuY6Z2U47-Tg,953
16
16
  benchling_sdk/apps/framework.py,sha256=H51rAzwH4PQHMGTxx2MdYgHMW1oKa_FLnozzY8XGL2g,3308
17
17
  benchling_sdk/apps/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  benchling_sdk/apps/helpers/manifest_helpers.py,sha256=yidiKA5mwWdAFR1ZSUu40QoG0Us-bc6V8tYHYqheEtM,945
@@ -22,6 +22,7 @@ benchling_sdk/apps/status/errors.py,sha256=E9PugMd0YwZQWweTztIZyqycECBuVvH6PcLfi
22
22
  benchling_sdk/apps/status/framework.py,sha256=CWPIlj8WhRZeIImCLka9LmhXvzbK0be9ekdLxiUKKJk,26358
23
23
  benchling_sdk/apps/status/helpers.py,sha256=o8jdgdxUYdGh2j0Gb3AYoeXI9Bu-ubyIkgWBuCGLKgE,705
24
24
  benchling_sdk/apps/status/types.py,sha256=vE7-_7ns3mvPRJoVv-GQxc3389dIIH4mcG0VDNWpVhQ,746
25
+ benchling_sdk/apps/types.py,sha256=TBTfAB3IOoZjZqzTOK25kN3b6RTU9Z7tOMdBbq6u8lA,110
25
26
  benchling_sdk/auth/__init__.py,sha256=N4pJYVUnTLzg5HO9ZldHaI-Am97i6AOCdQS0M5QcVpA,120
26
27
  benchling_sdk/auth/api_key_auth.py,sha256=Ui-cnvGMjcwVPV_b2GdBaoTjEyHJIu9CjtZScVBEUvU,641
27
28
  benchling_sdk/auth/bearer_token_auth.py,sha256=nymI8V91evcnK-TWKkBXZwck8U1qSh4WaseyQbvF-Cg,1268
@@ -114,7 +115,7 @@ benchling_sdk/services/v2/v2_alpha_service.py,sha256=vNfYK0Dheml9ozR_0tzTlA3blPD
114
115
  benchling_sdk/services/v2/v2_beta_service.py,sha256=7v9ngWH_XTinkVC7bIxxbaA1UeFQqkzR4ANGtQQN-fA,11521
115
116
  benchling_sdk/services/v2/v2_stable_service.py,sha256=YIc-_0p6x1NQqj7awnWgCTHxbxYO7ZOolePZyW90whc,35246
116
117
  benchling_sdk/services/v2_service.py,sha256=3eoIjYEmGLPdWCpBN0pl7q7_HNWCsUvfvTn3Hcz0wSM,2860
117
- benchling_sdk-1.10.0a6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
118
- benchling_sdk-1.10.0a6.dist-info/METADATA,sha256=qh_k4Rt0UQn_8-6_wadg9SPAsbr04LhJP4jlWhaTMYQ,2126
119
- benchling_sdk-1.10.0a6.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
120
- benchling_sdk-1.10.0a6.dist-info/RECORD,,
118
+ benchling_sdk-1.10.0a7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
119
+ benchling_sdk-1.10.0a7.dist-info/METADATA,sha256=GKfUuppZ9cw6GIv2w-jZQ_I4B5sm1I-2jXS2h_ccb4Q,2126
120
+ benchling_sdk-1.10.0a7.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
121
+ benchling_sdk-1.10.0a7.dist-info/RECORD,,