snowpark-connect 0.24.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 (474) 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/literal.py +13 -2
  7. snowflake/snowpark_connect/expression/map_cast.py +5 -8
  8. snowflake/snowpark_connect/expression/map_sql_expression.py +23 -1
  9. snowflake/snowpark_connect/expression/map_udf.py +26 -8
  10. snowflake/snowpark_connect/expression/map_unresolved_attribute.py +199 -15
  11. snowflake/snowpark_connect/expression/map_unresolved_extract_value.py +44 -16
  12. snowflake/snowpark_connect/expression/map_unresolved_function.py +825 -353
  13. snowflake/snowpark_connect/expression/map_unresolved_star.py +3 -2
  14. snowflake/snowpark_connect/hidden_column.py +39 -0
  15. snowflake/snowpark_connect/includes/jars/hadoop-client-api-trimmed-3.3.4.jar +0 -0
  16. snowflake/snowpark_connect/includes/jars/{hadoop-client-api-3.3.4.jar → spark-connect-client-jvm_2.12-3.5.6.jar} +0 -0
  17. snowflake/snowpark_connect/relation/map_column_ops.py +17 -4
  18. snowflake/snowpark_connect/relation/map_extension.py +52 -11
  19. snowflake/snowpark_connect/relation/map_join.py +258 -62
  20. snowflake/snowpark_connect/relation/map_sql.py +88 -11
  21. snowflake/snowpark_connect/relation/map_udtf.py +4 -2
  22. snowflake/snowpark_connect/relation/read/map_read.py +3 -3
  23. snowflake/snowpark_connect/relation/read/map_read_jdbc.py +1 -1
  24. snowflake/snowpark_connect/relation/read/map_read_json.py +8 -1
  25. snowflake/snowpark_connect/relation/read/map_read_table.py +1 -9
  26. snowflake/snowpark_connect/relation/read/reader_config.py +3 -1
  27. snowflake/snowpark_connect/relation/write/map_write.py +62 -53
  28. snowflake/snowpark_connect/resources_initializer.py +29 -1
  29. snowflake/snowpark_connect/server.py +18 -3
  30. snowflake/snowpark_connect/type_mapping.py +29 -25
  31. snowflake/snowpark_connect/typed_column.py +14 -0
  32. snowflake/snowpark_connect/utils/artifacts.py +23 -0
  33. snowflake/snowpark_connect/utils/context.py +6 -1
  34. snowflake/snowpark_connect/utils/scala_udf_utils.py +588 -0
  35. snowflake/snowpark_connect/utils/telemetry.py +6 -17
  36. snowflake/snowpark_connect/utils/udf_helper.py +2 -0
  37. snowflake/snowpark_connect/utils/udf_utils.py +38 -7
  38. snowflake/snowpark_connect/utils/udtf_utils.py +17 -3
  39. snowflake/snowpark_connect/version.py +1 -1
  40. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/METADATA +1 -1
  41. snowpark_connect-0.25.0.dist-info/RECORD +477 -0
  42. snowflake/snowpark_connect/includes/jars/scala-compiler-2.12.18.jar +0 -0
  43. snowflake/snowpark_connect/includes/jars/spark-kubernetes_2.12-3.5.6.jar +0 -0
  44. snowflake/snowpark_connect/includes/jars/spark-mllib_2.12-3.5.6.jar +0 -0
  45. snowflake/snowpark_connect/includes/jars/spark-streaming_2.12-3.5.6.jar +0 -0
  46. snowflake/snowpark_connect/includes/python/pyspark/errors/tests/__init__.py +0 -16
  47. snowflake/snowpark_connect/includes/python/pyspark/errors/tests/test_errors.py +0 -60
  48. snowflake/snowpark_connect/includes/python/pyspark/ml/deepspeed/tests/test_deepspeed_distributor.py +0 -306
  49. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/__init__.py +0 -16
  50. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_classification.py +0 -53
  51. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_evaluation.py +0 -50
  52. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_feature.py +0 -43
  53. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_function.py +0 -114
  54. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_pipeline.py +0 -47
  55. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_summarizer.py +0 -43
  56. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_connect_tuning.py +0 -46
  57. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_classification.py +0 -238
  58. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_evaluation.py +0 -194
  59. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_feature.py +0 -156
  60. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_pipeline.py +0 -184
  61. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_summarizer.py +0 -78
  62. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_legacy_mode_tuning.py +0 -292
  63. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_parity_torch_data_loader.py +0 -50
  64. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/connect/test_parity_torch_distributor.py +0 -152
  65. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_algorithms.py +0 -456
  66. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_base.py +0 -96
  67. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_dl_util.py +0 -186
  68. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_evaluation.py +0 -77
  69. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_feature.py +0 -401
  70. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_functions.py +0 -528
  71. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_image.py +0 -82
  72. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_linalg.py +0 -409
  73. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_model_cache.py +0 -55
  74. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_param.py +0 -441
  75. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_persistence.py +0 -546
  76. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_pipeline.py +0 -71
  77. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_stat.py +0 -52
  78. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_training_summary.py +0 -494
  79. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_util.py +0 -85
  80. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/test_wrapper.py +0 -138
  81. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/__init__.py +0 -16
  82. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_basic.py +0 -151
  83. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_nested.py +0 -97
  84. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_cv_io_pipeline.py +0 -143
  85. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tuning.py +0 -551
  86. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_basic.py +0 -137
  87. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_nested.py +0 -96
  88. snowflake/snowpark_connect/includes/python/pyspark/ml/tests/tuning/test_tvs_io_pipeline.py +0 -142
  89. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/__init__.py +0 -16
  90. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_data_loader.py +0 -137
  91. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_distributor.py +0 -561
  92. snowflake/snowpark_connect/includes/python/pyspark/ml/torch/tests/test_log_communication.py +0 -172
  93. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/__init__.py +0 -16
  94. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_algorithms.py +0 -353
  95. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_feature.py +0 -192
  96. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_linalg.py +0 -680
  97. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_stat.py +0 -206
  98. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_streaming_algorithms.py +0 -471
  99. snowflake/snowpark_connect/includes/python/pyspark/mllib/tests/test_util.py +0 -108
  100. snowflake/snowpark_connect/includes/python/pyspark/pandas/spark/__init__.py +0 -16
  101. snowflake/snowpark_connect/includes/python/pyspark/pandas/spark/accessors.py +0 -1281
  102. snowflake/snowpark_connect/includes/python/pyspark/pandas/spark/functions.py +0 -203
  103. snowflake/snowpark_connect/includes/python/pyspark/pandas/spark/utils.py +0 -202
  104. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/__init__.py +0 -16
  105. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/__init__.py +0 -16
  106. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_any_all.py +0 -177
  107. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_apply_func.py +0 -575
  108. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_binary_ops.py +0 -235
  109. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_combine.py +0 -653
  110. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_compute.py +0 -463
  111. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_corrwith.py +0 -86
  112. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_cov.py +0 -151
  113. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_cumulative.py +0 -139
  114. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_describe.py +0 -458
  115. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_eval.py +0 -86
  116. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_melt.py +0 -202
  117. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_missing_data.py +0 -520
  118. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/computation/test_pivot.py +0 -361
  119. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/__init__.py +0 -16
  120. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/__init__.py +0 -16
  121. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_any_all.py +0 -40
  122. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_apply_func.py +0 -42
  123. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_binary_ops.py +0 -40
  124. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_combine.py +0 -37
  125. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_compute.py +0 -60
  126. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_corrwith.py +0 -40
  127. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_cov.py +0 -40
  128. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_cumulative.py +0 -90
  129. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_describe.py +0 -40
  130. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_eval.py +0 -40
  131. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_melt.py +0 -40
  132. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_missing_data.py +0 -42
  133. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/computation/test_parity_pivot.py +0 -37
  134. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/__init__.py +0 -16
  135. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_base.py +0 -36
  136. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_binary_ops.py +0 -42
  137. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_boolean_ops.py +0 -47
  138. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_categorical_ops.py +0 -55
  139. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_complex_ops.py +0 -40
  140. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_date_ops.py +0 -47
  141. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_datetime_ops.py +0 -47
  142. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_null_ops.py +0 -42
  143. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_arithmetic.py +0 -43
  144. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_ops.py +0 -47
  145. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_num_reverse.py +0 -43
  146. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_string_ops.py +0 -47
  147. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_timedelta_ops.py +0 -47
  148. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/test_parity_udt_ops.py +0 -40
  149. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/data_type_ops/testing_utils.py +0 -226
  150. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/__init__.py +0 -16
  151. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_align.py +0 -39
  152. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_basic_slow.py +0 -55
  153. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_cov_corrwith.py +0 -39
  154. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_dot_frame.py +0 -39
  155. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_dot_series.py +0 -39
  156. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_index.py +0 -39
  157. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_series.py +0 -39
  158. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_setitem_frame.py +0 -43
  159. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/diff_frames_ops/test_parity_setitem_series.py +0 -43
  160. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/__init__.py +0 -16
  161. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_attrs.py +0 -40
  162. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_constructor.py +0 -39
  163. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_conversion.py +0 -42
  164. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_reindexing.py +0 -42
  165. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_reshaping.py +0 -37
  166. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_spark.py +0 -40
  167. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_take.py +0 -42
  168. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_time_series.py +0 -48
  169. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/frame/test_parity_truncate.py +0 -40
  170. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/__init__.py +0 -16
  171. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_aggregate.py +0 -40
  172. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_apply_func.py +0 -41
  173. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_cumulative.py +0 -67
  174. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_describe.py +0 -40
  175. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_groupby.py +0 -55
  176. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_head_tail.py +0 -40
  177. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_index.py +0 -38
  178. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_missing_data.py +0 -55
  179. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_split_apply.py +0 -39
  180. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/groupby/test_parity_stat.py +0 -38
  181. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/__init__.py +0 -16
  182. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_align.py +0 -40
  183. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_base.py +0 -50
  184. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_category.py +0 -73
  185. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_datetime.py +0 -39
  186. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_indexing.py +0 -40
  187. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_reindex.py +0 -40
  188. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_rename.py +0 -40
  189. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_reset_index.py +0 -48
  190. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/indexes/test_parity_timedelta.py +0 -39
  191. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/io/__init__.py +0 -16
  192. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/io/test_parity_io.py +0 -40
  193. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/__init__.py +0 -16
  194. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot.py +0 -45
  195. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot_matplotlib.py +0 -45
  196. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_frame_plot_plotly.py +0 -49
  197. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot.py +0 -37
  198. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot_matplotlib.py +0 -53
  199. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/plot/test_parity_series_plot_plotly.py +0 -45
  200. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/__init__.py +0 -16
  201. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_all_any.py +0 -38
  202. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_arg_ops.py +0 -37
  203. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_as_of.py +0 -37
  204. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_as_type.py +0 -38
  205. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_compute.py +0 -37
  206. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_conversion.py +0 -40
  207. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_cumulative.py +0 -40
  208. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_index.py +0 -38
  209. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_missing_data.py +0 -40
  210. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_series.py +0 -37
  211. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_sort.py +0 -38
  212. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/series/test_parity_stat.py +0 -38
  213. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_categorical.py +0 -66
  214. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_config.py +0 -37
  215. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_csv.py +0 -37
  216. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_dataframe_conversion.py +0 -42
  217. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_dataframe_spark_io.py +0 -39
  218. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_default_index.py +0 -49
  219. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ewm.py +0 -37
  220. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_expanding.py +0 -39
  221. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_extension.py +0 -49
  222. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_frame_spark.py +0 -53
  223. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_generic_functions.py +0 -43
  224. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_indexing.py +0 -49
  225. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_indexops_spark.py +0 -39
  226. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_internal.py +0 -41
  227. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_namespace.py +0 -39
  228. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_numpy_compat.py +0 -60
  229. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames.py +0 -48
  230. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby.py +0 -39
  231. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby_expanding.py +0 -44
  232. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_ops_on_diff_frames_groupby_rolling.py +0 -84
  233. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_repr.py +0 -37
  234. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_resample.py +0 -45
  235. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_reshape.py +0 -39
  236. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_rolling.py +0 -39
  237. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_scalars.py +0 -37
  238. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_conversion.py +0 -39
  239. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_datetime.py +0 -39
  240. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_series_string.py +0 -39
  241. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_spark_functions.py +0 -39
  242. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_sql.py +0 -43
  243. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_stats.py +0 -37
  244. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_typedef.py +0 -36
  245. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_utils.py +0 -37
  246. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/connect/test_parity_window.py +0 -39
  247. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/__init__.py +0 -16
  248. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_base.py +0 -107
  249. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_binary_ops.py +0 -224
  250. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_boolean_ops.py +0 -825
  251. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_categorical_ops.py +0 -562
  252. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_complex_ops.py +0 -368
  253. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_date_ops.py +0 -257
  254. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_datetime_ops.py +0 -260
  255. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_null_ops.py +0 -178
  256. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_arithmetic.py +0 -184
  257. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_ops.py +0 -497
  258. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_num_reverse.py +0 -140
  259. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_string_ops.py +0 -354
  260. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_timedelta_ops.py +0 -219
  261. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/test_udt_ops.py +0 -192
  262. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/data_type_ops/testing_utils.py +0 -228
  263. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/__init__.py +0 -16
  264. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_align.py +0 -118
  265. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_basic_slow.py +0 -198
  266. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_cov_corrwith.py +0 -181
  267. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_dot_frame.py +0 -103
  268. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_dot_series.py +0 -141
  269. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_index.py +0 -109
  270. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_series.py +0 -136
  271. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_setitem_frame.py +0 -125
  272. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/diff_frames_ops/test_setitem_series.py +0 -217
  273. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/__init__.py +0 -16
  274. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_attrs.py +0 -384
  275. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_constructor.py +0 -598
  276. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_conversion.py +0 -73
  277. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_reindexing.py +0 -869
  278. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_reshaping.py +0 -487
  279. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_spark.py +0 -309
  280. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_take.py +0 -156
  281. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_time_series.py +0 -149
  282. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/frame/test_truncate.py +0 -163
  283. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/__init__.py +0 -16
  284. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_aggregate.py +0 -311
  285. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_apply_func.py +0 -524
  286. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_cumulative.py +0 -419
  287. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_describe.py +0 -144
  288. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_groupby.py +0 -979
  289. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_head_tail.py +0 -234
  290. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_index.py +0 -206
  291. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_missing_data.py +0 -421
  292. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_split_apply.py +0 -187
  293. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/groupby/test_stat.py +0 -397
  294. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/__init__.py +0 -16
  295. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_align.py +0 -100
  296. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_base.py +0 -2743
  297. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_category.py +0 -484
  298. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_datetime.py +0 -276
  299. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_indexing.py +0 -432
  300. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_reindex.py +0 -310
  301. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_rename.py +0 -257
  302. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_reset_index.py +0 -160
  303. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/indexes/test_timedelta.py +0 -128
  304. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/io/__init__.py +0 -16
  305. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/io/test_io.py +0 -137
  306. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/__init__.py +0 -16
  307. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot.py +0 -170
  308. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot_matplotlib.py +0 -547
  309. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_frame_plot_plotly.py +0 -285
  310. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot.py +0 -106
  311. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot_matplotlib.py +0 -409
  312. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/plot/test_series_plot_plotly.py +0 -247
  313. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/__init__.py +0 -16
  314. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_all_any.py +0 -105
  315. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_arg_ops.py +0 -197
  316. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_as_of.py +0 -137
  317. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_as_type.py +0 -227
  318. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_compute.py +0 -634
  319. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_conversion.py +0 -88
  320. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_cumulative.py +0 -139
  321. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_index.py +0 -475
  322. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_missing_data.py +0 -265
  323. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_series.py +0 -818
  324. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_sort.py +0 -162
  325. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/series/test_stat.py +0 -780
  326. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_categorical.py +0 -741
  327. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_config.py +0 -160
  328. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_csv.py +0 -453
  329. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_dataframe_conversion.py +0 -281
  330. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_dataframe_spark_io.py +0 -487
  331. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_default_index.py +0 -109
  332. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ewm.py +0 -434
  333. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_expanding.py +0 -253
  334. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_extension.py +0 -152
  335. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_frame_spark.py +0 -162
  336. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_generic_functions.py +0 -234
  337. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_indexing.py +0 -1339
  338. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_indexops_spark.py +0 -82
  339. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_internal.py +0 -124
  340. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_namespace.py +0 -638
  341. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_numpy_compat.py +0 -200
  342. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames.py +0 -1355
  343. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby.py +0 -655
  344. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby_expanding.py +0 -113
  345. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_ops_on_diff_frames_groupby_rolling.py +0 -118
  346. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_repr.py +0 -192
  347. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_resample.py +0 -346
  348. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_reshape.py +0 -495
  349. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_rolling.py +0 -263
  350. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_scalars.py +0 -59
  351. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_conversion.py +0 -85
  352. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_datetime.py +0 -364
  353. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_series_string.py +0 -362
  354. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_spark_functions.py +0 -46
  355. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_sql.py +0 -123
  356. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_stats.py +0 -581
  357. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_typedef.py +0 -447
  358. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_utils.py +0 -301
  359. snowflake/snowpark_connect/includes/python/pyspark/pandas/tests/test_window.py +0 -465
  360. snowflake/snowpark_connect/includes/python/pyspark/resource/tests/__init__.py +0 -16
  361. snowflake/snowpark_connect/includes/python/pyspark/resource/tests/test_resources.py +0 -83
  362. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/__init__.py +0 -16
  363. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/__init__.py +0 -16
  364. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/__init__.py +0 -16
  365. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/test_artifact.py +0 -420
  366. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/client/test_client.py +0 -358
  367. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/__init__.py +0 -16
  368. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_foreach.py +0 -36
  369. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_foreach_batch.py +0 -44
  370. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_listener.py +0 -116
  371. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/streaming/test_parity_streaming.py +0 -35
  372. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_basic.py +0 -3612
  373. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_column.py +0 -1042
  374. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_function.py +0 -2381
  375. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_connect_plan.py +0 -1060
  376. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow.py +0 -163
  377. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow_map.py +0 -38
  378. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_arrow_python_udf.py +0 -48
  379. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_catalog.py +0 -36
  380. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_column.py +0 -55
  381. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_conf.py +0 -36
  382. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_dataframe.py +0 -96
  383. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_datasources.py +0 -44
  384. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_errors.py +0 -36
  385. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_functions.py +0 -59
  386. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_group.py +0 -36
  387. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_cogrouped_map.py +0 -59
  388. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_grouped_map.py +0 -74
  389. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_grouped_map_with_state.py +0 -62
  390. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_map.py +0 -58
  391. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf.py +0 -70
  392. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_grouped_agg.py +0 -50
  393. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_scalar.py +0 -68
  394. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_pandas_udf_window.py +0 -40
  395. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_readwriter.py +0 -46
  396. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_serde.py +0 -44
  397. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_types.py +0 -100
  398. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_udf.py +0 -100
  399. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_parity_udtf.py +0 -163
  400. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_session.py +0 -181
  401. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/connect/test_utils.py +0 -42
  402. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/__init__.py +0 -16
  403. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_cogrouped_map.py +0 -623
  404. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_grouped_map.py +0 -869
  405. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_grouped_map_with_state.py +0 -342
  406. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_map.py +0 -436
  407. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf.py +0 -363
  408. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_grouped_agg.py +0 -592
  409. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_scalar.py +0 -1503
  410. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_typehints.py +0 -392
  411. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_typehints_with_future_annotations.py +0 -375
  412. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/pandas/test_pandas_udf_window.py +0 -411
  413. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/__init__.py +0 -16
  414. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming.py +0 -401
  415. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_foreach.py +0 -295
  416. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_foreach_batch.py +0 -106
  417. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/streaming/test_streaming_listener.py +0 -558
  418. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow.py +0 -1346
  419. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow_map.py +0 -182
  420. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_arrow_python_udf.py +0 -202
  421. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_catalog.py +0 -503
  422. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_column.py +0 -225
  423. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_conf.py +0 -83
  424. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_context.py +0 -201
  425. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_dataframe.py +0 -1931
  426. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_datasources.py +0 -256
  427. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_errors.py +0 -69
  428. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_functions.py +0 -1349
  429. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_group.py +0 -53
  430. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_pandas_sqlmetrics.py +0 -68
  431. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_readwriter.py +0 -283
  432. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_serde.py +0 -155
  433. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_session.py +0 -412
  434. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_types.py +0 -1581
  435. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udf.py +0 -961
  436. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udf_profiler.py +0 -165
  437. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_udtf.py +0 -1456
  438. snowflake/snowpark_connect/includes/python/pyspark/sql/tests/test_utils.py +0 -1686
  439. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/__init__.py +0 -16
  440. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_context.py +0 -184
  441. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_dstream.py +0 -706
  442. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_kinesis.py +0 -118
  443. snowflake/snowpark_connect/includes/python/pyspark/streaming/tests/test_listener.py +0 -160
  444. snowflake/snowpark_connect/includes/python/pyspark/tests/__init__.py +0 -16
  445. snowflake/snowpark_connect/includes/python/pyspark/tests/test_appsubmit.py +0 -306
  446. snowflake/snowpark_connect/includes/python/pyspark/tests/test_broadcast.py +0 -196
  447. snowflake/snowpark_connect/includes/python/pyspark/tests/test_conf.py +0 -44
  448. snowflake/snowpark_connect/includes/python/pyspark/tests/test_context.py +0 -346
  449. snowflake/snowpark_connect/includes/python/pyspark/tests/test_daemon.py +0 -89
  450. snowflake/snowpark_connect/includes/python/pyspark/tests/test_install_spark.py +0 -124
  451. snowflake/snowpark_connect/includes/python/pyspark/tests/test_join.py +0 -69
  452. snowflake/snowpark_connect/includes/python/pyspark/tests/test_memory_profiler.py +0 -167
  453. snowflake/snowpark_connect/includes/python/pyspark/tests/test_pin_thread.py +0 -194
  454. snowflake/snowpark_connect/includes/python/pyspark/tests/test_profiler.py +0 -168
  455. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rdd.py +0 -939
  456. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rddbarrier.py +0 -52
  457. snowflake/snowpark_connect/includes/python/pyspark/tests/test_rddsampler.py +0 -66
  458. snowflake/snowpark_connect/includes/python/pyspark/tests/test_readwrite.py +0 -368
  459. snowflake/snowpark_connect/includes/python/pyspark/tests/test_serializers.py +0 -257
  460. snowflake/snowpark_connect/includes/python/pyspark/tests/test_shuffle.py +0 -267
  461. snowflake/snowpark_connect/includes/python/pyspark/tests/test_stage_sched.py +0 -153
  462. snowflake/snowpark_connect/includes/python/pyspark/tests/test_statcounter.py +0 -130
  463. snowflake/snowpark_connect/includes/python/pyspark/tests/test_taskcontext.py +0 -350
  464. snowflake/snowpark_connect/includes/python/pyspark/tests/test_util.py +0 -97
  465. snowflake/snowpark_connect/includes/python/pyspark/tests/test_worker.py +0 -271
  466. snowpark_connect-0.24.0.dist-info/RECORD +0 -898
  467. {snowpark_connect-0.24.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-connect +0 -0
  468. {snowpark_connect-0.24.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-session +0 -0
  469. {snowpark_connect-0.24.0.data → snowpark_connect-0.25.0.data}/scripts/snowpark-submit +0 -0
  470. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/WHEEL +0 -0
  471. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/LICENSE-binary +0 -0
  472. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/LICENSE.txt +0 -0
  473. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/licenses/NOTICE-binary +0 -0
  474. {snowpark_connect-0.24.0.dist-info → snowpark_connect-0.25.0.dist-info}/top_level.txt +0 -0
@@ -77,6 +77,7 @@ from ..expression.map_sql_expression import (
77
77
  from ..utils.identifiers import spark_to_sf_single_id
78
78
 
79
79
  _ctes = ContextVar[dict[str, relation_proto.Relation]]("_ctes", default={})
80
+ _cte_definitions = ContextVar[dict[str, any]]("_cte_definitions", default={})
80
81
  _having_condition = ContextVar[expressions_proto.Expression | None](
81
82
  "_having_condition", default=None
82
83
  )
@@ -117,12 +118,15 @@ def _push_cte_scope():
117
118
  """
118
119
  Creates a new CTE scope when evaluating nested WITH clauses.
119
120
  """
120
- cur = _ctes.get()
121
- token = _ctes.set(cur.copy())
121
+ cur_ctes = _ctes.get()
122
+ cur_definitions = _cte_definitions.get()
123
+ cte_token = _ctes.set(cur_ctes.copy())
124
+ def_token = _cte_definitions.set(cur_definitions.copy())
122
125
  try:
123
126
  yield
124
127
  finally:
125
- _ctes.reset(token)
128
+ _ctes.reset(cte_token)
129
+ _cte_definitions.reset(def_token)
126
130
 
127
131
 
128
132
  @contextmanager
@@ -405,15 +409,21 @@ def map_sql_to_pandas_df(
405
409
  else:
406
410
  # TODO: Unset the schema
407
411
  pass
408
- case "CreateTable":
412
+ case "CreateTable" | "ReplaceTable":
413
+ if class_name == "ReplaceTable":
414
+ replace_table = " OR REPLACE "
415
+ if_not_exists = ""
416
+ else:
417
+ replace_table = ""
418
+ if_not_exists = (
419
+ "IF NOT EXISTS " if logical_plan.ignoreIfExists() else ""
420
+ )
421
+
409
422
  name = get_relation_identifier_name(logical_plan.name())
410
423
  columns = ", ".join(
411
424
  _spark_field_to_sql(f, True)
412
425
  for f in logical_plan.tableSchema().fields()
413
426
  )
414
- if_not_exists = (
415
- "IF NOT EXISTS " if logical_plan.ignoreIfExists() else ""
416
- )
417
427
  comment_opt = logical_plan.tableSpec().comment()
418
428
  comment = (
419
429
  f"COMMENT = '{_escape_sql_comment(str(comment_opt.get()))}'"
@@ -422,7 +432,7 @@ def map_sql_to_pandas_df(
422
432
  )
423
433
  # NOTE: We are intentionally ignoring any FORMAT=... parameters here.
424
434
  session.sql(
425
- f"CREATE TABLE {if_not_exists}{name} ({columns}) {comment}"
435
+ f"CREATE {replace_table} TABLE {if_not_exists}{name} ({columns}) {comment}"
426
436
  ).collect()
427
437
  case "CreateTableAsSelect":
428
438
  mode = "ignore" if logical_plan.ignoreIfExists() else "errorifexists"
@@ -1351,8 +1361,28 @@ def map_logical_plan_relation(
1351
1361
  value_column_names = [e for e in as_java_list(rel.valueColumnNames())]
1352
1362
  variable_column_name = rel.variableColumnName()
1353
1363
 
1364
+ # Check for multi-column UNPIVOT which Snowflake doesn't support
1365
+ if len(value_column_names) > 1:
1366
+ raise UnsupportedOperationException(
1367
+ f"Multi-column UNPIVOT is not supported. Snowflake SQL does not support unpivoting "
1368
+ f"multiple value columns ({', '.join(value_column_names)}) in a single operation. "
1369
+ f"Workaround: Use separate UNPIVOT operations for each value column and join the results, "
1370
+ f"or restructure your query to unpivot columns individually."
1371
+ )
1372
+
1354
1373
  values = []
1355
- for e1 in as_java_list(rel.values().get()):
1374
+ values_groups = as_java_list(rel.values().get())
1375
+
1376
+ # Check if we have multi-column groups in the IN clause
1377
+ if values_groups and len(as_java_list(values_groups[0])) > 1:
1378
+ group_sizes = [len(as_java_list(group)) for group in values_groups]
1379
+ raise UnsupportedOperationException(
1380
+ f"Multi-column UNPIVOT is not supported. Snowflake SQL does not support unpivoting "
1381
+ f"multiple columns together in groups. Found groups with {max(group_sizes)} columns. "
1382
+ f"Workaround: Unpivot each column separately and then join/union the results as needed."
1383
+ )
1384
+
1385
+ for e1 in values_groups:
1356
1386
  for e in as_java_list(e1):
1357
1387
  values.append(map_logical_plan_expression(e))
1358
1388
 
@@ -1468,7 +1498,50 @@ def map_logical_plan_relation(
1468
1498
  # The name corresponds to a `WITH` alias rather than a table.
1469
1499
  # TODO: We currently evaluate the query each time its alias is used;
1470
1500
  # we should eventually start using `WITH` in Snowflake SQL.
1471
- proto = cte_proto
1501
+ # Each CTE reference should get completely fresh evaluation to prevent ambiguity
1502
+ # when the same CTE is joined multiple times. Instead of reusing the same cte_proto,
1503
+ # re-evaluate the CTE definition to get fresh column identifiers.
1504
+
1505
+ # Re-evaluate the CTE definition to get fresh column identifiers
1506
+ cte_definition = _cte_definitions.get().get(name)
1507
+ if cte_definition is not None:
1508
+ # Get the original column names for consistency across CTE references
1509
+ original_container = map_relation(cte_proto)
1510
+ original_spark_columns = (
1511
+ original_container.column_map.get_spark_columns()
1512
+ )
1513
+
1514
+ # Re-evaluate the CTE definition with a fresh plan_id
1515
+ fresh_plan_id = gen_sql_plan_id()
1516
+ fresh_cte_proto = map_logical_plan_relation(
1517
+ cte_definition, fresh_plan_id
1518
+ )
1519
+
1520
+ # Use SubqueryColumnAliases to ensure consistent column names across CTE references
1521
+ # This is crucial for CTEs that reference other CTEs
1522
+ any_proto = Any()
1523
+ any_proto.Pack(
1524
+ snowflake_proto.Extension(
1525
+ subquery_column_aliases=snowflake_proto.SubqueryColumnAliases(
1526
+ input=fresh_cte_proto,
1527
+ aliases=original_spark_columns,
1528
+ )
1529
+ )
1530
+ )
1531
+ column_aliased_proto = relation_proto.Relation(extension=any_proto)
1532
+ column_aliased_proto.common.plan_id = gen_sql_plan_id()
1533
+
1534
+ # Wrap in SubqueryAlias with the CTE name
1535
+ proto = relation_proto.Relation(
1536
+ subquery_alias=relation_proto.SubqueryAlias(
1537
+ input=column_aliased_proto,
1538
+ alias=name,
1539
+ )
1540
+ )
1541
+ proto.common.plan_id = gen_sql_plan_id()
1542
+ else:
1543
+ # Fallback to stored CTE if definition not found
1544
+ proto = cte_proto
1472
1545
  else:
1473
1546
  tmp_views = _get_current_temp_objects()
1474
1547
  current_schema = session.connection.schema
@@ -1600,7 +1673,11 @@ def map_logical_plan_relation(
1600
1673
  with _push_cte_scope():
1601
1674
  for cte in as_java_list(rel.cteRelations()):
1602
1675
  name = str(cte._1())
1603
- cte_proto = map_logical_plan_relation(cte._2())
1676
+ # Store the original CTE definition for re-evaluation
1677
+ _cte_definitions.get()[name] = cte._2()
1678
+ # Process CTE definition with a unique plan_id to ensure proper column naming
1679
+ cte_plan_id = gen_sql_plan_id()
1680
+ cte_proto = map_logical_plan_relation(cte._2(), cte_plan_id)
1604
1681
  _ctes.get()[name] = cte_proto
1605
1682
 
1606
1683
  proto = map_logical_plan_relation(rel.child())
@@ -27,7 +27,7 @@ from snowflake.snowpark_connect.expression.map_expression import (
27
27
  )
28
28
  from snowflake.snowpark_connect.expression.typer import ExpressionTyper
29
29
  from snowflake.snowpark_connect.type_mapping import (
30
- parse_ddl_string,
30
+ map_type_string_to_proto,
31
31
  proto_to_snowpark_type,
32
32
  )
33
33
  from snowflake.snowpark_connect.utils.context import push_udtf_context
@@ -125,7 +125,9 @@ def process_return_type(
125
125
  ) -> tuple[list[tuple[str, Any]], DataType, StructType, list[str]]:
126
126
  try:
127
127
  if return_type.HasField("unparsed"):
128
- parsed_return = parse_ddl_string(return_type.unparsed.data_type_string)
128
+ parsed_return = map_type_string_to_proto(
129
+ return_type.unparsed.data_type_string
130
+ )
129
131
  else:
130
132
  parsed_return = return_type
131
133
  except ValueError as e:
@@ -65,7 +65,7 @@ def map_read(
65
65
  read_format = "parquet"
66
66
 
67
67
  if read_format.lower() == "iceberg":
68
- telemetry.report_io_read("iceberg", None)
68
+ telemetry.report_io_read("iceberg")
69
69
  return map_read_table(rel)
70
70
 
71
71
  if rel.read.data_source.schema == "":
@@ -90,7 +90,7 @@ def map_read(
90
90
  )
91
91
  schema = map_json_schema_to_snowpark(parsed_schema)
92
92
  options = dict(rel.read.data_source.options)
93
- telemetry.report_io_read(read_format, options)
93
+ telemetry.report_io_read(read_format)
94
94
  session: snowpark.Session = get_or_create_snowpark_session()
95
95
  if len(rel.read.data_source.paths) > 0:
96
96
  # Normalize paths to ensure consistent behavior
@@ -175,7 +175,7 @@ def map_read_table_or_file(rel):
175
175
  rel.read.named_table.unparsed_identifier
176
176
  )
177
177
  options = {}
178
- telemetry.report_io_read(read_format, options)
178
+ telemetry.report_io_read(read_format)
179
179
  session: snowpark.Session = get_or_create_snowpark_session()
180
180
 
181
181
  clean_source_paths = [
@@ -94,7 +94,7 @@ def map_read_jdbc(
94
94
  num_partitions=num_partitions,
95
95
  predicates=predicates,
96
96
  )
97
- true_names = list(map(lambda x: unquote_if_quoted(x).lower(), df.columns))
97
+ true_names = list(map(lambda x: unquote_if_quoted(x), df.columns))
98
98
  renamed_df, snowpark_cols = rename_columns_as_snowflake_standard(
99
99
  df, rel.common.plan_id
100
100
  )
@@ -34,6 +34,7 @@ from snowflake.snowpark_connect.type_mapping import (
34
34
  cast_to_match_snowpark_type,
35
35
  map_simple_types,
36
36
  )
37
+ from snowflake.snowpark_connect.utils.snowpark_connect_logging import logger
37
38
  from snowflake.snowpark_connect.utils.telemetry import (
38
39
  SnowparkConnectNotImplementedError,
39
40
  )
@@ -66,6 +67,7 @@ def map_read_json(
66
67
 
67
68
  rows_to_infer_schema = snowpark_options.pop("rowstoinferschema", 1000)
68
69
  dropFieldIfAllNull = snowpark_options.pop("dropfieldifallnull", False)
70
+ batch_size = snowpark_options.pop("batchsize", 1000)
69
71
 
70
72
  reader = session.read.options(snowpark_options)
71
73
 
@@ -99,7 +101,7 @@ def map_read_json(
99
101
  ]
100
102
 
101
103
  df = construct_dataframe_by_schema(
102
- schema, df.to_local_iterator(), session, snowpark_options
104
+ schema, df.to_local_iterator(), session, snowpark_options, batch_size
103
105
  )
104
106
 
105
107
  spark_column_names = get_spark_column_names_from_snowpark_columns(df.columns)
@@ -277,9 +279,11 @@ def construct_dataframe_by_schema(
277
279
  result = None
278
280
 
279
281
  current_data = []
282
+ progress = 0
280
283
  for row in rows:
281
284
  current_data.append(construct_row_by_schema(row, schema, snowpark_options))
282
285
  if len(current_data) >= batch_size:
286
+ progress += len(current_data)
283
287
  result = union_data_into_df(
284
288
  result,
285
289
  current_data,
@@ -287,9 +291,11 @@ def construct_dataframe_by_schema(
287
291
  session,
288
292
  )
289
293
 
294
+ logger.info(f"JSON reader: finished processing {progress} rows")
290
295
  current_data = []
291
296
 
292
297
  if len(current_data) > 0:
298
+ progress += len(current_data)
293
299
  result = union_data_into_df(
294
300
  result,
295
301
  current_data,
@@ -297,6 +303,7 @@ def construct_dataframe_by_schema(
297
303
  session,
298
304
  )
299
305
 
306
+ logger.info(f"JSON reader: finished processing {progress} rows")
300
307
  current_data = []
301
308
 
302
309
  if result is None:
@@ -11,7 +11,6 @@ from snowflake.snowpark._internal.analyzer.analyzer_utils import (
11
11
  unquote_if_quoted,
12
12
  )
13
13
  from snowflake.snowpark.exceptions import SnowparkSQLException
14
- from snowflake.snowpark_connect.column_name_handler import ALREADY_QUOTED
15
14
  from snowflake.snowpark_connect.config import auto_uppercase_non_column_identifiers
16
15
  from snowflake.snowpark_connect.dataframe_container import DataFrameContainer
17
16
  from snowflake.snowpark_connect.relation.read.utils import (
@@ -29,15 +28,8 @@ from snowflake.snowpark_connect.utils.telemetry import (
29
28
  def post_process_df(
30
29
  df: snowpark.DataFrame, plan_id: int, source_table_name: str = None
31
30
  ) -> DataFrameContainer:
32
- def _lower_or_unquote(string):
33
- return (
34
- string[1:-1].replace('""', '"')
35
- if ALREADY_QUOTED.match(string)
36
- else string.lower()
37
- )
38
-
39
31
  try:
40
- true_names = list(map(lambda x: _lower_or_unquote(x), df.columns))
32
+ true_names = list(map(lambda x: unquote_if_quoted(x), df.columns))
41
33
  renamed_df, snowpark_column_names = rename_columns_as_snowflake_standard(
42
34
  df, plan_id
43
35
  )
@@ -317,6 +317,7 @@ class JsonReaderConfig(ReaderWriterConfig):
317
317
  # TODO: modifiedAfter: Union[bool, str, None] = None,
318
318
  # TODO: allowNonNumericNumbers: Union[bool, str, None] = None,
319
319
  "rowsToInferSchema": 1000,
320
+ "batchSize": 1000,
320
321
  },
321
322
  supported_options={
322
323
  "schema",
@@ -347,12 +348,13 @@ class JsonReaderConfig(ReaderWriterConfig):
347
348
  # "ignoreNullFields",
348
349
  "rowsToInferSchema",
349
350
  # "inferTimestamp",
351
+ "batchSize",
350
352
  },
351
353
  boolean_config_list=[
352
354
  "multiLine",
353
355
  "dropFieldIfAllNull",
354
356
  ],
355
- int_config_list=["rowsToInferSchema"],
357
+ int_config_list=["rowsToInferSchema", "batchSize"],
356
358
  float_config_list=["samplingRatio"],
357
359
  ),
358
360
  options,
@@ -107,10 +107,7 @@ def _spark_to_snowflake(multipart_id: str) -> str:
107
107
 
108
108
  def map_write(request: proto_base.ExecutePlanRequest):
109
109
  write_op = request.plan.command.write_operation
110
- if write_op.options is not None:
111
- telemetry.report_io_write(write_op.source, dict(write_op.options))
112
- else:
113
- telemetry.report_io_write(write_op.source)
110
+ telemetry.report_io_write(write_op.source)
114
111
 
115
112
  write_mode = None
116
113
  match write_op.mode:
@@ -234,10 +231,11 @@ def map_write(request: proto_base.ExecutePlanRequest):
234
231
  column_order=_column_order_for_write,
235
232
  )
236
233
  case "append":
237
- if check_table_type(snowpark_table_name, session) != "ICEBERG":
238
- raise AnalysisException(
239
- f"Table {snowpark_table_name} is not an iceberg table"
240
- )
234
+ # TODO: SNOW-2299414 Fix the implementation of table type check
235
+ # if check_table_type(snowpark_table_name, session) != "ICEBERG":
236
+ # raise AnalysisException(
237
+ # f"Table {snowpark_table_name} is not an iceberg table"
238
+ # )
241
239
  _validate_schema_and_get_writer(
242
240
  input_df, "append", snowpark_table_name
243
241
  ).saveAsTable(
@@ -264,10 +262,12 @@ def map_write(request: proto_base.ExecutePlanRequest):
264
262
  )
265
263
  case "overwrite":
266
264
  if check_snowflake_table_existence(snowpark_table_name, session):
267
- if check_table_type(snowpark_table_name, session) != "ICEBERG":
268
- raise AnalysisException(
269
- f"Table {snowpark_table_name} is not an iceberg table"
270
- )
265
+ # TODO: SNOW-2299414 Fix the implementation of table type check
266
+ # if check_table_type(snowpark_table_name, session) != "ICEBERG":
267
+ # raise AnalysisException(
268
+ # f"Table {snowpark_table_name} is not an iceberg table"
269
+ # )
270
+ pass
271
271
  else:
272
272
  create_iceberg_table(
273
273
  snowpark_table_name=snowpark_table_name,
@@ -298,13 +298,14 @@ def map_write(request: proto_base.ExecutePlanRequest):
298
298
  if check_snowflake_table_existence(
299
299
  snowpark_table_name, session
300
300
  ):
301
- if (
302
- check_table_type(snowpark_table_name, session)
303
- != "TABLE"
304
- ):
305
- raise AnalysisException(
306
- f"Table {snowpark_table_name} is not a FDN table"
307
- )
301
+ # TODO: SNOW-2299414 Fix the implementation of table type check
302
+ # if (
303
+ # check_table_type(snowpark_table_name, session)
304
+ # != "TABLE"
305
+ # ):
306
+ # raise AnalysisException(
307
+ # f"Table {snowpark_table_name} is not a FDN table"
308
+ # )
308
309
  write_mode = "truncate"
309
310
  _validate_schema_and_get_writer(
310
311
  input_df, write_mode, snowpark_table_name
@@ -314,10 +315,11 @@ def map_write(request: proto_base.ExecutePlanRequest):
314
315
  column_order=_column_order_for_write,
315
316
  )
316
317
  case "append":
317
- if check_table_type(snowpark_table_name, session) != "TABLE":
318
- raise AnalysisException(
319
- f"Table {snowpark_table_name} is not a FDN table"
320
- )
318
+ # TODO: SNOW-2299414 Fix the implementation of table type check
319
+ # if check_table_type(snowpark_table_name, session) != "TABLE":
320
+ # raise AnalysisException(
321
+ # f"Table {snowpark_table_name} is not a FDN table"
322
+ # )
321
323
  _validate_schema_and_get_writer(
322
324
  input_df, write_mode, snowpark_table_name
323
325
  ).saveAsTable(
@@ -388,10 +390,11 @@ def map_write_v2(request: proto_base.ExecutePlanRequest):
388
390
  raise AnalysisException(
389
391
  f"[TABLE_OR_VIEW_NOT_FOUND] The table or view `{write_op.table_name}` cannot be found."
390
392
  )
391
- if check_table_type(snowpark_table_name, session) != "ICEBERG":
392
- raise AnalysisException(
393
- f"Table {snowpark_table_name} is not an iceberg table"
394
- )
393
+ # TODO: SNOW-2299414 Fix the implementation of table type check
394
+ # if check_table_type(snowpark_table_name, session) != "ICEBERG":
395
+ # raise AnalysisException(
396
+ # f"Table {snowpark_table_name} is not an iceberg table"
397
+ # )
395
398
  _validate_schema_and_get_writer(
396
399
  input_df, "append", snowpark_table_name
397
400
  ).saveAsTable(
@@ -402,10 +405,12 @@ def map_write_v2(request: proto_base.ExecutePlanRequest):
402
405
  case commands_proto.WriteOperationV2.MODE_OVERWRITE | commands_proto.WriteOperationV2.MODE_OVERWRITE_PARTITIONS:
403
406
  # TODO: handle the filter condition for MODE_OVERWRITE
404
407
  if check_snowflake_table_existence(snowpark_table_name, session):
405
- if check_table_type(snowpark_table_name, session) != "ICEBERG":
406
- raise AnalysisException(
407
- f"Table {snowpark_table_name} is not an iceberg table"
408
- )
408
+ # TODO: SNOW-2299414 Fix the implementation of table type check
409
+ # if check_table_type(snowpark_table_name, session) != "ICEBERG":
410
+ # raise AnalysisException(
411
+ # f"Table {snowpark_table_name} is not an iceberg table"
412
+ # )
413
+ pass
409
414
  else:
410
415
  raise AnalysisException(
411
416
  f"[TABLE_OR_VIEW_NOT_FOUND] Table {snowpark_table_name} does not exist"
@@ -471,10 +476,11 @@ def map_write_v2(request: proto_base.ExecutePlanRequest):
471
476
  raise AnalysisException(
472
477
  f"[TABLE_OR_VIEW_NOT_FOUND] The table or view `{write_op.table_name}` cannot be found."
473
478
  )
474
- if check_table_type(snowpark_table_name, session) != "TABLE":
475
- raise AnalysisException(
476
- f"Table {snowpark_table_name} is not a FDN table"
477
- )
479
+ # TODO: SNOW-2299414 Fix the implementation of table type check
480
+ # if check_table_type(snowpark_table_name, session) != "TABLE":
481
+ # raise AnalysisException(
482
+ # f"Table {snowpark_table_name} is not a FDN table"
483
+ # )
478
484
  _validate_schema_and_get_writer(
479
485
  input_df, "append", snowpark_table_name
480
486
  ).saveAsTable(
@@ -485,10 +491,12 @@ def map_write_v2(request: proto_base.ExecutePlanRequest):
485
491
  case commands_proto.WriteOperationV2.MODE_OVERWRITE | commands_proto.WriteOperationV2.MODE_OVERWRITE_PARTITIONS:
486
492
  # TODO: handle the filter condition for MODE_OVERWRITE
487
493
  if check_snowflake_table_existence(snowpark_table_name, session):
488
- if check_table_type(snowpark_table_name, session) != "TABLE":
489
- raise AnalysisException(
490
- f"Table {snowpark_table_name} is not a FDN table"
491
- )
494
+ # TODO: SNOW-2299414 Fix the implementation of table type check
495
+ # if check_table_type(snowpark_table_name, session) != "TABLE":
496
+ # raise AnalysisException(
497
+ # f"Table {snowpark_table_name} is not a FDN table"
498
+ # )
499
+ pass
492
500
  else:
493
501
  raise AnalysisException(
494
502
  f"[TABLE_OR_VIEW_NOT_FOUND] Table {snowpark_table_name} does not exist"
@@ -798,17 +806,18 @@ def check_snowflake_table_existence(
798
806
  return False
799
807
 
800
808
 
801
- def check_table_type(
802
- snowpark_table_name: str,
803
- snowpark_session: snowpark.Session,
804
- ) -> str:
805
- # currently we only support iceberg table and FDN table
806
- metadata = snowpark_session.sql(
807
- f"SHOW TABLES LIKE '{unquote_if_quoted(snowpark_table_name)}';"
808
- ).collect()
809
- if metadata is None or len(metadata) == 0:
810
- raise AnalysisException(f"Table {snowpark_table_name} does not exist")
811
- metadata = metadata[0]
812
- if metadata.as_dict().get("is_iceberg") == "Y":
813
- return "ICEBERG"
814
- return "TABLE"
809
+ # TODO: SNOW-2299414 Fix the implementation of table type check
810
+ # def check_table_type(
811
+ # snowpark_table_name: str,
812
+ # snowpark_session: snowpark.Session,
813
+ # ) -> str:
814
+ # # currently we only support iceberg table and FDN table
815
+ # metadata = snowpark_session.sql(
816
+ # f"SHOW TABLES LIKE '{unquote_if_quoted(snowpark_table_name)}';"
817
+ # ).collect()
818
+ # if metadata is None or len(metadata) == 0:
819
+ # raise AnalysisException(f"Table {snowpark_table_name} does not exist")
820
+ # metadata = metadata[0]
821
+ # if metadata.as_dict().get("is_iceberg") == "Y":
822
+ # return "ICEBERG"
823
+ # return "TABLE"
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
3
3
  #
4
-
4
+ import pathlib
5
5
  import threading
6
6
  import time
7
7
 
@@ -9,6 +9,8 @@ from snowflake.snowpark_connect.utils.session import get_or_create_snowpark_sess
9
9
  from snowflake.snowpark_connect.utils.snowpark_connect_logging import logger
10
10
 
11
11
  _resources_initialized = threading.Event()
12
+ SPARK_VERSION = "3.5.6"
13
+ RESOURCE_PATH = "/snowflake/snowpark_connect/resources"
12
14
 
13
15
 
14
16
  def initialize_resources() -> None:
@@ -41,6 +43,31 @@ def initialize_resources() -> None:
41
43
 
42
44
  session.sql("select 1 as sf_connection_warm_up").collect()
43
45
 
46
+ def upload_scala_udf_jars() -> None:
47
+ """Upload Spark jar files required for creating Scala UDFs."""
48
+ stage = session.get_session_stage()
49
+ resource_path = stage + RESOURCE_PATH
50
+ import snowflake
51
+
52
+ pyspark_jars = (
53
+ pathlib.Path(snowflake.snowpark_connect.__file__).parent / "includes/jars"
54
+ )
55
+ jar_files = [
56
+ f"spark-sql_2.12-{SPARK_VERSION}.jar",
57
+ f"spark-connect-client-jvm_2.12-{SPARK_VERSION}.jar",
58
+ f"spark-common-utils_2.12-{SPARK_VERSION}.jar",
59
+ "json4s-ast_2.12-3.7.0-M11.jar",
60
+ ]
61
+
62
+ for jar in jar_files:
63
+ session.file.put(
64
+ str(pyspark_jars) + "/" + jar,
65
+ resource_path,
66
+ auto_compress=False,
67
+ overwrite=False,
68
+ source_compression="NONE",
69
+ )
70
+
44
71
  start_time = time.time()
45
72
 
46
73
  resources = [
@@ -49,6 +76,7 @@ def initialize_resources() -> None:
49
76
  ("Initialize Session Stage", initialize_session_stage), # Takes about 0.3s
50
77
  ("Initialize Session Catalog", initialize_catalog), # Takes about 1.2s
51
78
  ("Snowflake Connection Warm Up", warm_up_sf_connection), # Takes about 1s
79
+ ("Upload Scala UDF Jars", upload_scala_udf_jars),
52
80
  ]
53
81
 
54
82
  for name, resource_func in resources:
@@ -68,10 +68,14 @@ from snowflake.snowpark_connect.relation.map_relation import map_relation
68
68
  from snowflake.snowpark_connect.relation.utils import get_semantic_string
69
69
  from snowflake.snowpark_connect.resources_initializer import initialize_resources_async
70
70
  from snowflake.snowpark_connect.type_mapping import (
71
- parse_ddl_string,
71
+ map_type_string_to_proto,
72
72
  snowpark_to_proto_type,
73
73
  )
74
- from snowflake.snowpark_connect.utils.artifacts import check_checksum, write_artifact
74
+ from snowflake.snowpark_connect.utils.artifacts import (
75
+ check_checksum,
76
+ write_artifact,
77
+ write_class_files_to_stage,
78
+ )
75
79
  from snowflake.snowpark_connect.utils.cache import (
76
80
  df_cache_map_get,
77
81
  df_cache_map_pop,
@@ -249,7 +253,9 @@ class SnowflakeConnectServicer(proto_base_grpc.SparkConnectServiceServicer):
249
253
  return proto_base.AnalyzePlanResponse(
250
254
  session_id=request.session_id,
251
255
  ddl_parse=proto_base.AnalyzePlanResponse.DDLParse(
252
- parsed=parse_ddl_string(request.ddl_parse.ddl_string)
256
+ parsed=map_type_string_to_proto(
257
+ request.ddl_parse.ddl_string
258
+ )
253
259
  ),
254
260
  )
255
261
  case "get_storage_level":
@@ -516,7 +522,13 @@ class SnowflakeConnectServicer(proto_base_grpc.SparkConnectServiceServicer):
516
522
  for name, data in cache_data.items():
517
523
  _try_handle_local_relation(name, bytes(data))
518
524
 
525
+ class_files: dict[str, str] = {}
519
526
  for (name, filepath) in filenames.items():
527
+ if name.endswith(".class"):
528
+ # name is <dir>/<package>/<class_name>
529
+ # we don't need the dir name, but require the package, so only remove dir
530
+ class_files[name.split("/", 1)[-1]] = filepath
531
+ continue
520
532
  session.file.put(
521
533
  filepath,
522
534
  session.get_session_stage(),
@@ -541,6 +553,9 @@ class SnowflakeConnectServicer(proto_base_grpc.SparkConnectServiceServicer):
541
553
  if not name.startswith("pyfiles"):
542
554
  session._import_files.add(cached_name)
543
555
 
556
+ if class_files:
557
+ write_class_files_to_stage(session, class_files)
558
+
544
559
  return proto_base.AddArtifactsResponse(artifacts=list(response.values()))
545
560
 
546
561
  def ArtifactStatus(self, request, context):