snowpark-connect 0.23.0__py3-none-any.whl → 0.25.0__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 (476) hide show
  1. snowflake/snowpark_connect/column_name_handler.py +116 -4
  2. snowflake/snowpark_connect/config.py +13 -0
  3. snowflake/snowpark_connect/constants.py +0 -29
  4. snowflake/snowpark_connect/dataframe_container.py +6 -0
  5. snowflake/snowpark_connect/execute_plan/map_execution_command.py +56 -1
  6. snowflake/snowpark_connect/expression/function_defaults.py +207 -0
  7. snowflake/snowpark_connect/expression/literal.py +18 -2
  8. snowflake/snowpark_connect/expression/map_cast.py +5 -8
  9. snowflake/snowpark_connect/expression/map_expression.py +10 -1
  10. snowflake/snowpark_connect/expression/map_extension.py +12 -2
  11. snowflake/snowpark_connect/expression/map_sql_expression.py +23 -1
  12. snowflake/snowpark_connect/expression/map_udf.py +26 -8
  13. snowflake/snowpark_connect/expression/map_unresolved_attribute.py +199 -15
  14. snowflake/snowpark_connect/expression/map_unresolved_extract_value.py +44 -16
  15. snowflake/snowpark_connect/expression/map_unresolved_function.py +836 -365
  16. snowflake/snowpark_connect/expression/map_unresolved_star.py +3 -2
  17. snowflake/snowpark_connect/hidden_column.py +39 -0
  18. snowflake/snowpark_connect/includes/jars/hadoop-client-api-trimmed-3.3.4.jar +0 -0
  19. snowflake/snowpark_connect/includes/jars/{hadoop-client-api-3.3.4.jar → spark-connect-client-jvm_2.12-3.5.6.jar} +0 -0
  20. snowflake/snowpark_connect/relation/map_column_ops.py +18 -36
  21. snowflake/snowpark_connect/relation/map_extension.py +56 -15
  22. snowflake/snowpark_connect/relation/map_join.py +258 -62
  23. snowflake/snowpark_connect/relation/map_row_ops.py +2 -29
  24. snowflake/snowpark_connect/relation/map_sql.py +88 -11
  25. snowflake/snowpark_connect/relation/map_udtf.py +4 -2
  26. snowflake/snowpark_connect/relation/read/map_read.py +3 -3
  27. snowflake/snowpark_connect/relation/read/map_read_jdbc.py +1 -1
  28. snowflake/snowpark_connect/relation/read/map_read_json.py +8 -1
  29. snowflake/snowpark_connect/relation/read/map_read_table.py +1 -9
  30. snowflake/snowpark_connect/relation/read/reader_config.py +3 -1
  31. snowflake/snowpark_connect/relation/read/utils.py +6 -7
  32. snowflake/snowpark_connect/relation/utils.py +1 -170
  33. snowflake/snowpark_connect/relation/write/map_write.py +62 -53
  34. snowflake/snowpark_connect/resources_initializer.py +29 -1
  35. snowflake/snowpark_connect/server.py +18 -3
  36. snowflake/snowpark_connect/type_mapping.py +29 -25
  37. snowflake/snowpark_connect/typed_column.py +14 -0
  38. snowflake/snowpark_connect/utils/artifacts.py +23 -0
  39. snowflake/snowpark_connect/utils/context.py +6 -1
  40. snowflake/snowpark_connect/utils/scala_udf_utils.py +588 -0
  41. snowflake/snowpark_connect/utils/telemetry.py +6 -17
  42. snowflake/snowpark_connect/utils/udf_helper.py +2 -0
  43. snowflake/snowpark_connect/utils/udf_utils.py +38 -7
  44. snowflake/snowpark_connect/utils/udtf_utils.py +17 -3
  45. snowflake/snowpark_connect/version.py +1 -1
  46. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/METADATA +1 -1
  47. snowpark_connect-0.25.0.dist-info/RECORD +477 -0
  48. snowflake/snowpark_connect/includes/jars/scala-compiler-2.12.18.jar +0 -0
  49. snowflake/snowpark_connect/includes/jars/spark-kubernetes_2.12-3.5.6.jar +0 -0
  50. snowflake/snowpark_connect/includes/jars/spark-mllib_2.12-3.5.6.jar +0 -0
  51. snowflake/snowpark_connect/includes/jars/spark-streaming_2.12-3.5.6.jar +0 -0
  52. snowflake/snowpark_connect/includes/python/pyspark/errors/tests/__init__.py +0 -16
  53. snowflake/snowpark_connect/includes/python/pyspark/errors/tests/test_errors.py +0 -60
  54. snowflake/snowpark_connect/includes/python/pyspark/ml/deepspeed/tests/test_deepspeed_distributor.py +0 -306
  55. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/__init__.py +0 -16
  56. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_classification.py +0 -53
  57. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_evaluation.py +0 -50
  58. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_feature.py +0 -43
  59. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_function.py +0 -114
  60. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_pipeline.py +0 -47
  61. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_summarizer.py +0 -43
  62. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_tuning.py +0 -46
  63. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_classification.py +0 -238
  64. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_evaluation.py +0 -194
  65. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_feature.py +0 -156
  66. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_pipeline.py +0 -184
  67. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_summarizer.py +0 -78
  68. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_tuning.py +0 -292
  69. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_parity_torch_data_loader.py +0 -50
  70. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_parity_torch_distributor.py +0 -152
  71. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_algorithms.py +0 -456
  72. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_base.py +0 -96
  73. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_dl_util.py +0 -186
  74. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_evaluation.py +0 -77
  75. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_feature.py +0 -401
  76. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_functions.py +0 -528
  77. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_image.py +0 -82
  78. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_linalg.py +0 -409
  79. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_model_cache.py +0 -55
  80. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_param.py +0 -441
  81. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_persistence.py +0 -546
  82. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_pipeline.py +0 -71
  83. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_stat.py +0 -52
  84. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_training_summary.py +0 -494
  85. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_util.py +0 -85
  86. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_wrapper.py +0 -138
  87. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/__init__.py +0 -16
  88. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_basic.py +0 -151
  89. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_nested.py +0 -97
  90. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_pipeline.py +0 -143
  91. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tuning.py +0 -551
  92. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_basic.py +0 -137
  93. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_nested.py +0 -96
  94. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_pipeline.py +0 -142
  95. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/__init__.py +0 -16
  96. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_data_loader.py +0 -137
  97. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_distributor.py +0 -561
  98. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_log_communication.py +0 -172
  99. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/__init__.py +0 -16
  100. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_algorithms.py +0 -353
  101. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_feature.py +0 -192
  102. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_linalg.py +0 -680
  103. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_stat.py +0 -206
  104. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_streaming_algorithms.py +0 -471
  105. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_util.py +0 -108
  106. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/__init__.py +0 -16
  107. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/__init__.py +0 -16
  108. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_any_all.py +0 -177
  109. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_apply_func.py +0 -575
  110. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_binary_ops.py +0 -235
  111. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_combine.py +0 -653
  112. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_compute.py +0 -463
  113. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_corrwith.py +0 -86
  114. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_cov.py +0 -151
  115. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_cumulative.py +0 -139
  116. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_describe.py +0 -458
  117. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_eval.py +0 -86
  118. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_melt.py +0 -202
  119. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_missing_data.py +0 -520
  120. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_pivot.py +0 -361
  121. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/__init__.py +0 -16
  122. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/__init__.py +0 -16
  123. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_any_all.py +0 -40
  124. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_apply_func.py +0 -42
  125. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_binary_ops.py +0 -40
  126. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_combine.py +0 -37
  127. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_compute.py +0 -60
  128. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_corrwith.py +0 -40
  129. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_cov.py +0 -40
  130. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_cumulative.py +0 -90
  131. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_describe.py +0 -40
  132. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_eval.py +0 -40
  133. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_melt.py +0 -40
  134. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_missing_data.py +0 -42
  135. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_pivot.py +0 -37
  136. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/__init__.py +0 -16
  137. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_base.py +0 -36
  138. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_binary_ops.py +0 -42
  139. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_boolean_ops.py +0 -47
  140. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_categorical_ops.py +0 -55
  141. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_complex_ops.py +0 -40
  142. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_date_ops.py +0 -47
  143. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_datetime_ops.py +0 -47
  144. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_null_ops.py +0 -42
  145. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_arithmetic.py +0 -43
  146. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_ops.py +0 -47
  147. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_reverse.py +0 -43
  148. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_string_ops.py +0 -47
  149. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_timedelta_ops.py +0 -47
  150. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_udt_ops.py +0 -40
  151. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/testing_utils.py +0 -226
  152. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/__init__.py +0 -16
  153. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_align.py +0 -39
  154. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_basic_slow.py +0 -55
  155. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_cov_corrwith.py +0 -39
  156. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_dot_frame.py +0 -39
  157. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_dot_series.py +0 -39
  158. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_index.py +0 -39
  159. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_series.py +0 -39
  160. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_setitem_frame.py +0 -43
  161. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_setitem_series.py +0 -43
  162. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/__init__.py +0 -16
  163. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_attrs.py +0 -40
  164. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_constructor.py +0 -39
  165. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_conversion.py +0 -42
  166. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_reindexing.py +0 -42
  167. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_reshaping.py +0 -37
  168. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_spark.py +0 -40
  169. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_take.py +0 -42
  170. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_time_series.py +0 -48
  171. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_truncate.py +0 -40
  172. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/__init__.py +0 -16
  173. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_aggregate.py +0 -40
  174. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_apply_func.py +0 -41
  175. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_cumulative.py +0 -67
  176. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_describe.py +0 -40
  177. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_groupby.py +0 -55
  178. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_head_tail.py +0 -40
  179. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_index.py +0 -38
  180. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_missing_data.py +0 -55
  181. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_split_apply.py +0 -39
  182. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_stat.py +0 -38
  183. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/__init__.py +0 -16
  184. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_align.py +0 -40
  185. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_base.py +0 -50
  186. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_category.py +0 -73
  187. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_datetime.py +0 -39
  188. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_indexing.py +0 -40
  189. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_reindex.py +0 -40
  190. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_rename.py +0 -40
  191. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_reset_index.py +0 -48
  192. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_timedelta.py +0 -39
  193. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/io/__init__.py +0 -16
  194. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/io/test_parity_io.py +0 -40
  195. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/__init__.py +0 -16
  196. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot.py +0 -45
  197. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot_matplotlib.py +0 -45
  198. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot_plotly.py +0 -49
  199. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot.py +0 -37
  200. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot_matplotlib.py +0 -53
  201. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot_plotly.py +0 -45
  202. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/__init__.py +0 -16
  203. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_all_any.py +0 -38
  204. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_arg_ops.py +0 -37
  205. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_as_of.py +0 -37
  206. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_as_type.py +0 -38
  207. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_compute.py +0 -37
  208. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_conversion.py +0 -40
  209. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_cumulative.py +0 -40
  210. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_index.py +0 -38
  211. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_missing_data.py +0 -40
  212. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_series.py +0 -37
  213. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_sort.py +0 -38
  214. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_stat.py +0 -38
  215. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_categorical.py +0 -66
  216. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_config.py +0 -37
  217. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_csv.py +0 -37
  218. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_dataframe_conversion.py +0 -42
  219. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_dataframe_spark_io.py +0 -39
  220. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_default_index.py +0 -49
  221. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ewm.py +0 -37
  222. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_expanding.py +0 -39
  223. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_extension.py +0 -49
  224. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_frame_spark.py +0 -53
  225. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_generic_functions.py +0 -43
  226. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_indexing.py +0 -49
  227. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_indexops_spark.py +0 -39
  228. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_internal.py +0 -41
  229. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_namespace.py +0 -39
  230. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_numpy_compat.py +0 -60
  231. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames.py +0 -48
  232. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby.py +0 -39
  233. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby_expanding.py +0 -44
  234. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby_rolling.py +0 -84
  235. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_repr.py +0 -37
  236. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_resample.py +0 -45
  237. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_reshape.py +0 -39
  238. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_rolling.py +0 -39
  239. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_scalars.py +0 -37
  240. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_conversion.py +0 -39
  241. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_datetime.py +0 -39
  242. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_string.py +0 -39
  243. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_spark_functions.py +0 -39
  244. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_sql.py +0 -43
  245. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_stats.py +0 -37
  246. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_typedef.py +0 -36
  247. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_utils.py +0 -37
  248. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_window.py +0 -39
  249. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/__init__.py +0 -16
  250. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_base.py +0 -107
  251. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_binary_ops.py +0 -224
  252. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_boolean_ops.py +0 -825
  253. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_categorical_ops.py +0 -562
  254. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_complex_ops.py +0 -368
  255. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_date_ops.py +0 -257
  256. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_datetime_ops.py +0 -260
  257. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_null_ops.py +0 -178
  258. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_arithmetic.py +0 -184
  259. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_ops.py +0 -497
  260. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_reverse.py +0 -140
  261. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_string_ops.py +0 -354
  262. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_timedelta_ops.py +0 -219
  263. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_udt_ops.py +0 -192
  264. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/testing_utils.py +0 -228
  265. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/__init__.py +0 -16
  266. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_align.py +0 -118
  267. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_basic_slow.py +0 -198
  268. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_cov_corrwith.py +0 -181
  269. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_dot_frame.py +0 -103
  270. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_dot_series.py +0 -141
  271. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_index.py +0 -109
  272. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_series.py +0 -136
  273. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_setitem_frame.py +0 -125
  274. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_setitem_series.py +0 -217
  275. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/__init__.py +0 -16
  276. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_attrs.py +0 -384
  277. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_constructor.py +0 -598
  278. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_conversion.py +0 -73
  279. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_reindexing.py +0 -869
  280. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_reshaping.py +0 -487
  281. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_spark.py +0 -309
  282. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_take.py +0 -156
  283. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_time_series.py +0 -149
  284. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_truncate.py +0 -163
  285. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/__init__.py +0 -16
  286. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_aggregate.py +0 -311
  287. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_apply_func.py +0 -524
  288. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_cumulative.py +0 -419
  289. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_describe.py +0 -144
  290. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_groupby.py +0 -979
  291. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_head_tail.py +0 -234
  292. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_index.py +0 -206
  293. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_missing_data.py +0 -421
  294. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_split_apply.py +0 -187
  295. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_stat.py +0 -397
  296. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/__init__.py +0 -16
  297. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_align.py +0 -100
  298. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_base.py +0 -2743
  299. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_category.py +0 -484
  300. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_datetime.py +0 -276
  301. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_indexing.py +0 -432
  302. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_reindex.py +0 -310
  303. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_rename.py +0 -257
  304. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_reset_index.py +0 -160
  305. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_timedelta.py +0 -128
  306. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/io/__init__.py +0 -16
  307. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/io/test_io.py +0 -137
  308. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/__init__.py +0 -16
  309. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot.py +0 -170
  310. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot_matplotlib.py +0 -547
  311. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot_plotly.py +0 -285
  312. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot.py +0 -106
  313. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot_matplotlib.py +0 -409
  314. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot_plotly.py +0 -247
  315. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/__init__.py +0 -16
  316. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_all_any.py +0 -105
  317. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_arg_ops.py +0 -197
  318. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_as_of.py +0 -137
  319. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_as_type.py +0 -227
  320. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_compute.py +0 -634
  321. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_conversion.py +0 -88
  322. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_cumulative.py +0 -139
  323. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_index.py +0 -475
  324. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_missing_data.py +0 -265
  325. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_series.py +0 -818
  326. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_sort.py +0 -162
  327. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_stat.py +0 -780
  328. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_categorical.py +0 -741
  329. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_config.py +0 -160
  330. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_csv.py +0 -453
  331. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_dataframe_conversion.py +0 -281
  332. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_dataframe_spark_io.py +0 -487
  333. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_default_index.py +0 -109
  334. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ewm.py +0 -434
  335. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_expanding.py +0 -253
  336. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_extension.py +0 -152
  337. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_frame_spark.py +0 -162
  338. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_generic_functions.py +0 -234
  339. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_indexing.py +0 -1339
  340. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_indexops_spark.py +0 -82
  341. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_internal.py +0 -124
  342. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_namespace.py +0 -638
  343. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_numpy_compat.py +0 -200
  344. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames.py +0 -1355
  345. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby.py +0 -655
  346. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby_expanding.py +0 -113
  347. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby_rolling.py +0 -118
  348. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_repr.py +0 -192
  349. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_resample.py +0 -346
  350. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_reshape.py +0 -495
  351. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_rolling.py +0 -263
  352. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_scalars.py +0 -59
  353. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_conversion.py +0 -85
  354. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_datetime.py +0 -364
  355. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_string.py +0 -362
  356. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_spark_functions.py +0 -46
  357. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_sql.py +0 -123
  358. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_stats.py +0 -581
  359. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_typedef.py +0 -447
  360. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_utils.py +0 -301
  361. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_window.py +0 -465
  362. snowflake/snowpark_connect/includes/python/pyspark/resource/tests/__init__.py +0 -16
  363. snowflake/snowpark_connect/includes/python/pyspark/resource/tests/test_resources.py +0 -83
  364. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/__init__.py +0 -16
  365. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/__init__.py +0 -16
  366. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/__init__.py +0 -16
  367. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/test_artifact.py +0 -420
  368. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/test_client.py +0 -358
  369. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/__init__.py +0 -16
  370. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_foreach.py +0 -36
  371. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_foreach_batch.py +0 -44
  372. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_listener.py +0 -116
  373. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_streaming.py +0 -35
  374. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_basic.py +0 -3612
  375. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_column.py +0 -1042
  376. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_function.py +0 -2381
  377. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_plan.py +0 -1060
  378. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow.py +0 -163
  379. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow_map.py +0 -38
  380. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow_python_udf.py +0 -48
  381. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_catalog.py +0 -36
  382. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_column.py +0 -55
  383. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_conf.py +0 -36
  384. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_dataframe.py +0 -96
  385. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_datasources.py +0 -44
  386. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_errors.py +0 -36
  387. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_functions.py +0 -59
  388. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_group.py +0 -36
  389. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_cogrouped_map.py +0 -59
  390. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py +0 -74
  391. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_grouped_map_with_state.py +0 -62
  392. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_map.py +0 -58
  393. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf.py +0 -70
  394. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_grouped_agg.py +0 -50
  395. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py +0 -68
  396. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_window.py +0 -40
  397. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_readwriter.py +0 -46
  398. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_serde.py +0 -44
  399. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_types.py +0 -100
  400. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_udf.py +0 -100
  401. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_udtf.py +0 -163
  402. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_session.py +0 -181
  403. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_utils.py +0 -42
  404. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/__init__.py +0 -16
  405. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_cogrouped_map.py +0 -623
  406. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_grouped_map.py +0 -869
  407. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_grouped_map_with_state.py +0 -342
  408. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_map.py +0 -436
  409. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf.py +0 -363
  410. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_grouped_agg.py +0 -592
  411. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_scalar.py +0 -1503
  412. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_typehints.py +0 -392
  413. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_typehints_with_future_annotations.py +0 -375
  414. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_window.py +0 -411
  415. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/__init__.py +0 -16
  416. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming.py +0 -401
  417. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_foreach.py +0 -295
  418. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_foreach_batch.py +0 -106
  419. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_listener.py +0 -558
  420. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow.py +0 -1346
  421. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow_map.py +0 -182
  422. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow_python_udf.py +0 -202
  423. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_catalog.py +0 -503
  424. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_column.py +0 -225
  425. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_conf.py +0 -83
  426. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_context.py +0 -201
  427. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_dataframe.py +0 -1931
  428. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_datasources.py +0 -256
  429. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_errors.py +0 -69
  430. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_functions.py +0 -1349
  431. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_group.py +0 -53
  432. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_pandas_sqlmetrics.py +0 -68
  433. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_readwriter.py +0 -283
  434. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_serde.py +0 -155
  435. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_session.py +0 -412
  436. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_types.py +0 -1581
  437. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udf.py +0 -961
  438. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udf_profiler.py +0 -165
  439. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udtf.py +0 -1456
  440. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_utils.py +0 -1686
  441. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/__init__.py +0 -16
  442. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_context.py +0 -184
  443. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_dstream.py +0 -706
  444. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_kinesis.py +0 -118
  445. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_listener.py +0 -160
  446. snowflake/snowpark_connect/includes/python/pyspark/tests/__init__.py +0 -16
  447. snowflake/snowpark_connect/includes/python/pyspark/tests/test_appsubmit.py +0 -306
  448. snowflake/snowpark_connect/includes/python/pyspark/tests/test_broadcast.py +0 -196
  449. snowflake/snowpark_connect/includes/python/pyspark/tests/test_conf.py +0 -44
  450. snowflake/snowpark_connect/includes/python/pyspark/tests/test_context.py +0 -346
  451. snowflake/snowpark_connect/includes/python/pyspark/tests/test_daemon.py +0 -89
  452. snowflake/snowpark_connect/includes/python/pyspark/tests/test_install_spark.py +0 -124
  453. snowflake/snowpark_connect/includes/python/pyspark/tests/test_join.py +0 -69
  454. snowflake/snowpark_connect/includes/python/pyspark/tests/test_memory_profiler.py +0 -167
  455. snowflake/snowpark_connect/includes/python/pyspark/tests/test_pin_thread.py +0 -194
  456. snowflake/snowpark_connect/includes/python/pyspark/tests/test_profiler.py +0 -168
  457. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rdd.py +0 -939
  458. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rddbarrier.py +0 -52
  459. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rddsampler.py +0 -66
  460. snowflake/snowpark_connect/includes/python/pyspark/tests/test_readwrite.py +0 -368
  461. snowflake/snowpark_connect/includes/python/pyspark/tests/test_serializers.py +0 -257
  462. snowflake/snowpark_connect/includes/python/pyspark/tests/test_shuffle.py +0 -267
  463. snowflake/snowpark_connect/includes/python/pyspark/tests/test_stage_sched.py +0 -153
  464. snowflake/snowpark_connect/includes/python/pyspark/tests/test_statcounter.py +0 -130
  465. snowflake/snowpark_connect/includes/python/pyspark/tests/test_taskcontext.py +0 -350
  466. snowflake/snowpark_connect/includes/python/pyspark/tests/test_util.py +0 -97
  467. snowflake/snowpark_connect/includes/python/pyspark/tests/test_worker.py +0 -271
  468. snowpark_connect-0.23.0.dist-info/RECORD +0 -893
  469. {snowpark_connect-0.23.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-connect +0 -0
  470. {snowpark_connect-0.23.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-session +0 -0
  471. {snowpark_connect-0.23.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-submit +0 -0
  472. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/WHEEL +0 -0
  473. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/LICENSE-binary +0 -0
  474. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/LICENSE.txt +0 -0
  475. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/NOTICE-binary +0 -0
  476. {snowpark_connect-0.23.0.dist-info → snowpark_connect-0.25.0.dist-info}/top_level.txt +0 -0
@@ -20,7 +20,11 @@ from snowflake.snowpark._internal.analyzer.analyzer_utils import (
20
20
  from snowflake.snowpark._internal.utils import quote_name
21
21
  from snowflake.snowpark.types import StructType
22
22
  from snowflake.snowpark_connect.config import global_config
23
+ from snowflake.snowpark_connect.hidden_column import HiddenColumn
23
24
  from snowflake.snowpark_connect.utils.context import get_current_operation_scope
25
+ from snowflake.snowpark_connect.utils.identifiers import (
26
+ split_fully_qualified_spark_name,
27
+ )
24
28
 
25
29
  ALREADY_QUOTED = re.compile('^(".+")$', re.DOTALL)
26
30
 
@@ -84,6 +88,8 @@ class ColumnNames:
84
88
  spark_name: str
85
89
  snowpark_name: str
86
90
  qualifiers: list[str]
91
+ catalog_info: str | None = None # Catalog from fully qualified name
92
+ database_info: str | None = None # Database from fully qualified name
87
93
 
88
94
 
89
95
  def get_list_of_spark_names_for_column(column_names: ColumnNames) -> list[str]:
@@ -118,6 +124,7 @@ class ColumnNameMap:
118
124
  ] = lambda: global_config.spark_sql_caseSensitive,
119
125
  column_metadata: dict | None = None,
120
126
  column_qualifiers: list[list[str]] | None = None,
127
+ hidden_columns: set[HiddenColumn] | None = None,
121
128
  parent_column_name_map: ColumnNameMap | None = None,
122
129
  ) -> None:
123
130
  """
@@ -128,6 +135,7 @@ class ColumnNameMap:
128
135
  The key is the original Spark column name, and the value is the metadata.
129
136
  example: Dict('age', {'foo': 'bar'})
130
137
  column_qualifiers: Optional qualifiers for the columns, used to handle table aliases or DataFrame aliases.
138
+ hidden_columns: Optional set of HiddenColumn objects.
131
139
  parent_column_name_map: parent ColumnNameMap
132
140
  """
133
141
  self.columns: list[ColumnNames] = []
@@ -136,6 +144,7 @@ class ColumnNameMap:
136
144
  self.snowpark_to_col = defaultdict(list)
137
145
  self.is_case_sensitive = is_case_sensitive
138
146
  self.column_metadata = column_metadata
147
+ self.hidden_columns = hidden_columns
139
148
 
140
149
  # Rename chain dictionary to track column renaming history
141
150
  self.rename_chains: dict[str, str] = {} # old_name -> new_name mapping
@@ -152,10 +161,27 @@ class ColumnNameMap:
152
161
  )
153
162
 
154
163
  for i in range(len(spark_column_names)):
164
+ # Extract catalog/database info from fully qualified spark column names
165
+ spark_name = spark_column_names[i]
166
+ catalog_info = None
167
+ database_info = None
168
+
169
+ # Parse fully qualified names to extract catalog.database.table.column format
170
+ name_parts = split_fully_qualified_spark_name(spark_name)
171
+ if len(name_parts) >= 4:
172
+ # Format: catalog.database.table.column[.field...]
173
+ # Only extract if this looks like a valid SQL table reference
174
+ # Catalog.database.column (3 parts) is invalid - missing table
175
+ # Only catalog.database.table.column (4+ parts) is potentially valid
176
+ catalog_info = name_parts[0]
177
+ database_info = name_parts[1]
178
+
155
179
  c = ColumnNames(
156
- spark_name=spark_column_names[i],
180
+ spark_name=spark_name,
157
181
  snowpark_name=snowpark_column_names[i],
158
182
  qualifiers=column_qualifiers[i] if column_qualifiers else [],
183
+ catalog_info=catalog_info,
184
+ database_info=database_info,
159
185
  )
160
186
  self.columns.append(c)
161
187
 
@@ -312,6 +338,8 @@ class ColumnNameMap:
312
338
  *,
313
339
  allow_non_exists: bool = False,
314
340
  return_first: bool = False,
341
+ is_qualified: bool = False,
342
+ source_qualifiers: list[str] | None = None,
315
343
  ) -> str | None:
316
344
  assert isinstance(spark_column_name, str)
317
345
  resolved_name = (
@@ -319,9 +347,37 @@ class ColumnNameMap:
319
347
  if self.rename_chains
320
348
  else spark_column_name
321
349
  )
322
- snowpark_names = self.get_snowpark_column_names_from_spark_column_names(
323
- [resolved_name], return_first
324
- )
350
+
351
+ # We need to check hidden columns first. We want to avoid the code path
352
+ # within get_snowpark_column_names_from_spark_column_names that checks the parent ColumnNameMap.
353
+ # This is because that will return the name of the using column that's been dropped from the result
354
+ # dataframe. We want to fetch and resolve the hidden column to its visible using column name instead.
355
+ # Even if this is an unqualified reference or one to the visible column, it will resolve correctly to
356
+ # the visible name anyway.
357
+ snowpark_names = []
358
+ # Only check hidden columns for qualified references with source qualifiers
359
+ if is_qualified and source_qualifiers is not None and self.hidden_columns:
360
+ column_name = spark_column_name
361
+
362
+ # Check each hidden column for column name AND qualifier match
363
+ for hidden_col in self.hidden_columns:
364
+ if (
365
+ hidden_col.spark_name == column_name
366
+ and hidden_col.qualifiers == source_qualifiers
367
+ ):
368
+ if not global_config.spark_sql_caseSensitive:
369
+ if hidden_col.spark_name.upper() == column_name.upper() and [
370
+ q.upper() for q in hidden_col.qualifiers
371
+ ] == [q.upper() for q in source_qualifiers]:
372
+ snowpark_names.append(hidden_col.visible_snowpark_name)
373
+ else:
374
+ snowpark_names.append(hidden_col.visible_snowpark_name)
375
+
376
+ # If not found in hidden columns, proceed with normal lookup
377
+ if not snowpark_names:
378
+ snowpark_names = self.get_snowpark_column_names_from_spark_column_names(
379
+ [resolved_name], return_first
380
+ )
325
381
 
326
382
  snowpark_names_len = len(snowpark_names)
327
383
  if snowpark_names_len > 1:
@@ -408,6 +464,27 @@ class ColumnNameMap:
408
464
  snowpark_columns.append(c.snowpark_name)
409
465
  qualifiers.append(c.qualifiers)
410
466
 
467
+ # Note: The following code is commented out because there is a bug with handling duplicate columns in
468
+ # qualified select *'s. This needs to be revisited once a solution for that is found.
469
+ # TODO: https://snowflakecomputing.atlassian.net/browse/SNOW-2265240
470
+
471
+ # # Handles fetching/resolving the hidden columns if they also match the qualifiers
472
+ # # This method is only ever called for qualified references, so we need to check hidden columns as well.
473
+ # if self.hidden_columns:
474
+ # for hidden_col in self.hidden_columns:
475
+ # col_qualifiers = (
476
+ # [q.upper() for q in hidden_col.qualifiers]
477
+ # if not self.is_case_sensitive()
478
+ # else hidden_col.qualifiers
479
+ # )
480
+ # if len(col_qualifiers) < len(qualifiers_input):
481
+ # continue
482
+ # if col_qualifiers[-len(qualifiers_input) :] == qualifiers_input:
483
+ # # This hidden column matches! Add it to the results
484
+ # spark_columns.append(hidden_col.spark_name)
485
+ # snowpark_columns.append(hidden_col.visible_snowpark_name)
486
+ # qualifiers.append(hidden_col.qualifiers)
487
+
411
488
  return spark_columns, snowpark_columns, qualifiers
412
489
 
413
490
  def get_snowpark_columns(self) -> list[str]:
@@ -539,6 +616,35 @@ class ColumnNameMap:
539
616
  else:
540
617
  return spark_name.upper()
541
618
 
619
+ def is_hidden_column_reference(
620
+ self, spark_column_name: str, source_qualifiers: list[str] | None = None
621
+ ) -> bool:
622
+ """
623
+ Check if a column reference would be resolved through hidden columns.
624
+ """
625
+ if not self.hidden_columns or source_qualifiers is None:
626
+ return False
627
+
628
+ # For qualified references with source_qualifiers
629
+ column_name = (
630
+ spark_column_name # When has_plan_id=True, this is just the column name
631
+ )
632
+
633
+ for hidden_col in self.hidden_columns:
634
+ if (
635
+ hidden_col.spark_name == column_name
636
+ and hidden_col.qualifiers == source_qualifiers
637
+ ):
638
+ if not global_config.spark_sql_caseSensitive:
639
+ if hidden_col.spark_name.upper() == column_name.upper() and [
640
+ q.upper() for q in hidden_col.qualifiers
641
+ ] == [q.upper() for q in source_qualifiers]:
642
+ return True
643
+ else:
644
+ return True
645
+
646
+ return False
647
+
542
648
 
543
649
  class JoinColumnNameMap(ColumnNameMap):
544
650
  def __init__(
@@ -548,6 +654,9 @@ class JoinColumnNameMap(ColumnNameMap):
548
654
  ) -> None:
549
655
  self.left_column_mapping: ColumnNameMap = left_colmap
550
656
  self.right_column_mapping: ColumnNameMap = right_colmap
657
+ # Ensure attributes expected by base-class helpers exist to avoid AttributeError
658
+ # when generic code paths (e.g., hidden column checks) touch them.
659
+ self.hidden_columns: set[HiddenColumn] | None = None
551
660
 
552
661
  def get_snowpark_column_name_from_spark_column_name(
553
662
  self,
@@ -555,6 +664,9 @@ class JoinColumnNameMap(ColumnNameMap):
555
664
  *,
556
665
  allow_non_exists: bool = False,
557
666
  return_first: bool = False,
667
+ # JoinColumnNameMap will never be called with using columns, so these parameters are not used.
668
+ is_qualified: bool = False,
669
+ source_qualifiers: list[str] | None = None,
558
670
  ) -> str | None:
559
671
  snowpark_column_name_in_left = (
560
672
  self.left_column_mapping.get_snowpark_column_name_from_spark_column_name(
@@ -19,6 +19,7 @@ from snowflake.snowpark._internal.analyzer.analyzer_utils import (
19
19
  quote_name_without_upper_casing,
20
20
  )
21
21
  from snowflake.snowpark.exceptions import SnowparkSQLException
22
+ from snowflake.snowpark.types import TimestampTimeZone, TimestampType
22
23
  from snowflake.snowpark_connect.utils.concurrent import SynchronizedDict
23
24
  from snowflake.snowpark_connect.utils.context import get_session_id
24
25
  from snowflake.snowpark_connect.utils.session import get_or_create_snowpark_session
@@ -593,3 +594,15 @@ def parse_imports(session: snowpark.Session, imports: str | None) -> None:
593
594
 
594
595
  for udf_import in imports.strip("[] ").split(","):
595
596
  session.add_import(udf_import)
597
+
598
+
599
+ def get_timestamp_type():
600
+ match global_config["spark.sql.timestampType"]:
601
+ case "TIMESTAMP_LTZ":
602
+ timestamp_type = TimestampType(TimestampTimeZone.LTZ)
603
+ case "TIMESTAMP_NTZ":
604
+ timestamp_type = TimestampType(TimestampTimeZone.NTZ)
605
+ case _:
606
+ # shouldn't happen since `spark.sql.timestampType` is always defined, and `spark.conf.unset` sets it to default (TIMESTAMP_LTZ)
607
+ timestamp_type = TimestampType(TimestampTimeZone.LTZ)
608
+ return timestamp_type
@@ -13,35 +13,6 @@ STRUCTURED_TYPES_ENABLED = True
13
13
  # UDF evaluation types
14
14
  MAP_IN_ARROW_EVAL_TYPE = 207 # eval_type for mapInArrow operations
15
15
 
16
- SPARK_TZ_ABBREVIATIONS_OVERRIDES = {
17
- "ACT": "Australia/Darwin",
18
- "AET": "Australia/Sydney",
19
- "AGT": "America/Argentina/Buenos_Aires",
20
- "ART": "Africa/Cairo",
21
- "AST": "America/Anchorage",
22
- "BET": "America/Sao_Paulo",
23
- "BST": "Asia/Dhaka",
24
- "CAT": "Africa/Harare",
25
- "CNT": "America/St_Johns",
26
- "CST": "America/Chicago",
27
- "CTT": "Asia/Shanghai",
28
- "EAT": "Africa/Addis_Ababa",
29
- "ECT": "Europe/Paris",
30
- "IET": "America/Indiana/Indianapolis",
31
- "IST": "Asia/Kolkata",
32
- "JST": "Asia/Tokyo",
33
- "MIT": "Pacific/Apia",
34
- "NET": "Asia/Yerevan",
35
- "NST": "Pacific/Auckland",
36
- "PLT": "Asia/Karachi",
37
- "PNT": "America/Phoenix",
38
- "PRT": "America/Puerto_Rico",
39
- "PST": "America/Los_Angeles",
40
- "SST": "Pacific/Guadalcanal",
41
- "VST": "Asia/Ho_Chi_Minh",
42
- }
43
-
44
-
45
16
  COLUMN_METADATA_COLLISION_KEY = "{expr_id}_{key}"
46
17
 
47
18
  DUPLICATE_KEY_FOUND_ERROR_TEMPLATE = "Duplicate key found: {key}. You can set spark.sql.mapKeyDedupPolicy to LAST_WIN to deduplicate map keys with last wins policy."
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING, Callable
8
8
 
9
9
  from snowflake import snowpark
10
10
  from snowflake.snowpark.types import StructField, StructType
11
+ from snowflake.snowpark_connect.hidden_column import HiddenColumn
11
12
 
12
13
  if TYPE_CHECKING:
13
14
  from snowflake.snowpark_connect.column_name_handler import ColumnNameMap
@@ -57,6 +58,7 @@ class DataFrameContainer:
57
58
  column_metadata: dict | None = None,
58
59
  column_qualifiers: list[list[str]] | None = None,
59
60
  parent_column_name_map: ColumnNameMap | None = None,
61
+ hidden_columns: set[HiddenColumn] | None = None,
60
62
  table_name: str | None = None,
61
63
  alias: str | None = None,
62
64
  cached_schema_getter: Callable[[], StructType] | None = None,
@@ -72,6 +74,7 @@ class DataFrameContainer:
72
74
  column_metadata: Optional metadata dictionary
73
75
  column_qualifiers: Optional column qualifiers
74
76
  parent_column_name_map: Optional parent column name map
77
+ hidden_columns: Optional list of hidden column names
75
78
  table_name: Optional table name
76
79
  alias: Optional alias
77
80
  cached_schema_getter: Optional function to get cached schema
@@ -93,6 +96,7 @@ class DataFrameContainer:
93
96
  column_metadata,
94
97
  column_qualifiers,
95
98
  parent_column_name_map,
99
+ hidden_columns,
96
100
  )
97
101
 
98
102
  # Determine the schema getter to use
@@ -206,6 +210,7 @@ class DataFrameContainer:
206
210
  column_metadata: dict | None = None,
207
211
  column_qualifiers: list[list[str]] | None = None,
208
212
  parent_column_name_map: ColumnNameMap | None = None,
213
+ hidden_columns: set[HiddenColumn] | None = None,
209
214
  ) -> ColumnNameMap:
210
215
  """Create a ColumnNameMap with the provided configuration."""
211
216
  from snowflake.snowpark_connect.column_name_handler import ColumnNameMap
@@ -216,6 +221,7 @@ class DataFrameContainer:
216
221
  column_metadata=column_metadata,
217
222
  column_qualifiers=column_qualifiers,
218
223
  parent_column_name_map=parent_column_name_map,
224
+ hidden_columns=hidden_columns,
219
225
  )
220
226
 
221
227
  @staticmethod
@@ -1,11 +1,15 @@
1
1
  #
2
2
  # Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
3
3
  #
4
+ import re
5
+ import uuid
4
6
  from collections import Counter
5
7
 
6
8
  import pyspark.sql.connect.proto.base_pb2 as proto_base
7
9
  import pyspark.sql.connect.proto.relations_pb2 as relation_proto
8
10
 
11
+ from snowflake.snowpark import DataFrame, Session
12
+ from snowflake.snowpark.exceptions import SnowparkSQLException
9
13
  from snowflake.snowpark_connect.column_name_handler import ColumnNames
10
14
  from snowflake.snowpark_connect.config import global_config, sessions_config
11
15
  from snowflake.snowpark_connect.constants import SERVER_SIDE_SESSION_ID
@@ -25,6 +29,10 @@ from snowflake.snowpark_connect.utils.telemetry import (
25
29
  SnowparkConnectNotImplementedError,
26
30
  )
27
31
 
32
+ _INTERNAL_VIEW_PREFIX = "__SC_RENAMED_V_"
33
+
34
+ _CREATE_VIEW_PATTERN = re.compile(r"create\s+or\s+replace\s+view", re.IGNORECASE)
35
+
28
36
 
29
37
  def _create_column_rename_map(
30
38
  columns: list[ColumnNames], rename_duplicated: bool
@@ -126,7 +134,14 @@ def map_execution_command(
126
134
  ]
127
135
 
128
136
  if req.replace:
129
- input_df.create_or_replace_temp_view(view_name)
137
+ try:
138
+ input_df.create_or_replace_temp_view(view_name)
139
+ except SnowparkSQLException as exc:
140
+ if _is_error_caused_by_view_referencing_itself(exc):
141
+ # This error is caused by statement with self reference like `CREATE VIEW A AS SELECT X FROM A`.
142
+ _create_chained_view(input_df, view_name)
143
+ else:
144
+ raise
130
145
  else:
131
146
  input_df.create_temp_view(view_name)
132
147
  case "write_stream_operation_start":
@@ -192,3 +207,43 @@ def map_execution_command(
192
207
  raise SnowparkConnectNotImplementedError(
193
208
  f"Command type {other} not implemented"
194
209
  )
210
+
211
+
212
+ def _generate_random_builtin_view_name() -> str:
213
+ return _INTERNAL_VIEW_PREFIX + str(uuid.uuid4()).replace("-", "")
214
+
215
+
216
+ def _is_error_caused_by_view_referencing_itself(exc: Exception) -> bool:
217
+ return "view definition refers to view being defined" in str(exc).lower()
218
+
219
+
220
+ def _create_chained_view(input_df: DataFrame, view_name: str) -> None:
221
+ """
222
+ In order to create a view, which references itself, Spark would here take the previous
223
+ definition of A and paste it in place of `FROM A`. Snowflake would fail in such case, so
224
+ as a workaround, we create a chain of internal views instead. This function:
225
+ 1. Renames previous definition of A to some internal name (instead of deleting).
226
+ 2. Adjusts the DDL of a new statement to reference the name of a renmaed internal view, instead of itself.
227
+ """
228
+
229
+ session = Session.get_active_session()
230
+
231
+ view_name = ".".join(view_name)
232
+
233
+ tmp_name = _generate_random_builtin_view_name()
234
+ old_name_replacement = _generate_random_builtin_view_name()
235
+
236
+ input_df.create_or_replace_temp_view(tmp_name)
237
+
238
+ session.sql(f"ALTER VIEW {view_name} RENAME TO {old_name_replacement}").collect()
239
+
240
+ ddl: str = session.sql(f"SELECT GET_DDL('VIEW', '{tmp_name}')").collect()[0][0]
241
+
242
+ ddl = ddl.replace(view_name, old_name_replacement)
243
+
244
+ # GET_DDL result doesn't contain `TEMPORARY`, it's likely a bug.
245
+ ddl = _CREATE_VIEW_PATTERN.sub("create or replace temp view", ddl)
246
+
247
+ session.sql(ddl).collect()
248
+
249
+ session.sql(f"ALTER VIEW {tmp_name} RENAME TO {view_name}").collect()
@@ -0,0 +1,207 @@
1
+ #
2
+ # Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
3
+ #
4
+ from dataclasses import dataclass
5
+ from typing import Any
6
+
7
+ import pyspark.sql.connect.proto.expressions_pb2 as expressions_pb2
8
+ import pyspark.sql.connect.proto.types_pb2 as types_pb2
9
+
10
+
11
+ @dataclass(frozen=True)
12
+ class DefaultParameter:
13
+ """Represents a single default parameter for a function."""
14
+
15
+ name: str
16
+ value: Any
17
+
18
+
19
+ @dataclass(frozen=True)
20
+ class FunctionDefaults:
21
+ """Represents default parameter configuration for a function."""
22
+
23
+ total_args: int
24
+ defaults: list[DefaultParameter]
25
+
26
+
27
+ # FUNCTION_DEFAULTS dictionary to hold operation name with default values.
28
+ # This is required as non pyspark clients such as scala or sql won't send all the parameters.
29
+ # We use this dict to inject the missing parameters before processing the unresolved function.
30
+ FUNCTION_DEFAULTS: dict[str, FunctionDefaults] = {
31
+ "aes_decrypt": FunctionDefaults(
32
+ total_args=5,
33
+ defaults=[
34
+ DefaultParameter("mode", "GCM"), # Spark SQL default: GCM
35
+ DefaultParameter("padding", "NONE"), # Spark SQL default: NONE for GCM mode
36
+ DefaultParameter("aad", ""), # Spark SQL default: empty string
37
+ ],
38
+ ),
39
+ "aes_encrypt": FunctionDefaults(
40
+ total_args=6,
41
+ defaults=[
42
+ DefaultParameter("mode", "GCM"), # Spark SQL default: GCM
43
+ DefaultParameter("padding", "NONE"), # Spark SQL default: NONE for GCM mode
44
+ DefaultParameter(
45
+ "iv", ""
46
+ ), # Spark SQL default: empty string (random generated if not provided)
47
+ DefaultParameter("aad", ""), # Spark SQL default: empty string
48
+ ],
49
+ ),
50
+ "approx_percentile": FunctionDefaults(
51
+ total_args=3,
52
+ defaults=[DefaultParameter("accuracy", 10000)],
53
+ ),
54
+ "bround": FunctionDefaults(
55
+ total_args=2,
56
+ defaults=[DefaultParameter("scale", 0)],
57
+ ),
58
+ "first": FunctionDefaults(
59
+ total_args=2,
60
+ defaults=[DefaultParameter("ignorenulls", False)],
61
+ ),
62
+ "lag": FunctionDefaults(
63
+ total_args=2,
64
+ defaults=[
65
+ DefaultParameter("offset", 1),
66
+ ],
67
+ ),
68
+ "last": FunctionDefaults(
69
+ total_args=2,
70
+ defaults=[DefaultParameter("ignorenulls", False)],
71
+ ),
72
+ "lead": FunctionDefaults(
73
+ total_args=3,
74
+ defaults=[DefaultParameter("offset", 1), DefaultParameter("default", None)],
75
+ ),
76
+ "locate": FunctionDefaults(
77
+ total_args=3,
78
+ defaults=[DefaultParameter("pos", 1)],
79
+ ),
80
+ "months_between": FunctionDefaults(
81
+ total_args=3,
82
+ defaults=[DefaultParameter("roundOff", True)],
83
+ ),
84
+ "nth_value": FunctionDefaults(
85
+ total_args=3,
86
+ defaults=[DefaultParameter("ignoreNulls", False)],
87
+ ),
88
+ "overlay": FunctionDefaults(
89
+ total_args=4,
90
+ defaults=[DefaultParameter("len", -1)],
91
+ ),
92
+ "percentile": FunctionDefaults(
93
+ total_args=3,
94
+ defaults=[DefaultParameter("frequency", 1)],
95
+ ),
96
+ "percentile_approx": FunctionDefaults(
97
+ total_args=3,
98
+ defaults=[DefaultParameter("accuracy", 10000)],
99
+ ),
100
+ "round": FunctionDefaults(
101
+ total_args=2,
102
+ defaults=[DefaultParameter("scale", 0)],
103
+ ),
104
+ "sentences": FunctionDefaults(
105
+ total_args=3,
106
+ defaults=[
107
+ DefaultParameter("language", ""),
108
+ DefaultParameter("country", ""),
109
+ ],
110
+ ),
111
+ "sort_array": FunctionDefaults(
112
+ total_args=2,
113
+ defaults=[DefaultParameter("asc", True)],
114
+ ),
115
+ "split": FunctionDefaults(
116
+ total_args=3,
117
+ defaults=[DefaultParameter("limit", -1)],
118
+ ),
119
+ "str_to_map": FunctionDefaults(
120
+ total_args=3,
121
+ defaults=[
122
+ DefaultParameter(
123
+ "pairDelim", ","
124
+ ), # Spark SQL default: comma for splitting pairs
125
+ DefaultParameter(
126
+ "keyValueDelim", ":"
127
+ ), # Spark SQL default: colon for splitting key/value
128
+ ],
129
+ ),
130
+ "try_aes_decrypt": FunctionDefaults(
131
+ total_args=5,
132
+ defaults=[
133
+ DefaultParameter("mode", "GCM"), # Spark SQL default: GCM
134
+ DefaultParameter("padding", "NONE"), # Spark SQL default: NONE for GCM mode
135
+ DefaultParameter("aad", ""), # Spark SQL default: empty string
136
+ ],
137
+ ),
138
+ }
139
+
140
+
141
+ def _create_literal_expression(value: Any) -> expressions_pb2.Expression:
142
+ """Create a literal expression for the given value."""
143
+ expr = expressions_pb2.Expression()
144
+ if isinstance(value, bool):
145
+ expr.literal.boolean = value
146
+ elif isinstance(value, int):
147
+ expr.literal.integer = value
148
+ elif isinstance(value, str):
149
+ expr.literal.string = value
150
+ elif isinstance(value, float):
151
+ expr.literal.double = value
152
+ elif value is None:
153
+ null_type = types_pb2.DataType()
154
+ null_type.null.SetInParent()
155
+ expr.literal.null.CopyFrom(null_type)
156
+ else:
157
+ raise ValueError(f"Unsupported literal type: {value}")
158
+
159
+ return expr
160
+
161
+
162
+ def inject_function_defaults(
163
+ unresolved_function: expressions_pb2.Expression.UnresolvedFunction,
164
+ ) -> bool:
165
+ """
166
+ Inject missing default parameters into an UnresolvedFunction protobuf.
167
+
168
+ Args:
169
+ unresolved_function: The protobuf UnresolvedFunction to modify
170
+
171
+ Returns:
172
+ bool: True if any defaults were injected, False otherwise
173
+ """
174
+ function_name = unresolved_function.function_name.lower()
175
+
176
+ if function_name not in FUNCTION_DEFAULTS:
177
+ return False
178
+
179
+ func_config = FUNCTION_DEFAULTS[function_name]
180
+ current_arg_count = len(unresolved_function.arguments)
181
+ total_args = func_config.total_args
182
+ defaults = func_config.defaults
183
+
184
+ if not defaults or current_arg_count >= total_args:
185
+ return False
186
+
187
+ # Calculate how many defaults to append
188
+ missing_arg_count = total_args - current_arg_count
189
+
190
+ # Check if any required params are missing.
191
+ if missing_arg_count > len(defaults):
192
+ raise ValueError(
193
+ f"Function '{function_name}' is missing required arguments. "
194
+ f"Expected {total_args} args, got {current_arg_count}, "
195
+ f"but only {len(defaults)} defaults are defined."
196
+ )
197
+
198
+ defaults_to_append = defaults[-missing_arg_count:]
199
+ injected = False
200
+
201
+ # Simply append the needed default values
202
+ for default_param in defaults_to_append:
203
+ default_expr = _create_literal_expression(default_param.value)
204
+ unresolved_function.arguments.append(default_expr)
205
+ injected = True
206
+
207
+ return injected
@@ -68,19 +68,35 @@ def get_literal_field_and_name(literal: expressions_proto.Expression.Literal):
68
68
  tz_dt = tz_dt.astimezone(config_tz)
69
69
  lit_dt = lit_dt.astimezone(local_tz)
70
70
 
71
- return lit_dt, f"{t.upper()} '{tz_dt.strftime('%Y-%m-%d %H:%M:%S')}'"
71
+ def _format_timestamp(dt) -> str:
72
+ without_micros = f"{dt.year:04d}-{dt.month:02d}-{dt.day:02d} {dt.hour:02d}:{dt.minute:02d}:{dt.second:02d}"
73
+ if dt.microsecond == 0:
74
+ return without_micros
75
+ else:
76
+ base_format = f"{without_micros}.{dt.microsecond:06d}"
77
+ return base_format.rstrip("0").rstrip(".")
78
+
79
+ return lit_dt, f"{t.upper()} '{_format_timestamp(tz_dt)}'"
72
80
  case "day_time_interval":
73
81
  # TODO(SNOW-1920942): Snowflake SQL is missing an "interval" type.
74
82
  timedelta = datetime.timedelta(
75
83
  seconds=literal.day_time_interval / 1_000_000
76
84
  )
77
- str_value = f"INTERVAL '{literal.day_time_interval / 1_000_000} SECONDS'"
85
+ interval_seconds = f"{(literal.day_time_interval / 1_000_000):.6f}".rstrip(
86
+ "0"
87
+ ).rstrip(".")
88
+ str_value = f"INTERVAL '{interval_seconds}' SECOND"
78
89
  return timedelta, str_value
79
90
  case "binary":
80
91
  return literal.binary, str(literal.binary)
81
92
  case "decimal":
82
93
  # literal.decimal.precision & scale are ignored, as decimal.Decimal doesn't accept them
83
94
  return decimal.Decimal(literal.decimal.value), literal.decimal.value
95
+ case "array":
96
+ array_values, element_names = zip(
97
+ *(get_literal_field_and_name(e) for e in literal.array.elements)
98
+ )
99
+ return array_values, f"ARRAY({', '.join(element_names)})"
84
100
  case "null" | None:
85
101
  return None, "NULL"
86
102
  case other: