UncountablePythonSDK 0.0.177__py3-none-any.whl → 0.0.178__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,3 +1,5 @@
1
+ # CLOSED MODULE
2
+
1
3
  from ._blob_session import BlobSession as BlobSession
2
4
  from ._file_share_session import FileShareSession as FileShareSession
3
5
  from ._gdrive_session import (
@@ -32,3 +34,32 @@ from .file_type_utils import (
32
34
  RemoteObjectReference as RemoteObjectReference,
33
35
  )
34
36
  from .filesystem_session import FileSystemSession as FileSystemSession
37
+
38
+ __all__ = [
39
+ "BlobSession",
40
+ "FileObjectData",
41
+ "FileShareSession",
42
+ "FileSystemBlobConfig",
43
+ "FileSystemFileReference",
44
+ "FileSystemFileShareConfig",
45
+ "FileSystemObject",
46
+ "FileSystemS3Config",
47
+ "FileSystemSFTPConfig",
48
+ "FileSystemSession",
49
+ "FileTransfer",
50
+ "GDriveSession",
51
+ "IncompatibleFileReference",
52
+ "LocalSession",
53
+ "RemoteObjectReference",
54
+ "S3Session",
55
+ "SFTPConnection",
56
+ "SFTPCredentialError",
57
+ "SFTPSession",
58
+ "delete_gdrive_file",
59
+ "download_gdrive_file",
60
+ "list_gdrive_files",
61
+ "list_sftp_files",
62
+ "move_gdrive_file",
63
+ "move_sftp_files",
64
+ "upload_file_gdrive",
65
+ ]
@@ -3,5 +3,7 @@ from typing import Self
3
3
 
4
4
  # Blocks a string key value from being interpreted for case conversion
5
5
  class OpaqueKey(str): # noqa: FURB189
6
+ __slots__ = ()
7
+
6
8
  def __new__(cls, key: str) -> Self:
7
9
  return str.__new__(cls, key)
@@ -1,3 +1,5 @@
1
+ # CLOSED MODULE
2
+
1
3
  from .strenum_compat import StrEnum
2
4
 
3
5
  __all__ = ["StrEnum"]
@@ -298,6 +298,10 @@ class Client(ClientMethods):
298
298
  else None
299
299
  )
300
300
  response = self._send_request(request, timeout=timeout)
301
+ if self._cfg.logger is not None:
302
+ self._cfg.logger.set_span_attribute(
303
+ "http.status_code", response.status_code
304
+ )
301
305
  response_data = self._get_response_json(response, request_id=request_id)
302
306
  cached_parser = self._get_cached_parser(return_type)
303
307
  try:
@@ -27,6 +27,7 @@ from opentelemetry.sdk.trace.export import (
27
27
  SimpleSpanProcessor,
28
28
  )
29
29
  from opentelemetry.trace import Span, Tracer
30
+ from opentelemetry.util.types import AttributeValue
30
31
 
31
32
  from pkgs.serialization_util import dict_fields
32
33
  from uncountable.core.environment import (
@@ -188,6 +189,9 @@ class Logger:
188
189
  )
189
190
  otel_logger.emit(log_record)
190
191
 
192
+ def set_span_attribute(self, key: str, value: AttributeValue) -> None:
193
+ self._current_span_with_fallback().set_attribute(key, value)
194
+
191
195
  def bind(self, *, attributes: Attributes) -> None:
192
196
  # Bound attributes flow into log records and the X-UNC-METADATA request
193
197
  # header on outbound API calls. The header is capped at 2048 bytes; if
@@ -22,7 +22,7 @@ __all__: list[str] = [
22
22
 
23
23
  ENDPOINT_METHOD = "POST"
24
24
  ENDPOINT_PATH = "api/external/integrations/publish_realtime_data"
25
- ENDPOINT_DESCRIPTION = "Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. API is in beta \u2014 contact Uncountable for realtime integration guidance."
25
+ ENDPOINT_DESCRIPTION = "Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. Contact Uncountable for realtime integration guidance."
26
26
 
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1713,7 +1713,7 @@ class ClientMethods(ABC):
1713
1713
  data_package: integrations_t.DataPackage,
1714
1714
  _request_options: client_config_t.RequestOptions | None = None,
1715
1715
  ) -> publish_realtime_data_t.Data:
1716
- """Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. API is in beta — contact Uncountable for realtime integration guidance.
1716
+ """Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. Contact Uncountable for realtime integration guidance.
1717
1717
 
1718
1718
  """
1719
1719
  args = publish_realtime_data_t.Arguments(
@@ -52,6 +52,7 @@ __all__: list[str] = [
52
52
  "constraint": "Constraint",
53
53
  "constraint_set": "Constraint Set",
54
54
  "control_type": "Control Type",
55
+ "credit_balance": "Credit Balance",
55
56
  "curve_settings": "Curve Settings",
56
57
  "custom_entity": "Custom Entity",
57
58
  "default_permissions_new_project": "Default Permissions New Project",
@@ -83,6 +84,7 @@ __all__: list[str] = [
83
84
  "external_ai_connector": "External AI Connector",
84
85
  "external_ai_model": "External AI Model",
85
86
  "external_ai_session": "External AI Session",
87
+ "external_ai_usage": "External AI Usage",
86
88
  "experiment_group": "Experiment Group",
87
89
  "experiment_group_member": "Experiment Group Member",
88
90
  "experiment_group_type": "Experiment Group Type",
@@ -304,6 +306,7 @@ class EntityType(StrEnum):
304
306
  CONSTRAINT = "constraint"
305
307
  CONSTRAINT_SET = "constraint_set"
306
308
  CONTROL_TYPE = "control_type"
309
+ CREDIT_BALANCE = "credit_balance"
307
310
  CURVE_SETTINGS = "curve_settings"
308
311
  CUSTOM_ENTITY = "custom_entity"
309
312
  DEFAULT_PERMISSIONS_NEW_PROJECT = "default_permissions_new_project"
@@ -335,6 +338,7 @@ class EntityType(StrEnum):
335
338
  EXTERNAL_AI_CONNECTOR = "external_ai_connector"
336
339
  EXTERNAL_AI_MODEL = "external_ai_model"
337
340
  EXTERNAL_AI_SESSION = "external_ai_session"
341
+ EXTERNAL_AI_USAGE = "external_ai_usage"
338
342
  EXPERIMENT_GROUP = "experiment_group"
339
343
  EXPERIMENT_GROUP_MEMBER = "experiment_group_member"
340
344
  EXPERIMENT_GROUP_TYPE = "experiment_group_type"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.177
3
+ Version: 0.0.178
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
@@ -55,7 +55,7 @@ pkgs/argument_parser/parser_function_type.py,sha256=xmsg0YVseYbUx52qC9vP-_m9F_He
55
55
  pkgs/argument_parser/parser_inner.py,sha256=yteyamw3ZyMSQtDujkXgQVIpbtrpFbtjahtDNVKoGEE,23887
56
56
  pkgs/argument_parser/parser_options.py,sha256=NAwNZSIH8EjyfJXJSxbn4kYmF3K7D3HuOedlSjjsF28,1332
57
57
  pkgs/argument_parser/type_predicates.py,sha256=CkQexiseN05XDz4e34K3gIOlER5LG5Ke8u0UHK4gC04,1157
58
- pkgs/filesystem_utils/__init__.py,sha256=6xVtJo-5OMv8UGanNc7SfZte_iSXs5lE5au47QePy60,1381
58
+ pkgs/filesystem_utils/__init__.py,sha256=G-Nl0sxJsSgBB6yajzzY9aeSSBnkzJHGq3lj5LFn8fw,2056
59
59
  pkgs/filesystem_utils/_blob_session.py,sha256=YB_idar5qVuF9QN_A6qjpTuyeZ7JDOLri1LGLfPHLow,5158
60
60
  pkgs/filesystem_utils/_file_share_session.py,sha256=xlxCbNtOOT1xXCiL2Y_unjWZlQ9961J7mAz4D0-uea8,5095
61
61
  pkgs/filesystem_utils/_gdrive_session.py,sha256=4P2MSsA0GNxIYJxvmf7zKR8dM8oVMCCSzDIEkGA7XqE,11089
@@ -68,7 +68,7 @@ pkgs/filesystem_utils/filesystem_session.py,sha256=BQ2Go8Mu9-GcnaWh2Pm4x7ugLVsre
68
68
  pkgs/serialization/__init__.py,sha256=5OWO4IicaVrTWgRdC6E1K4dLYy2xQ6xQujDOuglykNU,1059
69
69
  pkgs/serialization/annotation.py,sha256=JXP2caXNoj8h_Pvx_26iarPlsaPcIqe1qssTksJiKjM,3408
70
70
  pkgs/serialization/missing_sentry.py,sha256=VCXiYs7s5MkfG8kbmwDAswdq0fL4zFRj4B2uSQzmTos,819
71
- pkgs/serialization/opaque_key.py,sha256=GKmZgxzzEghpukcuzSGXqG9afl_KZ7MFtLAY-Xqgu9k,213
71
+ pkgs/serialization/opaque_key.py,sha256=QepNPlAnzpOgLI0ztc9BRB7Xr_wLoVozxfHmL0C6slg,233
72
72
  pkgs/serialization/serial_alias.py,sha256=ABEGtSEapeW95wo9NT4srEhzdGaP5RhB8EyWSyWhwKg,1337
73
73
  pkgs/serialization/serial_class.py,sha256=AfWHdGlnEY2O2GbwU-SXZp7ZbTlPoigZ624QGp8kkuE,7099
74
74
  pkgs/serialization/serial_generic.py,sha256=qdG46rw5jnvckmKezxwMSJEIF-9Y4K5FdTezS1vRSgI,476
@@ -80,7 +80,7 @@ pkgs/serialization_util/_get_type_for_serialization.py,sha256=dW5_W9MFd6wgWfW5ql
80
80
  pkgs/serialization_util/convert_to_snakecase.py,sha256=H2BAo5ZdcCDN77RpLb-uP0s7-FQ5Ukwnsd3VYc1vD0M,583
81
81
  pkgs/serialization_util/dataclasses.py,sha256=uhNGXQPQLZblDFQuuwkAGmKOPiRyfDzCdg72CVtYJGA,390
82
82
  pkgs/serialization_util/serialization_helpers.py,sha256=v8omOQ2BRZZCzMeUwu29fCEqx0UNDJ_iNbqpW4oHk84,7804
83
- pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpGbk,59
83
+ pkgs/strenum_compat/__init__.py,sha256=Bq1kcPIQsXRiLUGWc63QGnVa5BlhvuFWpMMvdNcHy00,76
84
84
  pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
85
85
  pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
86
86
  pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
@@ -118,7 +118,7 @@ uncountable/__init__.py,sha256=8l8XWNCKsu7TG94c-xa2KHpDegvxDC2FyQISdWC763Y,89
118
118
  uncountable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
119
  uncountable/core/__init__.py,sha256=RFv0kO6rKFf1PtBPu83hCGmxqkJamRtsgQ9_-ztw7tA,341
120
120
  uncountable/core/async_batch.py,sha256=9pYGFzVCQXt8059qFHgutweGIFPquJ5Xfq6NT5P-1K0,1206
121
- uncountable/core/client.py,sha256=XSAPfcSU51d3MgAZOuT6FMrdrM452KQfWzNHjLOGSMY,16549
121
+ uncountable/core/client.py,sha256=I5q47V5Xre7ZjqLW8Dd7BRJtlpcWiTJQdaxrn8QjaQ8,16726
122
122
  uncountable/core/environment.py,sha256=Z9vu7JtnSDgQB_KKcZnjTFNyARXjRr_PDW9krwxNNAo,1132
123
123
  uncountable/core/file_upload.py,sha256=IisvIBdm2f4CJTRQ9Awi5JuI16PSERjXrzZgmrUiCHY,5960
124
124
  uncountable/core/types.py,sha256=s2CjqYJpsmbC7xMwxxT7kJ_V9bwokrjjWVVjpMcQpKI,333
@@ -137,7 +137,7 @@ uncountable/integration/request_context.py,sha256=N_FJJxqvfUJ0yV9h3I3vFTGNJiDfyL
137
137
  uncountable/integration/scan_profiles.py,sha256=86CQgrQ-zXl3p41ERazzbzhTIIjIh_BprWVfYTSHHE4,3259
138
138
  uncountable/integration/scheduler.py,sha256=BajQ4txvgEBw8S9x1P0eGm-uBkKp_oecJK65SQd2hNw,8477
139
139
  uncountable/integration/server.py,sha256=P4RRGwU9jMselHPWbU6GxhRLgVtN7Ydcxr18sFn2zI8,5778
140
- uncountable/integration/telemetry.py,sha256=7IWhCxchtVYJwwwFYduwnMEUdxO8srx2RnocLzcQmtg,15965
140
+ uncountable/integration/telemetry.py,sha256=zvg-K8uy49vQxWgInXAx-Sz8jHC0IWT1kdzPQdp9ROA,16162
141
141
  uncountable/integration/webhook_signature_key.py,sha256=vXlNtj0qLqZxjKDLmRvlChvLS5xoPAGmYcYcs4WIVaM,3882
142
142
  uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
143
  uncountable/integration/db/connect.py,sha256=mE3bdV0huclH2iT_dXCQdRL4LkjIuf_myAR64RTWXEs,498
@@ -186,7 +186,7 @@ uncountable/types/calculations.py,sha256=fApOFpgBemt_t7IVneVR0VdI3X5EOxiG6Xhzr6R
186
186
  uncountable/types/calculations_t.py,sha256=_K4MDVoxa6AgxlxPrEDBujWhEGWEhUQuE2-ZgiLg9OU,660
187
187
  uncountable/types/chemical_structure.py,sha256=ujyragaD26-QG5jgKnWhO7TN3N1V9b_04T2WhqNYxxo,281
188
188
  uncountable/types/chemical_structure_t.py,sha256=tbA7NBO-vv7Hnk3-ETxc6Pw3wqWeenBG27Y9_bdPCu4,785
189
- uncountable/types/client_base.py,sha256=kwy2tJ5L1v02YFeT_wFuFh543ffMEnhNuzFxL1MdvgQ,135001
189
+ uncountable/types/client_base.py,sha256=h3uIZLAyJR_FPo3SAKXgkk6HDTGAaLmcio3klzcIIM0,134982
190
190
  uncountable/types/client_config.py,sha256=M7FZ0m_lGmBsIYcMn8pm92DdoVzrLpzd8sH6DqTQLKo,456
191
191
  uncountable/types/client_config_t.py,sha256=-YNp-zFvk5OL6_WGwGSx30ToK2bGIOh0kv_HN7KcCys,1796
192
192
  uncountable/types/condition_match.py,sha256=ekDzij7-e1PtVwIslSjD1T9fuBIDr5c_7QPdaasiGJw,262
@@ -196,7 +196,7 @@ uncountable/types/curves_t.py,sha256=WIML06C67yC4KWdPJR2HV_Ac7eBFTDRDUL3YgeXbFOs
196
196
  uncountable/types/data.py,sha256=u2isf4XEug3Eu-xSIoqGaCQmW2dFaKBHCkP_WKYwwBc,500
197
197
  uncountable/types/data_t.py,sha256=U_dIh5GcyaJlkrHEI4Qf4TOo1uJX07PYO70sYzzKtTo,2615
198
198
  uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
199
- uncountable/types/entity_t.py,sha256=fVDQyZvpBHp6llk05entEf2ODOVcCsEGlkE1IyDfY2o,27676
199
+ uncountable/types/entity_t.py,sha256=LyANi9Myj5gVAMta5AN9ijiTjwOwJeKNCQ12vrmY_VQ,27852
200
200
  uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
201
201
  uncountable/types/experiment_groups_t.py,sha256=QjZBdjnbsD1D-VpPSSV6hBg-Q7mujjKvYtdMewtXNVU,712
202
202
  uncountable/types/exports.py,sha256=VMmxUO2PpV1Y63hZ2AnVor4H-B6aswJ7YpSru_u89lU,334
@@ -341,7 +341,7 @@ uncountable/types/api/inputs/set_input_category.py,sha256=EWQdlp-qhgtOOf0bwdjvix
341
341
  uncountable/types/api/inputs/set_input_subcategories.py,sha256=5nJgffEe-9Fh_VUXqZkI6Uwoa36D0d4lIhADtRGr7tk,1615
342
342
  uncountable/types/api/inputs/set_intermediate_type.py,sha256=Qsrjv67hvNHIad58kFm-8BcD1Ny8wzkuLz3aIB7ybSw,1641
343
343
  uncountable/types/api/integrations/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
344
- uncountable/types/api/integrations/publish_realtime_data.py,sha256=HJkfczKaLOySHWgI0qQcDQzanSUPRkv0HhnHipUKjnk,1960
344
+ uncountable/types/api/integrations/publish_realtime_data.py,sha256=R5efPtt3RMEwoazLiqblndRPd57RTF1YajgwWiieH1Y,1938
345
345
  uncountable/types/api/integrations/push_notification.py,sha256=cqJv-qXI97jg8HFdoDF-KYaxSUgV3fqD1N614WZvaBw,1701
346
346
  uncountable/types/api/integrations/register_sockets_token.py,sha256=LJ_1LSfjVjTz-uhZkjcIw80Ah8D9pgdjQGjsTSS8gtM,1393
347
347
  uncountable/types/api/listing/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
@@ -414,7 +414,7 @@ uncountable/types/api/uploader/complete_async_parse.py,sha256=Os1HAubxTlbut6Gylj
414
414
  uncountable/types/api/uploader/invoke_uploader.py,sha256=QU1KmAFgGHSWskZEKfaAww8rCj-hVNP0i4kMQE3x3Fc,1822
415
415
  uncountable/types/api/user/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
416
416
  uncountable/types/api/user/get_current_user_info.py,sha256=BT7bGp5SOHz3XdKWhhdZ6acnInafT2PgdJ-H4YH3W7c,1181
417
- uncountablepythonsdk-0.0.177.dist-info/METADATA,sha256=gvqE0J2wNYcjjbTIjMPWR8fF1tB5p0Z2DCG0Z4-tiFc,2175
418
- uncountablepythonsdk-0.0.177.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
419
- uncountablepythonsdk-0.0.177.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
420
- uncountablepythonsdk-0.0.177.dist-info/RECORD,,
417
+ uncountablepythonsdk-0.0.178.dist-info/METADATA,sha256=wl_jrsVOIztNXhFZhDki7qQA8B6rK8U-suwvKFcL5nk,2175
418
+ uncountablepythonsdk-0.0.178.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
419
+ uncountablepythonsdk-0.0.178.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
420
+ uncountablepythonsdk-0.0.178.dist-info/RECORD,,