UncountablePythonSDK 0.0.112__py3-none-any.whl → 0.0.113__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.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

@@ -1,5 +1,6 @@
1
1
  from io import BytesIO
2
2
 
3
+ from azure.core.credentials import AzureSasCredential
3
4
  from azure.storage.blob import BlobServiceClient, ContainerClient
4
5
 
5
6
  from pkgs.filesystem_utils.file_type_utils import (
@@ -122,7 +123,13 @@ class BlobSession(FileSystemSession):
122
123
  )
123
124
  dest_blob_client = self.container_client.get_blob_client(dest_file.filepath)
124
125
 
125
- dest_blob_client.start_copy_from_url(source_blob_client.url)
126
+ source_url = (
127
+ f"{source_blob_client.url}?{self.config.credential.signature}"
128
+ if isinstance(self.config.credential, AzureSasCredential)
129
+ else source_blob_client.url
130
+ )
131
+
132
+ dest_blob_client.start_copy_from_url(source_url)
126
133
  source_blob_client.delete_blob()
127
134
 
128
135
  def delete_files(self, filepaths: list[FileSystemObject]) -> None:
@@ -26,7 +26,7 @@ def load_profiles() -> list[job_definition_t.ProfileMetadata]:
26
26
  profile_name = profile_file.name
27
27
  try:
28
28
  definition = profile_parser.parse_yaml_resource(
29
- package=".".join([profiles_module, profile_name]),
29
+ package=f"{profiles_module}.{profile_name}",
30
30
  resource="profile.yaml",
31
31
  )
32
32
  for job in definition.jobs:
@@ -54,7 +54,7 @@ def _load_secret_overrides(profile_name: str) -> dict[SecretRetrieval, str]:
54
54
  profiles_module = os.environ["UNC_PROFILES_MODULE"]
55
55
  try:
56
56
  overrides = overrides_parser.parse_yaml_resource(
57
- package=".".join([profiles_module, profile_name]),
57
+ package=f"{profiles_module}.{profile_name}",
58
58
  resource="local_overrides.yaml",
59
59
  )
60
60
  return {
@@ -60,7 +60,7 @@ class RecipeOutputValue:
60
60
  value_numeric: Decimal | None = None
61
61
  value_str: str | None = None
62
62
  value_curve: CurveValues | None = None
63
- value_color: data_t.RecipeOutputColor | None = None
63
+ value_color: data_t.SupportedColorFormatColor | None = None
64
64
  formatting: recipes_t.RecipeAttributeFormatting | None = None
65
65
  field_values: list[field_values_t.ArgumentValueRefName | field_values_t.ArgumentValueId] | None = None
66
66
 
uncountable/types/data.py CHANGED
@@ -3,10 +3,10 @@
3
3
  # isort: skip_file
4
4
  # DO NOT MODIFY -- This file is generated by type_spec
5
5
  # Kept only for SDK backwards compatibility
6
+ from .data_t import ColorFormat as ColorFormat
6
7
  from .data_t import RgbColor as RgbColor
7
8
  from .data_t import CielabColor as CielabColor
8
9
  from .data_t import XyzColor as XyzColor
9
10
  from .data_t import LChColor as LChColor
10
- from .data_t import HslColor as HslColor
11
- from .data_t import RecipeOutputColor as RecipeOutputColor
11
+ from .data_t import SupportedColorFormatColor as SupportedColorFormatColor
12
12
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -6,27 +6,39 @@ from __future__ import annotations
6
6
  import typing # noqa: F401
7
7
  import datetime # noqa: F401
8
8
  from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
9
10
  import dataclasses
10
11
  from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
11
13
  from . import base_t
12
14
 
13
15
  __all__: list[str] = [
14
16
  "CielabColor",
15
- "HslColor",
17
+ "ColorFormat",
16
18
  "LChColor",
17
- "RecipeOutputColor",
18
19
  "RgbColor",
20
+ "SupportedColorFormatColor",
19
21
  "XyzColor",
20
22
  ]
21
23
 
22
24
 
25
+ # DO NOT MODIFY -- This file is generated by type_spec
26
+ class ColorFormat(StrEnum):
27
+ RGB = "rgb"
28
+ LAB = "lab"
29
+ XYZ = "xyz"
30
+ LCH = "lch"
31
+
32
+
23
33
  # DO NOT MODIFY -- This file is generated by type_spec
24
34
  @serial_class(
25
35
  named_type_path="sdk.data.RgbColor",
26
- unconverted_keys={"B", "G", "R"},
36
+ unconverted_keys={"B", "G", "R", "type"},
37
+ parse_require={"type"},
27
38
  )
28
39
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
40
  class RgbColor:
41
+ type: typing.Literal[ColorFormat.RGB] = ColorFormat.RGB
30
42
  R: Decimal
31
43
  G: Decimal
32
44
  B: Decimal
@@ -35,10 +47,12 @@ class RgbColor:
35
47
  # DO NOT MODIFY -- This file is generated by type_spec
36
48
  @serial_class(
37
49
  named_type_path="sdk.data.CielabColor",
38
- unconverted_keys={"L", "a", "b"},
50
+ unconverted_keys={"L", "a", "b", "type"},
51
+ parse_require={"type"},
39
52
  )
40
53
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
54
  class CielabColor:
55
+ type: typing.Literal[ColorFormat.LAB] = ColorFormat.LAB
42
56
  L: Decimal
43
57
  a: Decimal
44
58
  b: Decimal
@@ -47,10 +61,12 @@ class CielabColor:
47
61
  # DO NOT MODIFY -- This file is generated by type_spec
48
62
  @serial_class(
49
63
  named_type_path="sdk.data.XyzColor",
50
- unconverted_keys={"X", "Y", "Z"},
64
+ unconverted_keys={"X", "Y", "Z", "type"},
65
+ parse_require={"type"},
51
66
  )
52
67
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
68
  class XyzColor:
69
+ type: typing.Literal[ColorFormat.XYZ] = ColorFormat.XYZ
54
70
  X: Decimal
55
71
  Y: Decimal
56
72
  Z: Decimal
@@ -59,36 +75,29 @@ class XyzColor:
59
75
  # DO NOT MODIFY -- This file is generated by type_spec
60
76
  @serial_class(
61
77
  named_type_path="sdk.data.LChColor",
62
- unconverted_keys={"C", "L", "h"},
78
+ unconverted_keys={"C", "L", "h", "type"},
79
+ parse_require={"type"},
63
80
  )
64
81
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
65
82
  class LChColor:
83
+ type: typing.Literal[ColorFormat.LCH] = ColorFormat.LCH
66
84
  L: Decimal
67
85
  C: Decimal
68
86
  h: Decimal
69
87
 
70
88
 
71
89
  # DO NOT MODIFY -- This file is generated by type_spec
72
- @serial_class(
73
- named_type_path="sdk.data.HslColor",
74
- unconverted_keys={"L", "h", "s"},
75
- )
76
- @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
77
- class HslColor:
78
- h: Decimal
79
- s: Decimal
80
- L: Decimal
81
-
82
-
83
- # DO NOT MODIFY -- This file is generated by type_spec
84
- @serial_class(
85
- named_type_path="sdk.data.RecipeOutputColor",
86
- unconverted_keys={"CIELAB", "LCH", "RGB", "XYZ"},
87
- )
88
- @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
89
- class RecipeOutputColor:
90
- RGB: RgbColor
91
- CIELAB: CielabColor
92
- XYZ: XyzColor | None = None
93
- LCH: LChColor | None = None
90
+ SupportedColorFormatColor = typing.Annotated[
91
+ RgbColor | CielabColor | XyzColor | LChColor,
92
+ serial_union_annotation(
93
+ named_type_path="sdk.data.SupportedColorFormatColor",
94
+ discriminator="type",
95
+ discriminator_map={
96
+ "rgb": RgbColor,
97
+ "lab": CielabColor,
98
+ "xyz": XyzColor,
99
+ "lch": LChColor,
100
+ },
101
+ ),
102
+ ]
94
103
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.112
3
+ Version: 0.0.113
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -36,7 +36,7 @@ pkgs/argument_parser/_is_namedtuple.py,sha256=Rjc1bKanIPPogl3qG5JPBxglG1TqWYOo1n
36
36
  pkgs/argument_parser/argument_parser.py,sha256=0CLEx2ua6tN0QbxJ2asP7JnKjEJR_I62tF0_AILlKq8,20981
37
37
  pkgs/argument_parser/case_convert.py,sha256=NuJLJUJRbyVb6_Slen4uqaStEHbcOS1d-hBBfDrrw-c,605
38
38
  pkgs/filesystem_utils/__init__.py,sha256=2a0d2rEPlEEYwhm3Wckny4VCp4ZS7JtYSXmwdwNCRjo,1332
39
- pkgs/filesystem_utils/_blob_session.py,sha256=CtoB7PIocuZo8vvFIS_Rc-YR6KwzFB0rHUVPKFEbRAI,4862
39
+ pkgs/filesystem_utils/_blob_session.py,sha256=4GicmwgGHVcqO8pOTu-EJakKMb1-IsxT9QnVi2D0oKU,5143
40
40
  pkgs/filesystem_utils/_gdrive_session.py,sha256=xelwsGfxhxKX0LFwOv9UJ3_jSHyhYyHiLH6EUXNZgHo,11059
41
41
  pkgs/filesystem_utils/_local_session.py,sha256=xFEYhAvNqrOYqwt4jrEYOuYkjJn0zclZhTelW_Q1-rw,2325
42
42
  pkgs/filesystem_utils/_s3_session.py,sha256=DdD6M90z1VyTiuRdTmjvBNJOEFHBPyEU8wGKRKwHvOU,4027
@@ -102,7 +102,7 @@ uncountable/integration/construct_client.py,sha256=I53mGcdS88hba3HFwgXmWQaTd1d5u
102
102
  uncountable/integration/cron.py,sha256=6eH-kIs3sdYPCyb62_L2M7U_uQTdMTdwY5hreEJb0hw,887
103
103
  uncountable/integration/entrypoint.py,sha256=BHOYPQgKvZE6HG8Rv15MkdYl8lRkvfDgv1OdLo0oQ9Q,433
104
104
  uncountable/integration/job.py,sha256=lRQhOfm8kRlUnT1BMQRMZ49n1IzOup5VRH0AiZ2AFo4,3214
105
- uncountable/integration/scan_profiles.py,sha256=760zbv7O7wXxHUHqUkFBpd1Afe8hqxMPU3ugwZGdhEo,2925
105
+ uncountable/integration/scan_profiles.py,sha256=RHBmPc5E10YZzf4cmglwrn2yAy0jHBhQ-P_GlAk2TeU,2919
106
106
  uncountable/integration/scheduler.py,sha256=t75ANJN21DElUFvEdtgueTluF7y17jTtBDDF8f3NRDM,4812
107
107
  uncountable/integration/server.py,sha256=m_DYRosGbHuPhygM32Xo-jRBl_oaUhOYsBBD1qwwKh4,4697
108
108
  uncountable/integration/telemetry.py,sha256=jeeycEnGcW0Fk-f7JI5d-k8Ih4FLoNBCxvSJlJ98wwU,7418
@@ -132,7 +132,7 @@ uncountable/integration/queue_runner/datastore/datastore_sqlite.py,sha256=OdE4gS
132
132
  uncountable/integration/queue_runner/datastore/interface.py,sha256=j4D-zVvLq-48VTVwHVei82UVUJ_P3cxiseyiTl0MoNw,534
133
133
  uncountable/integration/queue_runner/datastore/model.py,sha256=8-RI5A2yPZVGBLWINVmMd6VOl_oHtqGtnaNXcapAChw,577
134
134
  uncountable/integration/secret_retrieval/__init__.py,sha256=3QXVj35w8rRMxVvmmsViFYDi3lcb3g70incfalOEm6o,87
135
- uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=9iz9N8Z-B68QwFCXsx8hTYbgDbk06ejkJ3RQ9mCLMyM,3000
135
+ uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=LBEf18KHtXZxg-ZZ80stJ1vW39AWf0CQllP6pNu3Eq8,2994
136
136
  uncountable/integration/webhook_server/entrypoint.py,sha256=yQWQq_k3kbJkSsEEt6k22YwhXekezJZfV0rnn-hP-Yo,5516
137
137
  uncountable/types/__init__.py,sha256=199fdKdrfJRLLa-fZEkXM0ohyKrSMOXRiW0aYu_KsM4,9760
138
138
  uncountable/types/async_batch.py,sha256=yCCWrrLQfxXVqZp-KskxLBNkNmuELdz4PJjx8ULppgs,662
@@ -153,8 +153,8 @@ uncountable/types/client_config.py,sha256=qLpHt4O_B098CyN6qQajoxZ2zjZ1DILXLUEGyy
153
153
  uncountable/types/client_config_t.py,sha256=yTFIYAitMrcc4oV9J-HADODS_Hwi45z-piz7rr7QT04,781
154
154
  uncountable/types/curves.py,sha256=QyEyC20jsG-LGKVx6miiF-w70vKMwNkILFBDIJ5Ok9g,345
155
155
  uncountable/types/curves_t.py,sha256=DxYepdC3QKKR7mepOOBoyarNcFZQdUa5ZYH-hwCY3BI,1469
156
- uncountable/types/data.py,sha256=6dChU1uzwHT8xN2AFbMaAW41RV53b1_hLWuGny4EiMA,478
157
- uncountable/types/data_t.py,sha256=FFT06yO2G0ktRXCpgcZQspmUQGx5J8fm1Hjsm4_sp-w,2490
156
+ uncountable/types/data.py,sha256=u2isf4XEug3Eu-xSIoqGaCQmW2dFaKBHCkP_WKYwwBc,500
157
+ uncountable/types/data_t.py,sha256=vFoypK_WMGfN28r1sSlDYHZNUdBQC0XCN7-_Mlo4FJk,2832
158
158
  uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
159
159
  uncountable/types/entity_t.py,sha256=XMxUpBmUVx8poTsKjbYmJZIAtcO_hR4cOmutmDRtrfA,20121
160
160
  uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
@@ -299,7 +299,7 @@ uncountable/types/api/recipes/set_recipe_inputs.py,sha256=GSuT-Vgrn8-OG_eFuPCElI
299
299
  uncountable/types/api/recipes/set_recipe_metadata.py,sha256=lrMB_wyOKjTLl9fiKT30M2HBU7lPwjtDsqZY8ODA-oA,1249
300
300
  uncountable/types/api/recipes/set_recipe_output_annotations.py,sha256=OEMKfY_CEpsSa1xZXsM2ncUOV7acbZTMZYXiLjzJlfQ,3892
301
301
  uncountable/types/api/recipes/set_recipe_output_file.py,sha256=2q63zD5-JEfWk5AffNHwERjzn8MzfQCtgGTKZQhcwsU,1685
302
- uncountable/types/api/recipes/set_recipe_outputs.py,sha256=vz-HaZ2HRUWS76LrFBsTm2JB6S3oWaxJMXyRbISSO48,2689
302
+ uncountable/types/api/recipes/set_recipe_outputs.py,sha256=L1AHz1-seHIWmQ8zpZ4J3p9FrN7zXfSOGbT5YEkuEE8,2697
303
303
  uncountable/types/api/recipes/set_recipe_tags.py,sha256=C4GzlHVfTDUA2CrgDqfYrDpS9jgOBf9bIgu4iqGvdno,3464
304
304
  uncountable/types/api/recipes/unarchive_recipes.py,sha256=ke3JPaj6hRdTjP-Qot8Gc-_ptTYqC_1ZF3kKbPJ0H88,1145
305
305
  uncountable/types/api/recipes/unlock_recipes.py,sha256=bwFFsgeozIMuyR9XmeUK1s3RuH1R8jRsFiF8SUKxBAg,1403
@@ -309,7 +309,7 @@ uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr
309
309
  uncountable/types/api/triggers/run_trigger.py,sha256=dgDX_sRWSJ36UuzMZhG25oHV1HIOUKYY2G3fjKugZrw,1204
310
310
  uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
311
311
  uncountable/types/api/uploader/invoke_uploader.py,sha256=Bj7Dq4A90k00suacwk3bLA_dCb2aovS1kAbVam2AQnM,1395
312
- uncountablepythonsdk-0.0.112.dist-info/METADATA,sha256=e5f_u4xbREmo4_YvzS8tPTMK2kwcWs5l1MLch4aSZ3E,2143
313
- uncountablepythonsdk-0.0.112.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
314
- uncountablepythonsdk-0.0.112.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
315
- uncountablepythonsdk-0.0.112.dist-info/RECORD,,
312
+ uncountablepythonsdk-0.0.113.dist-info/METADATA,sha256=9c3i5y6Lt9K-BN75Eya66-OGE1GXI59cpaQRlShbDVU,2143
313
+ uncountablepythonsdk-0.0.113.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
314
+ uncountablepythonsdk-0.0.113.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
315
+ uncountablepythonsdk-0.0.113.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5