snowpark-connect 0.29.0__py3-none-any.whl → 0.30.1__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 snowpark-connect might be problematic. Click here for more details.

Files changed (41) hide show
  1. snowflake/snowpark_connect/analyze_plan/map_tree_string.py +8 -4
  2. snowflake/snowpark_connect/client.py +65 -0
  3. snowflake/snowpark_connect/column_name_handler.py +6 -0
  4. snowflake/snowpark_connect/config.py +25 -3
  5. snowflake/snowpark_connect/execute_plan/map_execution_root.py +21 -19
  6. snowflake/snowpark_connect/expression/map_extension.py +277 -1
  7. snowflake/snowpark_connect/expression/map_sql_expression.py +107 -2
  8. snowflake/snowpark_connect/expression/map_unresolved_function.py +253 -59
  9. snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.py +12 -10
  10. snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.pyi +14 -2
  11. snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2_grpc.py +4 -0
  12. snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2_grpc.py +4 -0
  13. snowflake/snowpark_connect/relation/io_utils.py +61 -4
  14. snowflake/snowpark_connect/relation/map_column_ops.py +9 -4
  15. snowflake/snowpark_connect/relation/map_join.py +8 -0
  16. snowflake/snowpark_connect/relation/map_row_ops.py +129 -17
  17. snowflake/snowpark_connect/relation/map_show_string.py +14 -6
  18. snowflake/snowpark_connect/relation/map_sql.py +39 -5
  19. snowflake/snowpark_connect/relation/map_stats.py +21 -6
  20. snowflake/snowpark_connect/relation/read/map_read.py +9 -0
  21. snowflake/snowpark_connect/relation/read/map_read_csv.py +17 -6
  22. snowflake/snowpark_connect/relation/read/map_read_json.py +12 -2
  23. snowflake/snowpark_connect/relation/read/map_read_parquet.py +7 -1
  24. snowflake/snowpark_connect/relation/read/metadata_utils.py +159 -0
  25. snowflake/snowpark_connect/relation/utils.py +19 -2
  26. snowflake/snowpark_connect/relation/write/map_write.py +44 -29
  27. snowflake/snowpark_connect/server.py +11 -3
  28. snowflake/snowpark_connect/type_mapping.py +75 -3
  29. snowflake/snowpark_connect/utils/describe_query_cache.py +6 -3
  30. snowflake/snowpark_connect/utils/telemetry.py +105 -23
  31. snowflake/snowpark_connect/version.py +1 -1
  32. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/METADATA +1 -1
  33. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/RECORD +41 -37
  34. {snowpark_connect-0.29.0.data → snowpark_connect-0.30.1.data}/scripts/snowpark-connect +0 -0
  35. {snowpark_connect-0.29.0.data → snowpark_connect-0.30.1.data}/scripts/snowpark-session +0 -0
  36. {snowpark_connect-0.29.0.data → snowpark_connect-0.30.1.data}/scripts/snowpark-submit +0 -0
  37. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/WHEEL +0 -0
  38. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/licenses/LICENSE-binary +0 -0
  39. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/licenses/LICENSE.txt +0 -0
  40. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/licenses/NOTICE-binary +0 -0
  41. {snowpark_connect-0.29.0.dist-info → snowpark_connect-0.30.1.dist-info}/top_level.txt +0 -0
@@ -11,10 +11,11 @@ from abc import ABC, abstractmethod
11
11
  from collections import defaultdict
12
12
  from collections.abc import Iterable
13
13
  from contextvars import ContextVar
14
+ from dataclasses import dataclass
14
15
  from enum import Enum, unique
15
- from typing import Dict
16
16
 
17
17
  import google.protobuf.message
18
+ import pyspark.sql.connect.proto.base_pb2 as proto_base
18
19
 
19
20
  from snowflake.connector.cursor import SnowflakeCursor
20
21
  from snowflake.connector.telemetry import (
@@ -56,6 +57,7 @@ class TelemetryType(Enum):
56
57
 
57
58
  class EventType(Enum):
58
59
  SERVER_STARTED = "scos_server_started"
60
+ WARNING = "scos_warning"
59
61
 
60
62
 
61
63
  # global labels
@@ -105,7 +107,16 @@ REDACTED_PLAN_SUFFIXES = [
105
107
  ]
106
108
 
107
109
 
108
- def _basic_telemetry_data() -> Dict:
110
+ @dataclass
111
+ class TelemetryMessage:
112
+ """Container for telemetry messages in the processing queue."""
113
+
114
+ message: dict
115
+ timestamp: int
116
+ is_warning: bool
117
+
118
+
119
+ def _basic_telemetry_data() -> dict:
109
120
  return {
110
121
  **STATIC_TELEMETRY_DATA,
111
122
  TelemetryField.KEY_EVENT_ID.value: str(uuid.uuid4()),
@@ -122,9 +133,11 @@ def safe(func):
122
133
  def wrap(*args, **kwargs):
123
134
  try:
124
135
  func(*args, **kwargs)
125
- except Exception:
126
- # We don't really care if telemetry fails, just want to be safe for the user
127
- logger.warning(f"Telemetry operation failed: {func}", exc_info=True)
136
+ except Exception as e:
137
+ # report failed operation to telemetry
138
+ telemetry.send_warning_msg(
139
+ f"Telemetry operation {func} failed due to exception", e
140
+ )
128
141
 
129
142
  return wrap
130
143
 
@@ -290,10 +303,7 @@ class Telemetry:
290
303
 
291
304
  self._request_summary.set(summary)
292
305
 
293
- if hasattr(request, "plan"):
294
- summary["query_plan"] = _protobuf_to_json_with_redaction(
295
- request.plan, REDACTED_PLAN_SUFFIXES
296
- )
306
+ _set_query_plan(request, summary)
297
307
 
298
308
  def _not_in_request(self):
299
309
  # we don't want to add things to the summary if it's not initialized
@@ -454,7 +464,7 @@ class Telemetry:
454
464
  summary["describe_cache_hits"] += 1
455
465
 
456
466
  @safe
457
- def report_describe_query_cache_expired(self):
467
+ def report_describe_query_cache_expired(self, expired_by: float):
458
468
  """Report a describe query cache hit."""
459
469
  if self._not_in_request():
460
470
  return
@@ -466,6 +476,11 @@ class Telemetry:
466
476
 
467
477
  summary["describe_cache_expired"] += 1
468
478
 
479
+ if "describe_cache_expired_by" not in summary:
480
+ summary["describe_cache_expired_by"] = []
481
+
482
+ summary["describe_cache_expired_by"].append(expired_by)
483
+
469
484
  @safe
470
485
  def report_describe_query_cache_clear(self, query_prefix: str):
471
486
  """Report a describe query cache clear."""
@@ -525,8 +540,8 @@ class Telemetry:
525
540
  @safe
526
541
  def send_request_summary_telemetry(self):
527
542
  if self._not_in_request():
528
- logger.warning(
529
- "Truing to send request summary telemetry without initializing it"
543
+ self.send_warning_msg(
544
+ "Trying to send request summary telemetry without initializing it"
530
545
  )
531
546
  return
532
547
 
@@ -538,14 +553,56 @@ class Telemetry:
538
553
  }
539
554
  self._send(message)
540
555
 
541
- def _send(self, msg: Dict) -> None:
556
+ def send_warning_msg(self, msg: str, e: Exception = None) -> None:
557
+ # using this within @safe decorator may result in recursive loop
558
+ try:
559
+ message = self._build_warning_message(msg, e)
560
+ if not message:
561
+ return
562
+
563
+ self._send(message, is_warning=True)
564
+ except Exception:
565
+ # if there's an exception here, there's nothing we can really do about it
566
+ pass
567
+
568
+ def _build_warning_message(self, warning_msg: str, e: Exception = None) -> dict:
569
+ try:
570
+ data = {"warning_message": warning_msg}
571
+ if e is not None:
572
+ data["exception"] = repr(e)
573
+
574
+ # add session and operation id if available
575
+ spark_session_id = self._request_summary.get().get("spark_session_id", None)
576
+ if spark_session_id is not None:
577
+ data["spark_session_id"] = spark_session_id
578
+
579
+ spark_operation_id = self._request_summary.get().get(
580
+ "spark_operation_id", None
581
+ )
582
+ if spark_operation_id is not None:
583
+ data["spark_operation_id"] = spark_operation_id
584
+
585
+ message = {
586
+ **_basic_telemetry_data(),
587
+ TelemetryField.KEY_TYPE.value: TelemetryType.TYPE_EVENT.value,
588
+ TelemetryType.EVENT_TYPE.value: EventType.WARNING.value,
589
+ TelemetryField.KEY_DATA.value: data,
590
+ }
591
+ return message
592
+ except Exception:
593
+ return {}
594
+
595
+ def _send(self, msg: dict, is_warning: bool = False) -> None:
542
596
  """Queue a telemetry message for asynchronous processing."""
543
597
  if not self._is_enabled:
544
598
  return
545
599
 
546
600
  timestamp = get_time_millis()
547
601
  try:
548
- self._message_queue.put_nowait((msg, timestamp))
602
+ telemetry_msg = TelemetryMessage(
603
+ message=msg, timestamp=timestamp, is_warning=is_warning
604
+ )
605
+ self._message_queue.put_nowait(telemetry_msg)
549
606
  except queue.Full:
550
607
  # If queue is full, drop the message to avoid blocking
551
608
  logger.warning("Telemetry queue is full, dropping message")
@@ -563,13 +620,16 @@ class Telemetry:
563
620
  while True:
564
621
  try:
565
622
  # block to allow the GIL to switch threads
566
- message, timestamp = self._message_queue.get()
567
- if timestamp is None and message is None:
568
- # shutdown
623
+ telemetry_msg = self._message_queue.get()
624
+ if telemetry_msg is None:
625
+ # shutdown signal
569
626
  break
570
- self._sink.add_telemetry_data(message, timestamp)
571
- except Exception:
572
- logger.warning("Failed to add telemetry message to sink", exc_info=True)
627
+ self._sink.add_telemetry_data(
628
+ telemetry_msg.message, telemetry_msg.timestamp
629
+ )
630
+ except Exception as e:
631
+ if not telemetry_msg.is_warning:
632
+ self.send_warning_msg("Failed to add telemetry message to sink", e)
573
633
  finally:
574
634
  self._message_queue.task_done()
575
635
 
@@ -582,7 +642,7 @@ class Telemetry:
582
642
  return
583
643
 
584
644
  try:
585
- self._message_queue.put_nowait((None, None))
645
+ self._message_queue.put_nowait(None)
586
646
  # Wait for worker thread to finish
587
647
  self._worker_thread.join(timeout=3.0)
588
648
  except Exception:
@@ -591,7 +651,7 @@ class Telemetry:
591
651
  )
592
652
 
593
653
 
594
- def _error_location(e: Exception) -> Dict | None:
654
+ def _error_location(e: Exception) -> dict | None:
595
655
  """
596
656
  Inspect the exception traceback and extract the file name, line number, and function name
597
657
  from the last frame (the one that raised the exception).
@@ -672,7 +732,7 @@ def _protobuf_to_json_with_redaction(
672
732
  """Recursively convert protobuf message to dict"""
673
733
 
674
734
  if not isinstance(msg, google.protobuf.message.Message):
675
- logger.warning("Expected a protobuf message, got: %s", type(msg))
735
+ telemetry.send_warning_msg(f"Expected a protobuf message, got: {type(msg)}")
676
736
  return {}
677
737
 
678
738
  result = {}
@@ -697,6 +757,28 @@ def _protobuf_to_json_with_redaction(
697
757
  )
698
758
 
699
759
 
760
+ def _set_query_plan(request: google.protobuf.message.Message, summary: dict) -> None:
761
+ if isinstance(request, proto_base.ExecutePlanRequest):
762
+ # ExecutePlanRequest has plan at top level
763
+ if hasattr(request, "plan"):
764
+ summary["query_plan"] = (
765
+ _protobuf_to_json_with_redaction(request.plan, REDACTED_PLAN_SUFFIXES),
766
+ )
767
+
768
+ elif isinstance(request, proto_base.AnalyzePlanRequest):
769
+ # AnalyzePlanRequest has plan under oneof analyze
770
+ analyze_type = request.WhichOneof("analyze")
771
+ if not analyze_type:
772
+ return
773
+
774
+ summary["analyze_type"] = analyze_type
775
+ analyze_field = getattr(request, analyze_type)
776
+ if hasattr(analyze_field, "plan"):
777
+ summary["query_plan"] = _protobuf_to_json_with_redaction(
778
+ analyze_field.plan, REDACTED_PLAN_SUFFIXES
779
+ )
780
+
781
+
700
782
  # global telemetry client
701
783
  telemetry = Telemetry(is_enabled="SNOWPARK_CONNECT_DISABLE_TELEMETRY" not in os.environ)
702
784
 
@@ -2,4 +2,4 @@
2
2
  #
3
3
  # Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
4
4
  #
5
- VERSION = (0,29,0)
5
+ VERSION = (0,30,1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowpark-connect
3
- Version: 0.29.0
3
+ Version: 0.30.1
4
4
  Summary: Snowpark Connect for Spark
5
5
  Author: Snowflake, Inc
6
6
  License: Apache License, Version 2.0
@@ -1,6 +1,7 @@
1
1
  snowflake/snowpark_connect/__init__.py,sha256=Sml4x1LTNnxZyw6nnDeJrZWUi3eUAR46Rsw6N-wHUSA,605
2
- snowflake/snowpark_connect/column_name_handler.py,sha256=_Z2j4teR_3nsCLjMxhyChGmds_1v6tP51OfkEpmWXWk,27164
3
- snowflake/snowpark_connect/config.py,sha256=AqoARgCT07BGwadzfcRb-S-In6MpLEM_dMFbdQfEaXU,28712
2
+ snowflake/snowpark_connect/client.py,sha256=K0PK8aIppghBnY0uKlDOi4WZBUhKxJQ_vRuDpB3YsbQ,2045
3
+ snowflake/snowpark_connect/column_name_handler.py,sha256=eiqUe7YdYFxjyHOAbD9gNCstOIuroZA2INkV4KhqGMg,27407
4
+ snowflake/snowpark_connect/config.py,sha256=m2ZPZPaarj2GglLnsuBCgsoJ7SLq3roIC-Jr5YyKl2k,29585
4
5
  snowflake/snowpark_connect/constants.py,sha256=FBDxNUxdqWxnf6d5-eanHlYdFFyQqCqvNyZG-uOiO6Q,598
5
6
  snowflake/snowpark_connect/control_server.py,sha256=mz3huYo84hgqUB6maZxu3LYyGq7vVL1nv7-7-MjuSYY,1956
6
7
  snowflake/snowpark_connect/dataframe_container.py,sha256=0ozyUXrWErzM7Gltnb-i2o5ZyXVVeT_HCqpuYliQXwc,8798
@@ -8,21 +9,21 @@ snowflake/snowpark_connect/dataframe_name_handler.py,sha256=aR-CpdGsN2d6tNW0H_F9
8
9
  snowflake/snowpark_connect/date_time_format_mapping.py,sha256=qtQ-JTGR1VRWM2oxM1aYggE_g-BNouffeHxmCk89xkk,16809
9
10
  snowflake/snowpark_connect/empty_dataframe.py,sha256=aKO6JkYnArWCpLGcn9BzvTspw2k_c6eAM0mQImAY0J0,428
10
11
  snowflake/snowpark_connect/resources_initializer.py,sha256=GqBaiFrK9dWec3NLuNZuuxx5Ebw_ZCiMyFrS2KjK2fw,5084
11
- snowflake/snowpark_connect/server.py,sha256=Qk7fRU1xRWkogFDbMjea_Wvy8uzBkK-4NfXaOYshRYw,51287
12
+ snowflake/snowpark_connect/server.py,sha256=vF4IDojinpKsXw6DG3YIAUKkTbsxJHPR00w3L6ANvnw,51523
12
13
  snowflake/snowpark_connect/start_server.py,sha256=udegO0rk2FeSnXsIcCIYQW3VRlGDjB_cU8lJ8xSzuM8,942
13
14
  snowflake/snowpark_connect/tcm.py,sha256=ftncZFbVO-uyWMhF1_HYKQykB7KobHEYoyQsYbQj1EM,203
14
- snowflake/snowpark_connect/type_mapping.py,sha256=6Hg-h1iVzVB_FnwG3Sjl-UGr2Itrs4LxVb2Pz5Ue-YA,41566
15
+ snowflake/snowpark_connect/type_mapping.py,sha256=hAkOz9_uPi6XnFbd_KcwHqiWoqjt5ht7hlMvD7zR7Cw,45093
15
16
  snowflake/snowpark_connect/typed_column.py,sha256=Tavii8b4zMj5IWOvN6tlOVmC80W6eQct0pC_tF2nlhU,3867
16
- snowflake/snowpark_connect/version.py,sha256=E3_-BdGBmVLkmiPA2_IpeNDcO7uNHbe3AuVpWdNyKW0,118
17
+ snowflake/snowpark_connect/version.py,sha256=ihyPxJymHC107aRgWHpDuSBrYCYH4zvut1JtZOdgS5o,118
17
18
  snowflake/snowpark_connect/analyze_plan/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
18
- snowflake/snowpark_connect/analyze_plan/map_tree_string.py,sha256=Q3ZD-Z7uForrF7W3mSAjwaiEcIv2KDXr5jPfVbromVg,1470
19
+ snowflake/snowpark_connect/analyze_plan/map_tree_string.py,sha256=RFSNdDwOTXOd3gm_rKRJNyDd65zQpBxBpVOOwmKaFVA,1661
19
20
  snowflake/snowpark_connect/error/__init__.py,sha256=oQo6k4zztLmNF1c5IvJLcS99J6RWY9KBTN3RJ2pKimg,249
20
21
  snowflake/snowpark_connect/error/error_mapping.py,sha256=vdnLOU1Sqpocpu_uCXjfhivutgD3yf60U4D31DJ31ng,195361
21
22
  snowflake/snowpark_connect/error/error_utils.py,sha256=Sb_p5dsrFZsLrR9B_Tp8d80Z6KcPtz9OM40lNbgsgRI,14863
22
23
  snowflake/snowpark_connect/error/exceptions.py,sha256=EOnTDiJZuVJ9dNBzy5cK0OBprbYCD3gWTCCLITjd1mY,677
23
24
  snowflake/snowpark_connect/execute_plan/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
24
25
  snowflake/snowpark_connect/execute_plan/map_execution_command.py,sha256=j3XjBAwqOHY3D2cwu7Ez2jSZq57UUbal-1ynwXnrOHM,9355
25
- snowflake/snowpark_connect/execute_plan/map_execution_root.py,sha256=wFxeSxtuQY1OmI_BRLOzudrGwkJsmbBUOFQfsxxvRrU,7461
26
+ snowflake/snowpark_connect/execute_plan/map_execution_root.py,sha256=9v6feXmVjqifhQJWT9qI6tmOhb3SbBaETHCjCbQCHtk,7659
26
27
  snowflake/snowpark_connect/execute_plan/utils.py,sha256=OsjEd-WnQEX2oNVvlzGR6rpJVYyfxx1LACP09k1Y4lk,7830
27
28
  snowflake/snowpark_connect/expression/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
28
29
  snowflake/snowpark_connect/expression/function_defaults.py,sha256=WEnzc_uzZZltcfE6kSbrvLFzrXsfx6HLqvLKgX-Dh_E,6605
@@ -30,12 +31,12 @@ snowflake/snowpark_connect/expression/hybrid_column_map.py,sha256=2jItaXnFnqcaOI
30
31
  snowflake/snowpark_connect/expression/literal.py,sha256=wk5NnLR85SLHe7GoAvSzMTW0B-3yhAiRz4F5SfU2REs,4459
31
32
  snowflake/snowpark_connect/expression/map_cast.py,sha256=uxNukg9op0i_sKLhY43fJJJ2-SKZ-8wkRMRBiPikJ0c,14799
32
33
  snowflake/snowpark_connect/expression/map_expression.py,sha256=04EZNHV7bb0KAIhbnmhIgssvafn3XTSE9Ax_uMishP8,15711
33
- snowflake/snowpark_connect/expression/map_extension.py,sha256=Qm1Jn3JunswD_hO7ornvKpR6WcM3UKO_JpZE6ovH3VM,4939
34
- snowflake/snowpark_connect/expression/map_sql_expression.py,sha256=ultWVVcCeXHUlNSkq4PEdeFuezLDELcemFJVSIJczbE,25923
34
+ snowflake/snowpark_connect/expression/map_extension.py,sha256=hEa-pylnb4PugZYQOpMlb7dGej90dozzxm8og_pGRR8,17513
35
+ snowflake/snowpark_connect/expression/map_sql_expression.py,sha256=v5lAMqEkLMe59RrtC35KKGpeYrPeJXl0NTf2QxqKATI,30763
35
36
  snowflake/snowpark_connect/expression/map_udf.py,sha256=_om_Kqxm_sm3RhwP4DZbGPUpArX90MoJQm-KwEWrTiQ,8034
36
37
  snowflake/snowpark_connect/expression/map_unresolved_attribute.py,sha256=cyyEtAsPqcCpCYulAobSbtPDV3xkCIM0_tq4wdMxuJM,18843
37
38
  snowflake/snowpark_connect/expression/map_unresolved_extract_value.py,sha256=A-m-RczZW6xHMjgYR5RV_vzMTpNBRoH3Tk_A1V8z_pk,5382
38
- snowflake/snowpark_connect/expression/map_unresolved_function.py,sha256=alDAcNWwIe1c5rPQ9d8VL6UP1TosGSVziwa8y3s84wg,475679
39
+ snowflake/snowpark_connect/expression/map_unresolved_function.py,sha256=QvUNGiD87xG5JODjmk9KhC1BwSoLztP7uGafcyLt9d0,484930
39
40
  snowflake/snowpark_connect/expression/map_unresolved_star.py,sha256=gecSxJ9flsn9chTXmYHP8nLzs_209xnVlyNwANDXRFg,8820
40
41
  snowflake/snowpark_connect/expression/map_update_fields.py,sha256=bMuZjCOE5wgrZv3ApsoiwEUv-lPgnMWUk-DFX11QuX0,6710
41
42
  snowflake/snowpark_connect/expression/map_window_function.py,sha256=apJxtWSnLogMG0F_En67JoGrGRGYQ0I8O0xPRk4TR_o,12152
@@ -389,50 +390,53 @@ snowflake/snowpark_connect/proto/__init__.py,sha256=BcDSVIfoWPrmy_ghh9YB9Uh66pfm
389
390
  snowflake/snowpark_connect/proto/control_pb2.py,sha256=rS2hFxhkkTZZmjmW1VAV1CsnN8DljCtNjGYoD89WPeY,2204
390
391
  snowflake/snowpark_connect/proto/control_pb2.pyi,sha256=DQVcgVtvo1W1tpdi8_ogBO6D1wqWy-ZlZDSjORRwDYY,1554
391
392
  snowflake/snowpark_connect/proto/control_pb2_grpc.py,sha256=IPHf2f27M1HElF55HH-Kvd8WCFRo6SDj_EjEzFEe_rg,5444
392
- snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.py,sha256=NSOT7lvgSbfN8iwxl1nmbJYSjoR3eGYEtYzlnrXtL88,3127
393
- snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.pyi,sha256=G6wa6Ei-LHgZH4mXG0vOAli5D5JIJQO8RQo8E_4ui4o,3831
393
+ snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.py,sha256=Buyg8ACpSbx4A9S-xA5MBAhYhF6oe7YXRs7wCcAU2Wc,3632
394
+ snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.pyi,sha256=4LLUkliHNthv-H4yFTargdc8FIuytWrg9Ki4JU4Zm1E,4540
395
+ snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
394
396
  snowflake/snowpark_connect/proto/snowflake_rdd_pb2.pyi,sha256=IA_TC6cYM50qTlpSL0UwhmbNkNYgEYuNcZLYTxbGfBc,1780
395
397
  snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2.py,sha256=now6RWB80CV5Jko0DBLFMdXYXzvfX30uhHqHb-hKe2o,4886
396
398
  snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2.pyi,sha256=4PZkACNf5ulshE8yP2Sl36CXH4UBpIKvZPhzFqeEbsM,7302
399
+ snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
397
400
  snowflake/snowpark_connect/relation/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
398
- snowflake/snowpark_connect/relation/io_utils.py,sha256=jBxJZaFde9T6lSWnw23af0Jz_vn0OXD86XVLCJ2og5o,2504
401
+ snowflake/snowpark_connect/relation/io_utils.py,sha256=5FzR34-rEcZkxtLSWpArzpCwr0_Zi9jNY-KM80XBj_k,4266
399
402
  snowflake/snowpark_connect/relation/map_aggregate.py,sha256=KElVYO62V3jkU8ldTCfTX2F_atP_GZAozPY1X0W42XQ,19189
400
403
  snowflake/snowpark_connect/relation/map_catalog.py,sha256=mcx6An4fqHAxy2OhOC66Xe_0aRtYPDGkBEgMK5CfaXU,5822
401
- snowflake/snowpark_connect/relation/map_column_ops.py,sha256=grleA0S6jyia6T5IGbPOEdz0zI0TkkV7jENzlfzoQlQ,49017
404
+ snowflake/snowpark_connect/relation/map_column_ops.py,sha256=cQ9Cde2PMAGXoQWSd984nsp86JCZL7YsAHvfu8Vi50c,49199
402
405
  snowflake/snowpark_connect/relation/map_crosstab.py,sha256=H_J8-IARK6zMEUFrOjKif1St6M20gvBAnP0EuArFHGg,2422
403
406
  snowflake/snowpark_connect/relation/map_extension.py,sha256=sjSGbjrZCU2Q3tSxbtuuUwgfzl7KfCgLTHiz2aYUAYk,23334
404
- snowflake/snowpark_connect/relation/map_join.py,sha256=YGOy6nmpb0mqw8D3TzsV4bDlvaq6QFYPwfF5S6YgydU,15201
407
+ snowflake/snowpark_connect/relation/map_join.py,sha256=I-_jifoCOtahG49maa1Ew4zQ-ArZx-HmRLRrj3q625A,15604
405
408
  snowflake/snowpark_connect/relation/map_local_relation.py,sha256=VBfwBT75GQUe01UOZptwcYsI7zZxaIMQyTOG6kmVuJ0,15219
406
409
  snowflake/snowpark_connect/relation/map_map_partitions.py,sha256=y6WhtacyYRmV8zLv3dQtBP2asijLze363htQbgNyoak,4130
407
410
  snowflake/snowpark_connect/relation/map_relation.py,sha256=6RncDhkGXnme6m3sCzOmyfm9x0aM-aqn9H60HY-jdzg,12733
408
- snowflake/snowpark_connect/relation/map_row_ops.py,sha256=x1Jqircy4I0iiSljx3zbq0YxwGvGzPcXIY8_nhtl2PM,30528
411
+ snowflake/snowpark_connect/relation/map_row_ops.py,sha256=76qMXMLisEZpcjLRHkkqufKEIK8NAiGOKcwTI1N-qkY,34877
409
412
  snowflake/snowpark_connect/relation/map_sample_by.py,sha256=8ALQbeUsB89sI3uiUFqG3w1A4TtOzOAL4umdKp6-c38,1530
410
- snowflake/snowpark_connect/relation/map_show_string.py,sha256=GgKg0qp1pGqSC7TuFedTU4IYaIm-Fx23OJ1LfkcGOHw,3382
411
- snowflake/snowpark_connect/relation/map_sql.py,sha256=7LeobApI0Pfvb1D2rSJYFMjyD6PMJ8Ig4Frcxv_k0Bc,104069
412
- snowflake/snowpark_connect/relation/map_stats.py,sha256=kqRYvix8RfluTKx1cAy9JhBUv6arYQHgfxpP1R4QwBM,13985
413
+ snowflake/snowpark_connect/relation/map_show_string.py,sha256=-QgOCZ_Kf7qDBN6hd0-eTxXqvVvzoJxw5hGBdk9Upgs,3669
414
+ snowflake/snowpark_connect/relation/map_sql.py,sha256=fDGsl_ZpNo2_rkhXV1cO6i6lnUAnrK-bpiBcKiCnbGU,105507
415
+ snowflake/snowpark_connect/relation/map_stats.py,sha256=xc0ito9lxl3HtYUnWEVuIwV0h3vdD3inSnfmJmztO1g,14493
413
416
  snowflake/snowpark_connect/relation/map_subquery_alias.py,sha256=rHgE9XUzuWWkjNPtJz3Sxzz2aFo690paHKZh9frqPXk,1456
414
417
  snowflake/snowpark_connect/relation/map_udtf.py,sha256=cfDnbZ3TRJ6eb0EVResu6GL-OwQpaEabWLbrhgWnkRw,13316
415
418
  snowflake/snowpark_connect/relation/stage_locator.py,sha256=3PnSmuubtU04wTf4B_kyFK1ag45QXBjzfoKY5mu5Gtk,8925
416
- snowflake/snowpark_connect/relation/utils.py,sha256=AhE58g0Zz2DWY9gW4JnB_iBU-r4RMnWCj4okQdHSz_4,8398
419
+ snowflake/snowpark_connect/relation/utils.py,sha256=I5June2uch3hsXoQk21y2v_UkLVsBbaJtpV8qEcwIok,8916
417
420
  snowflake/snowpark_connect/relation/catalogs/__init__.py,sha256=0yJ5Nfg7SIxudI0P7_U5EWPyiTpkMet8tSq-IwutSZo,265
418
421
  snowflake/snowpark_connect/relation/catalogs/abstract_spark_catalog.py,sha256=wujeuKotJZRzpPp_WqVB9TkfprFU2tIXTQJk_eFOR0o,9826
419
422
  snowflake/snowpark_connect/relation/catalogs/snowflake_catalog.py,sha256=e9rXL0DOAf4VBZfa-idqehLAEZoCgIoE4IDiLVvR4dQ,28475
420
423
  snowflake/snowpark_connect/relation/catalogs/utils.py,sha256=AgiBkK9Xwm9ZyjsKZYK9eTb4YZ9C5dAimD9DLlft-tY,1753
421
424
  snowflake/snowpark_connect/relation/read/__init__.py,sha256=5J3IOTKu4Qmenouz1Oz_bUu_4c6KpxtaC63mPUGLyeY,132
422
425
  snowflake/snowpark_connect/relation/read/jdbc_read_dbapi.py,sha256=nwvBYwdDTRQc8ljt4CLLaVl5M2uei1TDICJkz7CDSG8,24608
423
- snowflake/snowpark_connect/relation/read/map_read.py,sha256=y3jCOXzQrL81lz67zYnW1_1ux0uEfYRz0hueYmrv-oc,15460
424
- snowflake/snowpark_connect/relation/read/map_read_csv.py,sha256=dDBQTdLdJMmhAa23qGaGOfMtnlziN3h_qxGpf5nYPDc,7907
426
+ snowflake/snowpark_connect/relation/read/map_read.py,sha256=9SBe9h1ZVv9QFQIfFwim2BQODToCIUclNYETZhEjKsA,15770
427
+ snowflake/snowpark_connect/relation/read/map_read_csv.py,sha256=3piGbSdzx5SPr10KCaqF8WrjWDlCeXQlUi3d4cfpeU8,8269
425
428
  snowflake/snowpark_connect/relation/read/map_read_jdbc.py,sha256=rfuf2Gp89v-9YFhcXFGdpzmfUgYm1ml0wYN5fdu5HA8,3950
426
- snowflake/snowpark_connect/relation/read/map_read_json.py,sha256=_cI0_65OVCvPM4DoOQq_1uGi8sy_vf-LZHvvVY2fCr4,12897
427
- snowflake/snowpark_connect/relation/read/map_read_parquet.py,sha256=VIUR5GWP6DBaYCDUsrDJzHQOM3y4hIbtWiCx0f4mczs,7168
429
+ snowflake/snowpark_connect/relation/read/map_read_json.py,sha256=VWd_g7OeE2dBMxJFvLXt4ntdN9fu8Izerdt3-RGmDYA,13255
430
+ snowflake/snowpark_connect/relation/read/map_read_parquet.py,sha256=dCEmVW40H0bZpyH3eIwKz70iME9mLkQxPPQ-1OawCAA,7384
428
431
  snowflake/snowpark_connect/relation/read/map_read_socket.py,sha256=yg7aO7jXMOyLQ9k3-abywNN2VAgvtvix2V8LsR_XQO4,2267
429
432
  snowflake/snowpark_connect/relation/read/map_read_table.py,sha256=mlbC4mbsV4_mHxYpxkOJ8nr8aNwEh2xBzfzC07XXaCQ,6607
430
433
  snowflake/snowpark_connect/relation/read/map_read_text.py,sha256=9y0N5kxNrjAGvrkSK2bf01yqiv6kqhoAExi7qQ9GQCg,3689
434
+ snowflake/snowpark_connect/relation/read/metadata_utils.py,sha256=-m9-YXt7fvHr0d6Lkmmp1j9Il6bXjOZR2EUDoPAMGuo,5428
431
435
  snowflake/snowpark_connect/relation/read/reader_config.py,sha256=PMh1R5IjqqTwiAAqvDRhnTx8Jxnhq8wVCmpZRqqKD3E,16437
432
436
  snowflake/snowpark_connect/relation/read/utils.py,sha256=rIIM6d2WXHh7MLGyHNiRc9tS8b0dmyFQr7rHepIYJOU,4111
433
437
  snowflake/snowpark_connect/relation/write/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
434
438
  snowflake/snowpark_connect/relation/write/jdbc_write_dbapi.py,sha256=GI9FyGZuQQNV-6Q8Ob-Xr0im3iAPdH-Jkyx8bjwbOuE,11931
435
- snowflake/snowpark_connect/relation/write/map_write.py,sha256=ZXOn1ayo1F6bI6ZWYwWmr3zeCqAAVZlcD_t0Q28SC0c,47144
439
+ snowflake/snowpark_connect/relation/write/map_write.py,sha256=w47pAPxGj1HMZggmxsMsKQEWw47bK3DBct24nMB48aA,47553
436
440
  snowflake/snowpark_connect/relation/write/map_write_jdbc.py,sha256=1nOWRgjtZzfRwnSRGFP9V6mqBVlGhSBr2KHGHbe4JMU,1404
437
441
  snowflake/snowpark_connect/resources/java_udfs-1.0-SNAPSHOT.jar,sha256=tVyOp6tXxu9nm6SDufwQiGzfH3pnuh_7PowsMZxOolY,9773
438
442
  snowflake/snowpark_connect/utils/__init__.py,sha256=xsIE96jDASko3F-MeNf4T4Gg5ufthS8CejeiJDfri0M,76
@@ -440,7 +444,7 @@ snowflake/snowpark_connect/utils/artifacts.py,sha256=TkHZ2uNfZiphgtG91V1_c_h9yP9
440
444
  snowflake/snowpark_connect/utils/cache.py,sha256=bAyoNBW6Z1ui9BuppDywbQeG6fdju4L-owFHzySOTnk,3382
441
445
  snowflake/snowpark_connect/utils/concurrent.py,sha256=BTbUmvupLzUSRd6L7kKk9yIXFdqlDOkXebVMaECRD-A,3653
442
446
  snowflake/snowpark_connect/utils/context.py,sha256=aYCQE-K4OgGmCDCw16H56hnS9EiezZ2u3uEvbcuEn1I,13488
443
- snowflake/snowpark_connect/utils/describe_query_cache.py,sha256=HByBsP-XJ1PAk414OQtwIqcFnqpC2zq-ZK_YxR4O5gg,9100
447
+ snowflake/snowpark_connect/utils/describe_query_cache.py,sha256=1lk3pl1zSN4zSQBay9v5W3tljiR1fCKWaCID5BDYZxc,9213
444
448
  snowflake/snowpark_connect/utils/env_utils.py,sha256=g__Uio5ae20Tm1evahIHdJUXQYPmjNUT_kYPSIy5JDU,1488
445
449
  snowflake/snowpark_connect/utils/external_udxf_cache.py,sha256=eSZHMbjTxnkg78IlbG5P1Vno6j5ag_FSI0c4Xi2UyPs,1044
446
450
  snowflake/snowpark_connect/utils/identifiers.py,sha256=yHsOklj6SM2re5auhSSMLPSvCYhpR8Cgy-Kgevf8gDc,7810
@@ -451,7 +455,7 @@ snowflake/snowpark_connect/utils/profiling.py,sha256=ttdHzQUYarvTqJASLNuKFIax7ej
451
455
  snowflake/snowpark_connect/utils/scala_udf_utils.py,sha256=RFDDMmgQ_xBWk98kdfWaw4Hla3ZqYf3UAijU4uAUNdA,23011
452
456
  snowflake/snowpark_connect/utils/session.py,sha256=3-76jBcSQFOIJVmXvyClMI2kIz_5PJXWTHE5pcSo_8w,7431
453
457
  snowflake/snowpark_connect/utils/snowpark_connect_logging.py,sha256=23bvbALGqixJ3Ap9QWM3OpcKNK-sog2mr9liSmvwqYU,1123
454
- snowflake/snowpark_connect/utils/telemetry.py,sha256=4TImrE4XY5rfiesHyPQQ0xtU63qnN1wUpDXUP12PAvA,22259
458
+ snowflake/snowpark_connect/utils/telemetry.py,sha256=Eh8v7kXbkvfZFcCk_fyMUHM7KjWg7CkeIxYKzvQ1vTo,25267
455
459
  snowflake/snowpark_connect/utils/temporary_view_cache.py,sha256=M1czwb-uv0nP9w1meB72NR7cj0iryJc_OYFPztx5XuU,2080
456
460
  snowflake/snowpark_connect/utils/udf_cache.py,sha256=AmUFc6iv0UvJF8iH6kAp4BWcZ3O465qyS1pcxf5mQZ8,13342
457
461
  snowflake/snowpark_connect/utils/udf_helper.py,sha256=g-TxTs4ARyJWYgADrosfQQG-ykBBQdm1g5opslxJq_E,12563
@@ -465,17 +469,17 @@ snowflake/snowpark_decoder/dp_session.py,sha256=HIr3TfKgYl5zqaGR5xpFU9ZVkcaTB9I8
465
469
  snowflake/snowpark_decoder/spark_decoder.py,sha256=EQiCvBiqB736Bc17o3gnYGtcYVcyfGxroO5e1kbe1Co,2885
466
470
  snowflake/snowpark_decoder/_internal/proto/generated/DataframeProcessorMsg_pb2.py,sha256=2eSDqeyfMvmIJ6_rF663DrEe1dg_anrP4OpVJNTJHaQ,2598
467
471
  snowflake/snowpark_decoder/_internal/proto/generated/DataframeProcessorMsg_pb2.pyi,sha256=aIH23k52bXdw5vO3RtM5UcOjDPaWsJFx1SRUSk3qOK8,6142
468
- snowpark_connect-0.29.0.data/scripts/snowpark-connect,sha256=yZ94KqbWACxnwV8mpg8NjILvvRNjnF8B3cs3ZFNuIM4,1546
469
- snowpark_connect-0.29.0.data/scripts/snowpark-session,sha256=NMAHSonTo-nmOZSkQNlszUC0jLJ8QWEDUsUmMe2UAOw,190
470
- snowpark_connect-0.29.0.data/scripts/snowpark-submit,sha256=Zd98H9W_d0dIqMSkQLdHyW5G3myxF0t4c3vNBt2nD6A,12056
471
- snowpark_connect-0.29.0.dist-info/licenses/LICENSE-binary,sha256=fmBlX39HwTlBUyiKEznaLZGuxQy-7ndLLG_rTXjF02Y,22916
472
- snowpark_connect-0.29.0.dist-info/licenses/LICENSE.txt,sha256=Ff9cPv4xu0z7bnMTHzo4vDncOShsy33w4oJMA2xjn6c,11365
473
- snowpark_connect-0.29.0.dist-info/licenses/NOTICE-binary,sha256=elMF8brgGNJwOz8YdorzBF6-U8ZhR8F-77FfGkZng7U,57843
472
+ snowpark_connect-0.30.1.data/scripts/snowpark-connect,sha256=yZ94KqbWACxnwV8mpg8NjILvvRNjnF8B3cs3ZFNuIM4,1546
473
+ snowpark_connect-0.30.1.data/scripts/snowpark-session,sha256=NMAHSonTo-nmOZSkQNlszUC0jLJ8QWEDUsUmMe2UAOw,190
474
+ snowpark_connect-0.30.1.data/scripts/snowpark-submit,sha256=Zd98H9W_d0dIqMSkQLdHyW5G3myxF0t4c3vNBt2nD6A,12056
475
+ snowpark_connect-0.30.1.dist-info/licenses/LICENSE-binary,sha256=fmBlX39HwTlBUyiKEznaLZGuxQy-7ndLLG_rTXjF02Y,22916
476
+ snowpark_connect-0.30.1.dist-info/licenses/LICENSE.txt,sha256=Ff9cPv4xu0z7bnMTHzo4vDncOShsy33w4oJMA2xjn6c,11365
477
+ snowpark_connect-0.30.1.dist-info/licenses/NOTICE-binary,sha256=elMF8brgGNJwOz8YdorzBF6-U8ZhR8F-77FfGkZng7U,57843
474
478
  spark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
475
479
  spark/connect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
476
480
  spark/connect/envelope_pb2.py,sha256=7Gc6OUA3vaCuTCIKamb_Iiw7W9jPTcWNEv1im20eWHM,2726
477
481
  spark/connect/envelope_pb2.pyi,sha256=VXTJSPpcxzB_dWqVdvPY4KkPhJfh0WmkX7SNHWoLhx0,3358
478
- snowpark_connect-0.29.0.dist-info/METADATA,sha256=p1Q0_OWoXDCfQu7mmBzxJDAveAso1VeobQ4p9rBVYUE,1625
479
- snowpark_connect-0.29.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
480
- snowpark_connect-0.29.0.dist-info/top_level.txt,sha256=ExnWqVpoTHRG99fu_AxXZVOz8c-De7nNu0yFCGylM8I,16
481
- snowpark_connect-0.29.0.dist-info/RECORD,,
482
+ snowpark_connect-0.30.1.dist-info/METADATA,sha256=GLLoHHRS1oJ03td7EIC8N3EsPqmw7KH3xaZbNNr2wi4,1625
483
+ snowpark_connect-0.30.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
484
+ snowpark_connect-0.30.1.dist-info/top_level.txt,sha256=ExnWqVpoTHRG99fu_AxXZVOz8c-De7nNu0yFCGylM8I,16
485
+ snowpark_connect-0.30.1.dist-info/RECORD,,