snowflake-snowpark-python 1.53.0__tar.gz → 1.53.1__tar.gz

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.
Files changed (242) hide show
  1. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/CHANGELOG.md +4 -0
  2. {snowflake_snowpark_python-1.53.0/src/snowflake_snowpark_python.egg-info → snowflake_snowpark_python-1.53.1}/PKG-INFO +1 -1
  3. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/utils.py +67 -24
  4. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_reader.py +77 -23
  5. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/functions.py +1 -1
  6. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/query_history.py +95 -0
  7. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/session.py +18 -0
  8. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/table.py +4 -0
  9. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/version.py +1 -1
  10. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1/src/snowflake_snowpark_python.egg-info}/PKG-INFO +1 -1
  11. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/LICENSE.txt +0 -0
  12. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/MANIFEST.in +0 -0
  13. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/README.md +0 -0
  14. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/pyproject.toml +0 -0
  15. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/setup.cfg +0 -0
  16. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/setup.py +0 -0
  17. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/__init__.py +0 -0
  18. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_functions/__init__.py +0 -0
  19. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_functions/general_functions.py +0 -0
  20. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_functions/scalar_functions.py +0 -0
  21. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/__init__.py +0 -0
  22. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/__init__.py +0 -0
  23. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/analyzer.py +0 -0
  24. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/analyzer_utils.py +0 -0
  25. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/binary_expression.py +0 -0
  26. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/binary_plan_node.py +0 -0
  27. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/datatype_mapper.py +0 -0
  28. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/expression.py +0 -0
  29. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/grouping_set.py +0 -0
  30. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/metadata_utils.py +0 -0
  31. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/query_plan_analysis_utils.py +0 -0
  32. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/schema_utils.py +0 -0
  33. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/select_statement.py +0 -0
  34. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/snowflake_plan.py +0 -0
  35. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/snowflake_plan_node.py +0 -0
  36. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/sort_expression.py +0 -0
  37. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/table_function.py +0 -0
  38. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/table_merge_expression.py +0 -0
  39. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/unary_expression.py +0 -0
  40. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/unary_plan_node.py +0 -0
  41. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/analyzer/window_expression.py +0 -0
  42. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/ast/__init__.py +0 -0
  43. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/ast/batch.py +0 -0
  44. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/ast/builder.py +0 -0
  45. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/ast/utils.py +0 -0
  46. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/code_generation.py +0 -0
  47. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/__init__.py +0 -0
  48. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/cte_utils.py +0 -0
  49. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/large_query_breakdown.py +0 -0
  50. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/plan_compiler.py +0 -0
  51. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/query_generator.py +0 -0
  52. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/repeated_subquery_elimination.py +0 -0
  53. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/telemetry_constants.py +0 -0
  54. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/compiler/utils.py +0 -0
  55. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/__init__.py +0 -0
  56. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/datasource_partitioner.py +0 -0
  57. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/datasource_reader.py +0 -0
  58. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/datasource_typing.py +0 -0
  59. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/__init__.py +0 -0
  60. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/base_dialect.py +0 -0
  61. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/databricks_dialect.py +0 -0
  62. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/mysql_dialect.py +0 -0
  63. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/oracledb_dialect.py +0 -0
  64. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/postgresql_dialect.py +0 -0
  65. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/sqlite3_dialect.py +0 -0
  66. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/dbms_dialects/sqlserver_dialect.py +0 -0
  67. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/__init__.py +0 -0
  68. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/base_driver.py +0 -0
  69. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/databricks_driver.py +0 -0
  70. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/oracledb_driver.py +0 -0
  71. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/psycopg2_driver.py +0 -0
  72. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/pymsql_driver.py +0 -0
  73. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/pyodbc_driver.py +0 -0
  74. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/drivers/sqlite_driver.py +0 -0
  75. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/jdbc.py +0 -0
  76. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/data_source/utils.py +0 -0
  77. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/debug_utils.py +0 -0
  78. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/error_message.py +0 -0
  79. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/event_table_telemetry.py +0 -0
  80. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/open_telemetry.py +0 -0
  81. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/packaging_utils.py +0 -0
  82. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/proto/generated/__init__.py +0 -0
  83. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/proto/generated/ast_pb2.py +0 -0
  84. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/proto/generated/ast_pb2.pyi +0 -0
  85. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/select_projection_complexity_utils.py +0 -0
  86. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/server_connection.py +0 -0
  87. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/snowpark_profiler.py +0 -0
  88. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/telemetry.py +0 -0
  89. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/temp_table_auto_cleaner.py +0 -0
  90. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/type_utils.py +0 -0
  91. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/udf_utils.py +0 -0
  92. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/xml_reader.py +0 -0
  93. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/xml_schema_inference.py +0 -0
  94. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/_internal/xpath_handlers.py +0 -0
  95. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/async_job.py +0 -0
  96. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/catalog.py +0 -0
  97. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/column.py +0 -0
  98. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/context.py +0 -0
  99. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe.py +0 -0
  100. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_ai_functions.py +0 -0
  101. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_analytics_functions.py +0 -0
  102. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_na_functions.py +0 -0
  103. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_profiler.py +0 -0
  104. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_stat_functions.py +0 -0
  105. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/dataframe_writer.py +0 -0
  106. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/exceptions.py +0 -0
  107. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/file_operation.py +0 -0
  108. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/files.py +0 -0
  109. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/lineage.py +0 -0
  110. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/__init__.py +0 -0
  111. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_analyzer.py +0 -0
  112. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_connection.py +0 -0
  113. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_constants.py +0 -0
  114. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_functions.py +0 -0
  115. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_nop_analyzer.py +0 -0
  116. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_nop_connection.py +0 -0
  117. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_nop_plan.py +0 -0
  118. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_options.py +0 -0
  119. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_pandas_util.py +0 -0
  120. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_plan.py +0 -0
  121. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_plan_builder.py +0 -0
  122. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_select_statement.py +0 -0
  123. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_snowflake_data_type.py +0 -0
  124. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_snowflake_to_pandas_converter.py +0 -0
  125. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_stage_registry.py +0 -0
  126. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_stored_procedure.py +0 -0
  127. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_telemetry.py +0 -0
  128. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_udaf.py +0 -0
  129. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_udf.py +0 -0
  130. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_udf_utils.py +0 -0
  131. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_udtf.py +0 -0
  132. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_util.py +0 -0
  133. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/_window_utils.py +0 -0
  134. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/mock/exceptions.py +0 -0
  135. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/__init__.py +0 -0
  136. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/config/__init__.py +0 -0
  137. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/config/__main__.py +0 -0
  138. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/config/envvars.py +0 -0
  139. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/config/pubsub.py +0 -0
  140. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/conftest.py +0 -0
  141. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/__init__.py +0 -0
  142. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/__init__.py +0 -0
  143. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/aggregation_utils.py +0 -0
  144. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/align_utils.py +0 -0
  145. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/apply_utils.py +0 -0
  146. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/binary_op_utils.py +0 -0
  147. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/concat_utils.py +0 -0
  148. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/cumulative_utils.py +0 -0
  149. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/cut_utils.py +0 -0
  150. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/frame.py +0 -0
  151. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/generator_utils.py +0 -0
  152. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/get_dummies_utils.py +0 -0
  153. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/groupby_utils.py +0 -0
  154. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/indexing_utils.py +0 -0
  155. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/io_utils.py +0 -0
  156. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/isin_utils.py +0 -0
  157. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/join_utils.py +0 -0
  158. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/ordered_dataframe.py +0 -0
  159. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/pivot_utils.py +0 -0
  160. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/resample_utils.py +0 -0
  161. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/row_count_estimation.py +0 -0
  162. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/session.py +0 -0
  163. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/snowpark_pandas_types.py +0 -0
  164. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/statement_params_constants.py +0 -0
  165. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/telemetry.py +0 -0
  166. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/timestamp_utils.py +0 -0
  167. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/transpose_utils.py +0 -0
  168. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/type_utils.py +0 -0
  169. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/unpivot_utils.py +0 -0
  170. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/utils.py +0 -0
  171. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/where_utils.py +0 -0
  172. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_internal/window_utils.py +0 -0
  173. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/_typing.py +0 -0
  174. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/compiler/__init__.py +0 -0
  175. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/compiler/doc_utils.py +0 -0
  176. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/compiler/ray_utils.py +0 -0
  177. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/compiler/snowflake_query_compiler.py +0 -0
  178. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/__init__.py +0 -0
  179. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/base.py +0 -0
  180. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/dataframe.py +0 -0
  181. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/datetime_index.py +0 -0
  182. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/general.py +0 -0
  183. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/groupby.py +0 -0
  184. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/index.py +0 -0
  185. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/io.py +0 -0
  186. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/resample.py +0 -0
  187. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/series.py +0 -0
  188. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/series_utils.py +0 -0
  189. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/shared_docs.py +0 -0
  190. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/timedelta_index.py +0 -0
  191. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/docstrings/window.py +0 -0
  192. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/__init__.py +0 -0
  193. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/base_overrides.py +0 -0
  194. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/dataframe_extensions.py +0 -0
  195. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/dataframe_groupby_overrides.py +0 -0
  196. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/dataframe_overrides.py +0 -0
  197. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/datetime_index.py +0 -0
  198. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/general_overrides.py +0 -0
  199. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/index.py +0 -0
  200. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/indexing_overrides.py +0 -0
  201. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/io_overrides.py +0 -0
  202. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/pd_extensions.py +0 -0
  203. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/resample_overrides.py +0 -0
  204. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/resampler_groupby_overrides.py +0 -0
  205. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/rolling_groupby_overrides.py +0 -0
  206. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/series_extensions.py +0 -0
  207. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/series_groupby_overrides.py +0 -0
  208. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/series_overrides.py +0 -0
  209. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/snow_partition_iterator.py +0 -0
  210. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/timedelta_index.py +0 -0
  211. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/utils.py +0 -0
  212. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/extensions/window_overrides.py +0 -0
  213. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/io/__init__.py +0 -0
  214. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/io/factories.py +0 -0
  215. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/io/snow_io.py +0 -0
  216. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/__init__.py +0 -0
  217. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/error_message.py +0 -0
  218. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/exceptions.py +0 -0
  219. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/frontend_constants.py +0 -0
  220. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/numpy_to_pandas.py +0 -0
  221. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/plugin/utils/warning_message.py +0 -0
  222. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/modin/utils.py +0 -0
  223. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/py.typed +0 -0
  224. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/relational_grouped_dataframe.py +0 -0
  225. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/row.py +0 -0
  226. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/secrets.py +0 -0
  227. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/stored_procedure.py +0 -0
  228. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/stored_procedure_profiler.py +0 -0
  229. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/table_function.py +0 -0
  230. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/testing.py +0 -0
  231. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/types.py +0 -0
  232. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/udaf.py +0 -0
  233. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/udf.py +0 -0
  234. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/udf_profiler.py +0 -0
  235. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/udtf.py +0 -0
  236. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake/snowpark/window.py +0 -0
  237. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/SOURCES.txt +0 -0
  238. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/dependency_links.txt +0 -0
  239. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/namespace_packages.txt +0 -0
  240. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/not-zip-safe +0 -0
  241. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/requires.txt +0 -0
  242. {snowflake_snowpark_python-1.53.0 → snowflake_snowpark_python-1.53.1}/src/snowflake_snowpark_python.egg-info/top_level.txt +0 -0
@@ -1,5 +1,9 @@
1
1
  # Release History
2
2
 
3
+ ## 1.53.1 (2026-07-14)
4
+
5
+ No user-facing changes in this release.
6
+
3
7
  ## 1.53.0 (2026-07-09)
4
8
 
5
9
  ### Snowpark Python API Updates
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-snowpark-python
3
- Version: 1.53.0
3
+ Version: 1.53.1
4
4
  Summary: Snowflake Snowpark for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -2009,6 +2009,23 @@ def remove_comments(sql_query: str, uuids: List[str]) -> str:
2009
2009
  )
2010
2010
 
2011
2011
 
2012
+ def _validate_iceberg_named_version_ref(
2013
+ value: Optional[str], param_name: str
2014
+ ) -> Optional[str]:
2015
+ """Validate a non-empty Iceberg tag/branch/version-ref name."""
2016
+ if value is None:
2017
+ return None
2018
+ if not isinstance(value, str):
2019
+ raise ValueError(
2020
+ f"'{param_name}' must be a string Iceberg name, "
2021
+ f"got {type(value).__name__}."
2022
+ )
2023
+ stripped = value.strip()
2024
+ if not stripped:
2025
+ raise ValueError(f"'{param_name}' must be a non-empty Iceberg name.")
2026
+ return stripped
2027
+
2028
+
2012
2029
  class TimeTravelConfig(NamedTuple):
2013
2030
  """Configuration for time travel operations."""
2014
2031
 
@@ -2020,6 +2037,8 @@ class TimeTravelConfig(NamedTuple):
2020
2037
  stream: Optional[str] = None
2021
2038
  version: Optional[int] = None
2022
2039
  version_tag: Optional[str] = None
2040
+ version_ref: Optional[str] = None
2041
+ branch: Optional[str] = None
2023
2042
 
2024
2043
  @staticmethod
2025
2044
  def validate_and_normalize_params(
@@ -2031,6 +2050,8 @@ class TimeTravelConfig(NamedTuple):
2031
2050
  stream: Optional[str] = None,
2032
2051
  version: Optional[int] = None,
2033
2052
  version_tag: Optional[str] = None,
2053
+ version_ref: Optional[str] = None,
2054
+ branch: Optional[str] = None,
2034
2055
  ) -> Optional["TimeTravelConfig"]:
2035
2056
  """
2036
2057
  Validates and normalizes time travel parameters.
@@ -2052,9 +2073,31 @@ class TimeTravelConfig(NamedTuple):
2052
2073
  Raises:
2053
2074
  ValueError: If parameters are invalid.
2054
2075
  """
2076
+ version_tag = _validate_iceberg_named_version_ref(version_tag, "version_tag")
2077
+ version_ref = _validate_iceberg_named_version_ref(version_ref, "version_ref")
2078
+ branch = _validate_iceberg_named_version_ref(branch, "branch")
2079
+
2080
+ named_ref_count = sum(
2081
+ arg is not None for arg in (version_tag, version_ref, branch)
2082
+ )
2083
+ if named_ref_count > 1:
2084
+ raise ValueError(
2085
+ "Exactly one of 'version_tag', 'version_ref', or 'branch' may be "
2086
+ "provided for Iceberg named-ref time travel."
2087
+ )
2088
+
2055
2089
  time_travel_arg_count = sum(
2056
2090
  arg is not None
2057
- for arg in (statement, offset, timestamp, stream, version, version_tag)
2091
+ for arg in (
2092
+ statement,
2093
+ offset,
2094
+ timestamp,
2095
+ stream,
2096
+ version,
2097
+ version_tag,
2098
+ version_ref,
2099
+ branch,
2100
+ )
2058
2101
  )
2059
2102
 
2060
2103
  # Validate mode
@@ -2089,32 +2132,25 @@ class TimeTravelConfig(NamedTuple):
2089
2132
  f"'version' must be an int Iceberg snapshot id, got {type(version).__name__}."
2090
2133
  )
2091
2134
 
2092
- # version_tag (Iceberg tag name, mapped to Snowflake's
2093
- # ``AT(VERSION_TAG => '<name>')`` grammar) only works with 'at' mode —
2094
- # Iceberg tag reads are positional (bound to a specific snapshot),
2095
- # not range-of-time, so ``BEFORE`` has no meaning.
2096
- if version_tag is not None and time_travel_mode.lower() != "at":
2097
- raise ValueError(
2098
- "Iceberg version_tag time travel can only be used with "
2099
- "time_travel_mode='at', not 'before'."
2100
- )
2101
-
2102
- # Validate version_tag type — Iceberg tag names are strings. Empty
2103
- # strings are invalid.
2104
- if version_tag is not None:
2105
- if not isinstance(version_tag, str):
2135
+ # Named Iceberg refs (tag / branch / version_ref) map to Snowflake's
2136
+ # ``AT(VERSION_REF => '<name>')`` grammar and only work with 'at' mode.
2137
+ for param_name, param_value in (
2138
+ ("version_tag", version_tag),
2139
+ ("version_ref", version_ref),
2140
+ ("branch", branch),
2141
+ ):
2142
+ if param_value is not None and time_travel_mode.lower() != "at":
2106
2143
  raise ValueError(
2107
- f"'version_tag' must be a string Iceberg tag name, "
2108
- f"got {type(version_tag).__name__}."
2144
+ f"Iceberg {param_name} time travel can only be used with "
2145
+ "time_travel_mode='at', not 'before'."
2109
2146
  )
2110
- if not version_tag:
2111
- raise ValueError("'version_tag' must be a non-empty Iceberg tag name.")
2112
2147
 
2113
2148
  # Validate exactly one parameter is provided
2114
2149
  if time_travel_arg_count != 1:
2115
2150
  raise ValueError(
2116
2151
  "Exactly one of 'statement', 'offset', 'timestamp', 'stream', "
2117
- "'version', or 'version_tag' must be provided."
2152
+ "'version', 'version_tag', 'version_ref', or 'branch' must be "
2153
+ "provided."
2118
2154
  )
2119
2155
 
2120
2156
  # Normalize timestamp
@@ -2150,6 +2186,8 @@ class TimeTravelConfig(NamedTuple):
2150
2186
  stream=stream,
2151
2187
  version=version,
2152
2188
  version_tag=version_tag,
2189
+ version_ref=version_ref,
2190
+ branch=branch,
2153
2191
  )
2154
2192
 
2155
2193
  def generate_sql_clause(self) -> str:
@@ -2160,11 +2198,12 @@ class TimeTravelConfig(NamedTuple):
2160
2198
  Returns:
2161
2199
  SQL clause like " AT (TIMESTAMP => TO_TIMESTAMP_NTZ('...'))",
2162
2200
  " AT (VERSION => 1234567890)" for Iceberg snapshot id time travel,
2163
- or " AT (VERSION_TAG => 'release_v1')" for Iceberg tag time
2164
- travel.
2201
+ or " AT (VERSION_REF => 'audit-branch')" for Iceberg tag/branch
2202
+ time travel.
2165
2203
 
2166
2204
  Note on escaping: string-valued parameters (``statement``,
2167
- ``stream``, ``version_tag``, ``timestamp``) are embedded inside
2205
+ ``stream``, ``version_tag``, ``version_ref``, ``branch``,
2206
+ ``timestamp``) are embedded inside
2168
2207
  single-quoted SQL literals via the existing ``str_to_sql``
2169
2208
  helper in ``analyzer.datatype_mapper`` so embedded ``'``, ``\\``
2170
2209
  and newline characters are properly escaped. This keeps the
@@ -2191,8 +2230,12 @@ class TimeTravelConfig(NamedTuple):
2191
2230
  clause += f"(STREAM => {str_to_sql(self.stream)})"
2192
2231
  elif self.version is not None:
2193
2232
  clause += f"(VERSION => {self.version})"
2233
+ elif self.version_ref is not None:
2234
+ clause += f"(VERSION_REF => {str_to_sql(self.version_ref)})"
2235
+ elif self.branch is not None:
2236
+ clause += f"(VERSION_REF => {str_to_sql(self.branch)})"
2194
2237
  elif self.version_tag is not None:
2195
- clause += f"(VERSION_TAG => {str_to_sql(self.version_tag)})"
2238
+ clause += f"(VERSION_REF => {str_to_sql(self.version_tag)})"
2196
2239
  elif self.timestamp is not None:
2197
2240
  if self.timestamp_type is not None:
2198
2241
  timestamp_type = self.timestamp_type.upper()
@@ -165,12 +165,17 @@ def _extract_time_travel_from_options(options: dict) -> dict:
165
165
 
166
166
  Special handling for 'VERSION_TAG' / 'VERSION-TAG' (Iceberg tag name) —
167
167
  both aliases map to the internal ``version_tag`` time travel parameter
168
- and emit ``AT(VERSION_TAG => '<name>')`` on the Snowflake side (see
169
- Spark Iceberg's ``VERSION AS OF '<tag_name>'`` reader path):
170
- - Automatically set time_travel_mode to 'at'
171
- (tag reads are positional — bound to a specific snapshot — not
172
- range-of-time)
173
- - Cannot be used with time_travel_mode='before' (raises error)
168
+ and emit ``AT(VERSION_REF => '<name>')`` on the Snowflake side.
169
+
170
+ Special handling for 'VERSION_REF' / 'VERSION-REF' (Iceberg tag or
171
+ branch name) — maps to the internal ``version_ref`` parameter.
172
+
173
+ Special handling for 'BRANCH' (Spark Iceberg WAP branch read) — maps
174
+ to the internal ``branch`` parameter and emits
175
+ ``AT(VERSION_REF => '<name>')``.
176
+
177
+ Special handling for 'TAG' (Spark Iceberg ``SparkReadOptions.TAG``) —
178
+ maps to the internal ``version_tag`` parameter.
174
179
  """
175
180
  result = {}
176
181
  excluded_keys = set()
@@ -221,27 +226,64 @@ def _extract_time_travel_from_options(options: dict) -> dict:
221
226
  )
222
227
  result["time_travel_mode"] = "at"
223
228
 
224
- # Handle Iceberg tag (``version_tag`` / ``version-tag``). Both aliases
225
- # route to the internal ``version_tag`` parameter and emit
226
- # ``AT(VERSION_TAG => '<name>')`` server-side. Auto-sets mode='at'.
227
- version_tag_value = options.get("VERSION_TAG")
228
- version_tag_source = "version_tag"
229
- if version_tag_value is None:
230
- version_tag_value = options.get("VERSION-TAG")
231
- version_tag_source = "version-tag"
232
- if version_tag_value is not None:
229
+ def _set_named_ref_option(
230
+ result: dict,
231
+ *,
232
+ param_name: str,
233
+ option_source: str,
234
+ raw_value: Any,
235
+ ) -> None:
233
236
  if (
234
237
  "TIME_TRAVEL_MODE" in options
235
238
  and options["TIME_TRAVEL_MODE"].lower() == "before"
236
239
  ):
237
240
  raise ValueError(
238
- f"Cannot use '{version_tag_source}' option with "
239
- "time_travel_mode='before'. Iceberg tag time travel only "
240
- "supports time_travel_mode='at'."
241
+ f"Cannot use '{option_source}' option with "
242
+ "time_travel_mode='before'. Iceberg named-ref time travel "
243
+ "only supports time_travel_mode='at'."
241
244
  )
242
- result["version_tag"] = str(version_tag_value)
245
+ result[param_name] = str(raw_value)
243
246
  result["time_travel_mode"] = "at"
244
247
 
248
+ # Handle Iceberg tag (``version_tag`` / ``version-tag`` / Spark ``tag``).
249
+ version_tag_value = options.get("VERSION_TAG")
250
+ version_tag_source = "version_tag"
251
+ if version_tag_value is None:
252
+ version_tag_value = options.get("VERSION-TAG")
253
+ version_tag_source = "version-tag"
254
+ if version_tag_value is None:
255
+ version_tag_value = options.get("TAG")
256
+ version_tag_source = "tag"
257
+ if version_tag_value is not None:
258
+ _set_named_ref_option(
259
+ result,
260
+ param_name="version_tag",
261
+ option_source=version_tag_source,
262
+ raw_value=version_tag_value,
263
+ )
264
+
265
+ version_ref_value = options.get("VERSION_REF")
266
+ version_ref_source = "version_ref"
267
+ if version_ref_value is None:
268
+ version_ref_value = options.get("VERSION-REF")
269
+ version_ref_source = "version-ref"
270
+ if version_ref_value is not None:
271
+ _set_named_ref_option(
272
+ result,
273
+ param_name="version_ref",
274
+ option_source=version_ref_source,
275
+ raw_value=version_ref_value,
276
+ )
277
+
278
+ branch_value = options.get("BRANCH")
279
+ if branch_value is not None:
280
+ _set_named_ref_option(
281
+ result,
282
+ param_name="branch",
283
+ option_source="branch",
284
+ raw_value=branch_value,
285
+ )
286
+
245
287
  for option_key, param_name in _TIME_TRAVEL_OPTIONS_PARAMS_MAP.items():
246
288
  if option_key in options and option_key not in excluded_keys:
247
289
  result[param_name] = options[option_key]
@@ -737,6 +779,8 @@ class DataFrameReader:
737
779
  version_tag = kwargs.pop("version_tag", None)
738
780
  start_snapshot_id = kwargs.pop("start_snapshot_id", None)
739
781
  end_snapshot_id = kwargs.pop("end_snapshot_id", None)
782
+ version_ref = kwargs.pop("version_ref", None)
783
+ branch = kwargs.pop("branch", None)
740
784
  if kwargs:
741
785
  raise TypeError(
742
786
  f"table() got unexpected keyword arguments: {sorted(kwargs)}"
@@ -793,15 +837,23 @@ class DataFrameReader:
793
837
  time_travel_mode is not None
794
838
  or version is not None
795
839
  or version_tag is not None
840
+ or version_ref is not None
841
+ or branch is not None
796
842
  ):
797
- # If version / version_tag is provided without mode, default to
798
- # 'at' — snapshot ids and tag reads only make sense with AT
799
- # (symmetric with the as-of-timestamp option handling).
843
+ # If version / named-ref params are provided without mode,
844
+ # default to 'at'.
800
845
  effective_mode = (
801
846
  time_travel_mode
802
847
  if time_travel_mode
803
848
  else (
804
- "at" if (version is not None or version_tag is not None) else None
849
+ "at"
850
+ if (
851
+ version is not None
852
+ or version_tag is not None
853
+ or version_ref is not None
854
+ or branch is not None
855
+ )
856
+ else None
805
857
  )
806
858
  )
807
859
  time_travel_params = {
@@ -813,6 +865,8 @@ class DataFrameReader:
813
865
  "stream": stream,
814
866
  "version": version,
815
867
  "version_tag": version_tag,
868
+ "version_ref": version_ref,
869
+ "branch": branch,
816
870
  }
817
871
  table = self._session.table(name, _emit_ast=False, **time_travel_params)
818
872
  else:
@@ -13821,7 +13821,7 @@ def ai_complete(
13821
13821
  >>> # With detailed output
13822
13822
  >>> df = session.range(1).select(
13823
13823
  ... ai_complete(
13824
- ... model='mistral-large',
13824
+ ... model='mistral-large2',
13825
13825
  ... prompt='Explain AI in one sentence.',
13826
13826
  ... show_details=True
13827
13827
  ... ).alias("detailed_response")
@@ -1,11 +1,15 @@
1
1
  #
2
2
  # Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
3
3
  #
4
+ import os
4
5
  from abc import abstractmethod
6
+ from logging import getLogger
5
7
  from typing import Dict, List, NamedTuple, Tuple
6
8
 
7
9
  import snowflake.snowpark
8
10
 
11
+ _logger = getLogger(__name__)
12
+
9
13
 
10
14
  class QueryRecord(NamedTuple):
11
15
  """Contains the query information returned from the Snowflake database after the query is run."""
@@ -141,3 +145,94 @@ class AstListener(QueryListener):
141
145
  @property
142
146
  def base64_batches(self) -> List[str]:
143
147
  return self._ast_batches
148
+
149
+
150
+ class _VscHistoryExporter(QueryListener):
151
+ """Exports executed query IDs to a directory watched by the Snowflake VS Code extension.
152
+
153
+ For each query, an empty file named after the query ID is created in the
154
+ target directory.
155
+
156
+ Note that this exporter is active only when the
157
+ ``SNOWFLAKE_SNOWPARK_VSC_QUERY_HISTORY_DIR`` environment variable is set.
158
+
159
+ The exported files are meant to be consumed by the Snowflake VS Code
160
+ extension, which is responsible for cleaning up the directory; the exporter
161
+ never removes files on its own. As a safeguard against an unbounded
162
+ directory, the constructor counts the files already present and disables the
163
+ exporter (making it a no-op) if that count is at or above a threshold. The
164
+ threshold defaults to :attr:`DEFAULT_FILE_COUNT_LIMIT_AT_INIT` and can be
165
+ overridden via the ``SNOWFLAKE_SNOWPARK_VSC_QUERY_HISTORY_DIR_MAX_FILES``
166
+ environment variable.
167
+ """
168
+
169
+ DEFAULT_FILE_COUNT_LIMIT_AT_INIT = 1000
170
+
171
+ def __init__(self, query_history_dir: str) -> None:
172
+ """
173
+ Initializes the _VscHistoryExporter.
174
+
175
+ Args:
176
+ query_history_dir: Directory into which an empty file named after each
177
+ executed query ID is written. Created if it does not already exist.
178
+ """
179
+ self._query_history_dir = query_history_dir
180
+ # When _disabled is True, _notify becomes a pure no-op. Default to
181
+ # disabled, and only enable below if the target directory is ready
182
+ # (created or already present) and confirmed below the file-count
183
+ # limit; any failure leaves it disabled.
184
+ self._disabled = True
185
+ try:
186
+ os.makedirs(query_history_dir, exist_ok=True)
187
+ except OSError:
188
+ # Exporting query history is a best-effort feature for the VS Code
189
+ # extension; a failure here must not break the user's session.
190
+ _logger.debug(
191
+ "Failed to create query history directory %s",
192
+ query_history_dir,
193
+ exc_info=True,
194
+ )
195
+ return
196
+
197
+ # Resolve the file-count limit, falling back to the default when the env
198
+ # var is unset or not a valid integer.
199
+ try:
200
+ limit = int(
201
+ os.environ.get(
202
+ "SNOWFLAKE_SNOWPARK_VSC_QUERY_HISTORY_DIR_MAX_FILES",
203
+ self.DEFAULT_FILE_COUNT_LIMIT_AT_INIT,
204
+ )
205
+ )
206
+ except ValueError:
207
+ limit = self.DEFAULT_FILE_COUNT_LIMIT_AT_INIT
208
+ try:
209
+ # Enable exporting only if the directory is below the limit; if it is
210
+ # already saturated we stay disabled so we do not keep growing it.
211
+ self._disabled = len(os.listdir(self._query_history_dir)) >= limit
212
+ except OSError:
213
+ # If we cannot inspect the directory, err on the side of caution
214
+ # by keeping the exporter disabled.
215
+ _logger.debug(
216
+ "Failed to count files in query history directory %s",
217
+ self._query_history_dir,
218
+ exc_info=True,
219
+ )
220
+
221
+ def _notify(self, query_record: QueryRecord, **kwargs) -> None:
222
+ if self._disabled:
223
+ return
224
+ if query_record.is_describe or not query_record.query_id:
225
+ return
226
+ try:
227
+ open(
228
+ os.path.join(self._query_history_dir, query_record.query_id), "w"
229
+ ).close()
230
+ except OSError:
231
+ # Exporting query history is a best-effort feature for the VS Code
232
+ # extension; a failure here must not break the user's session.
233
+ _logger.debug(
234
+ "Failed to write query history file for query id %s in %s",
235
+ query_record.query_id,
236
+ self._query_history_dir,
237
+ exc_info=True,
238
+ )
@@ -856,6 +856,20 @@ class Session:
856
856
 
857
857
  _logger.info("Snowpark Session information: %s", self._session_info)
858
858
 
859
+ self._vsc_history_exporter = None
860
+ self._vsc_history_dir = os.environ.get(
861
+ "SNOWFLAKE_SNOWPARK_VSC_QUERY_HISTORY_DIR"
862
+ )
863
+ if self._vsc_history_dir:
864
+ from snowflake.snowpark.query_history import _VscHistoryExporter
865
+
866
+ _logger.debug(
867
+ "Setting up VS Code query history exporter with directory %s",
868
+ self._vsc_history_dir,
869
+ )
870
+ self._vsc_history_exporter = _VscHistoryExporter(self._vsc_history_dir)
871
+ self._conn.add_query_listener(self._vsc_history_exporter)
872
+
859
873
  # Register self._close_at_exit so it will be called at interpreter shutdown
860
874
  atexit.register(self._close_at_exit)
861
875
 
@@ -2782,6 +2796,8 @@ class Session:
2782
2796
  version_tag = kwargs.pop("version_tag", None)
2783
2797
  start_snapshot_id = kwargs.pop("start_snapshot_id", None)
2784
2798
  end_snapshot_id = kwargs.pop("end_snapshot_id", None)
2799
+ version_ref = kwargs.pop("version_ref", None)
2800
+ branch = kwargs.pop("branch", None)
2785
2801
  if kwargs:
2786
2802
  raise TypeError(
2787
2803
  f"table() got unexpected keyword arguments: {sorted(kwargs)}"
@@ -2827,6 +2843,8 @@ class Session:
2827
2843
  version_tag=version_tag,
2828
2844
  start_snapshot_id=start_snapshot_id,
2829
2845
  end_snapshot_id=end_snapshot_id,
2846
+ version_ref=version_ref,
2847
+ branch=branch,
2830
2848
  )
2831
2849
  # Replace API call origin for table
2832
2850
  set_api_call_source(t, "Session.table")
@@ -306,6 +306,8 @@ class Table(DataFrame):
306
306
  version_tag = kwargs.pop("version_tag", None)
307
307
  start_snapshot_id = kwargs.pop("start_snapshot_id", None)
308
308
  end_snapshot_id = kwargs.pop("end_snapshot_id", None)
309
+ version_ref = kwargs.pop("version_ref", None)
310
+ branch = kwargs.pop("branch", None)
309
311
  if kwargs:
310
312
  raise TypeError(
311
313
  f"Table() got unexpected keyword arguments: {sorted(kwargs)}"
@@ -344,6 +346,8 @@ class Table(DataFrame):
344
346
  stream=stream,
345
347
  version=version,
346
348
  version_tag=version_tag,
349
+ version_ref=version_ref,
350
+ branch=branch,
347
351
  )
348
352
  if iceberg_changes_config is not None and time_travel_config is not None:
349
353
  raise ValueError(
@@ -2,4 +2,4 @@
2
2
 
3
3
 
4
4
  # Update this for the versions
5
- VERSION = (1, 53, 0)
5
+ VERSION = (1, 53, 1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-snowpark-python
3
- Version: 1.53.0
3
+ Version: 1.53.1
4
4
  Summary: Snowflake Snowpark for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc