snowpark-connect 0.29.0__tar.gz → 0.30.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.
Potentially problematic release.
This version of snowpark-connect might be problematic. Click here for more details.
- {snowpark_connect-0.29.0/src/snowpark_connect.egg-info → snowpark_connect-0.30.1}/PKG-INFO +1 -1
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/analyze_plan/map_tree_string.py +8 -4
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/client.py +65 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/column_name_handler.py +6 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/config.py +25 -3
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/execute_plan/map_execution_root.py +21 -19
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/expression/map_extension.py +391 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_sql_expression.py +107 -2
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_unresolved_function.py +253 -59
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.py +38 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.pyi +14 -2
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2_grpc.py +4 -0
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2_grpc.py +4 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/io_utils.py +61 -4
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_column_ops.py +9 -4
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_join.py +8 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_row_ops.py +129 -17
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_show_string.py +14 -6
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_sql.py +39 -5
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_stats.py +21 -6
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read.py +9 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_csv.py +17 -6
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_json.py +12 -2
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_parquet.py +7 -1
- snowpark_connect-0.30.1/src/snowflake/snowpark_connect/relation/read/metadata_utils.py +159 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/utils.py +19 -2
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/write/map_write.py +44 -29
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/server.py +11 -3
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/type_mapping.py +75 -3
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/describe_query_cache.py +6 -3
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/telemetry.py +105 -23
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/version.py +1 -1
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1/src/snowpark_connect.egg-info}/PKG-INFO +1 -1
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowpark_connect.egg-info/SOURCES.txt +4 -0
- snowpark_connect-0.29.0/src/snowflake/snowpark_connect/expression/map_extension.py +0 -115
- snowpark_connect-0.29.0/src/snowflake/snowpark_connect/proto/snowflake_expression_ext_pb2.py +0 -36
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/LICENSE-binary +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/LICENSE.txt +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/NOTICE-binary +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/README.md +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/setup.cfg +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/setup.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/analyze_plan/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/constants.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/control_server.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/dataframe_container.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/dataframe_name_handler.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/date_time_format_mapping.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/empty_dataframe.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/error/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/error/error_mapping.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/error/error_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/error/exceptions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/execute_plan/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/execute_plan/map_execution_command.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/execute_plan/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/function_defaults.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/hybrid_column_map.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/literal.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_cast.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_expression.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_udf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_unresolved_attribute.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_unresolved_extract_value.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_unresolved_star.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_update_fields.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/map_window_function.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/expression/typer.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/antlr4-runtime-4.9.3.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-cli-1.5.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-codec-1.16.1.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-collections-3.2.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-collections4-4.4.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-compiler-3.1.9.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-compress-1.26.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-crypto-1.1.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-dbcp-1.4.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-io-2.16.1.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-lang-2.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-lang3-3.12.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-logging-1.1.3.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-math3-3.6.1.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-pool-1.5.4.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/commons-text-1.10.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/hadoop-client-api-trimmed-3.3.4.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-annotations-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-core-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-core-asl-1.9.13.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-databind-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-dataformat-yaml-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-datatype-jsr310-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/jackson-module-scala_2.12-2.15.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/json4s-ast_2.12-3.7.0-M11.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/json4s-core_2.12-3.7.0-M11.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/json4s-jackson_2.12-3.7.0-M11.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/json4s-native_2.12-3.7.0-M11.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/json4s-scalap_2.12-3.7.0-M11.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/kryo-shaded-4.0.2.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/log4j-1.2-api-2.20.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/log4j-api-2.20.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/log4j-core-2.20.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/log4j-slf4j2-impl-2.20.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/paranamer-2.8.3.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/paranamer-2.8.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/sas-scala-udf_2.12-0.1.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/scala-collection-compat_2.12-2.7.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/scala-library-2.12.18.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/scala-parser-combinators_2.12-2.3.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/scala-reflect-2.12.18.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/scala-xml_2.12-2.1.0.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/slf4j-api-2.0.7.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-catalyst_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-common-utils_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-connect-client-jvm_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-core_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-graphx_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-hive-thriftserver_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-hive_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-kvstore_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-launcher_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-mesos_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-mllib-local_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-network-common_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-network-shuffle_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-repl_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-sketch_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-sql-api_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-sql_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-tags_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-unsafe_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/jars/spark-yarn_2.12-3.5.6.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/_globals.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/_typing.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/accumulators.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/broadcast.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/cloudpickle/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/cloudpickle/cloudpickle.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/cloudpickle/cloudpickle_fast.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/cloudpickle/compat.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/conf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/context.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/daemon.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/error_classes.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/exceptions/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/exceptions/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/exceptions/captured.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/exceptions/connect.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/errors/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/files.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/find_spark_home.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/install.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/instrumentation_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/java_gateway.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/join.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/_typing.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/classification.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/clustering.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/common.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/classification.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/evaluation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/feature.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/io_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/pipeline.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/summarizer.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/tuning.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/connect/util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/deepspeed/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/deepspeed/deepspeed_distributor.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/dl_util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/evaluation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/feature.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/fpm.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/image.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/linalg/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/model_cache.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/param/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/param/_shared_params_code_gen.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/param/shared.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/pipeline.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/recommendation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/regression.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/stat.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/torch/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/torch/data.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/torch/distributor.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/torch/log_communication.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/torch/torch_run_process_wrapper.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/tree.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/tuning.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/ml/wrapper.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/_typing.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/classification.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/clustering.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/common.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/evaluation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/feature.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/fpm.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/linalg/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/linalg/distributed.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/random.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/recommendation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/regression.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/stat/KernelDensity.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/stat/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/stat/_statistics.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/stat/distribution.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/stat/test.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/tree.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/mllib/util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/_typing.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/accessors.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/categorical.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/config.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/correlation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/binary_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/boolean_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/categorical_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/complex_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/date_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/datetime_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/null_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/num_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/string_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/timedelta_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/data_type_ops/udt_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/datetimes.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/exceptions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/extensions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/frame.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/generic.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/groupby.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/base.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/category.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/datetimes.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/multi.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/numeric.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexes/timedelta.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/indexing.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/internal.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/common.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/frame.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/general_functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/groupby.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/indexes.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/resample.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/scalars.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/series.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/missing/window.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/mlflow.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/namespace.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/numpy_compat.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/plot/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/plot/core.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/plot/matplotlib.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/plot/plotly.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/resample.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/series.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/sql_formatter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/sql_processor.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/strings.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/supported_api_gen.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/typedef/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/typedef/typehints.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/usage_logging/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/usage_logging/usage_logger.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/pandas/window.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/profiler.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/py.typed +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/python/pyspark/shell.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/rdd.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/rddsampler.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/resource/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/resource/information.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/resource/profile.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/resource/requests.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/resultiterable.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/serializers.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/shell.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/shuffle.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/_typing.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/avro/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/avro/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/catalog.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/column.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/conf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/_typing.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/avro/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/avro/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/catalog.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/client/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/client/artifact.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/client/core.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/client/reattach.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/column.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/conf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/conversion.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/dataframe.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/expressions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/group.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/plan.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/base_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/base_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/base_pb2_grpc.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/catalog_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/catalog_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/commands_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/commands_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/common_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/common_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/example_plugins_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/example_plugins_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/expressions_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/expressions_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/relations_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/relations_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/types_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/proto/types_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/protobuf/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/protobuf/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/readwriter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/session.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/query.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/readwriter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/worker/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/worker/foreach_batch_worker.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/streaming/worker/listener_worker.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/types.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/udf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/udtf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/connect/window.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/context.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/dataframe.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/group.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/observation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/_typing/__init__.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/_typing/protocols/__init__.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/_typing/protocols/frame.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/_typing/protocols/series.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/conversion.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/functions.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/group_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/map_ops.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/serializers.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/typehints.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/types.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/pandas/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/protobuf/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/protobuf/functions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/readwriter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/session.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/sql_formatter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/streaming/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/streaming/listener.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/streaming/query.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/streaming/readwriter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/streaming/state.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/types.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/udf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/udtf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/sql/window.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/statcounter.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/status.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/storagelevel.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/context.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/dstream.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/kinesis.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/listener.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/streaming/util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/taskcontext.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/connectutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/mllibutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/mlutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/objects.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/pandasutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/sqlutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/streamingutils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/testing/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/traceback_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/version.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/worker.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/includes/python/pyspark/worker_util.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/control_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/control_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/control_pb2_grpc.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/snowflake_rdd_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/proto/snowflake_relation_ext_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/catalogs/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/catalogs/abstract_spark_catalog.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/catalogs/snowflake_catalog.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/catalogs/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_aggregate.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_catalog.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_crosstab.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_extension.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_local_relation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_map_partitions.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_relation.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_sample_by.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_subquery_alias.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/map_udtf.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/jdbc_read_dbapi.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_jdbc.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_socket.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_table.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/map_read_text.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/reader_config.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/read/utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/stage_locator.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/write/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/write/jdbc_write_dbapi.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/relation/write/map_write_jdbc.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/resources/java_udfs-1.0-SNAPSHOT.jar +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/resources_initializer.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/start_server.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/tcm.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/typed_column.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/artifacts.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/cache.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/concurrent.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/context.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/env_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/external_udxf_cache.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/identifiers.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/interrupt.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/io_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/pandas_udtf_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/profiling.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/scala_udf_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/session.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/snowpark_connect_logging.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/temporary_view_cache.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udf_cache.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udf_helper.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udf_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udtf_helper.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udtf_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/udxf_import_utils.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/utils/xxhash64.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_decoder/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_decoder/_internal/proto/generated/DataframeProcessorMsg_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_decoder/_internal/proto/generated/DataframeProcessorMsg_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_decoder/dp_session.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_decoder/spark_decoder.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowpark_connect.egg-info/dependency_links.txt +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowpark_connect.egg-info/requires.txt +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowpark_connect.egg-info/top_level.txt +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/spark/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/spark/connect/__init__.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/spark/connect/envelope_pb2.py +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/spark/connect/envelope_pb2.pyi +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/tools/snowpark-connect +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/tools/snowpark-session +0 -0
- {snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/tools/snowpark-submit +0 -0
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
import pyspark.sql.connect.proto.base_pb2 as proto_base
|
|
6
6
|
|
|
7
7
|
from snowflake.snowpark_connect.relation.map_relation import map_relation
|
|
8
|
+
from snowflake.snowpark_connect.relation.read.metadata_utils import (
|
|
9
|
+
filter_metadata_columns,
|
|
10
|
+
)
|
|
8
11
|
from snowflake.snowpark_connect.type_mapping import (
|
|
9
12
|
SNOWPARK_TYPE_NAME_TO_PYSPARK_TYPE_NAME,
|
|
10
13
|
)
|
|
@@ -16,12 +19,13 @@ def map_tree_string(
|
|
|
16
19
|
# TODO: tracking the difference with pyspark in SNOW-1853347
|
|
17
20
|
tree_string = request.tree_string
|
|
18
21
|
snowpark_df_container = map_relation(tree_string.plan.root)
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
filtered_container = filter_metadata_columns(snowpark_df_container)
|
|
23
|
+
display_df = filtered_container.dataframe
|
|
24
|
+
filtered_column_mapping = filtered_container.column_map.snowpark_to_spark_map()
|
|
21
25
|
|
|
22
|
-
snowpark_tree_string =
|
|
26
|
+
snowpark_tree_string = display_df._format_schema(
|
|
23
27
|
level=tree_string.level if tree_string.HasField("level") else None,
|
|
24
|
-
translate_columns=
|
|
28
|
+
translate_columns=filtered_column_mapping,
|
|
25
29
|
translate_types=SNOWPARK_TYPE_NAME_TO_PYSPARK_TYPE_NAME,
|
|
26
30
|
)
|
|
27
31
|
# workaround for the capitalization of nullable boolean value.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
import zlib
|
|
6
|
+
|
|
7
|
+
from pyspark.sql import DataFrame, SparkSession
|
|
8
|
+
|
|
9
|
+
SQL_PASS_THROUGH_MARKER = "PRIVATE-SNOWFLAKE-SQL"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def calculate_checksum(data: str) -> str:
|
|
13
|
+
checksum = zlib.crc32(data.encode("utf-8"))
|
|
14
|
+
return format(checksum, "08X")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SnowflakeSession:
|
|
18
|
+
"""
|
|
19
|
+
Provides a wrapper around SparkSession to enable Snowflake SQL pass-through functionality.
|
|
20
|
+
Also provides helper methods to switch to different database, schema, role, warehouse, etc.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, spark_session: SparkSession) -> None:
|
|
24
|
+
self.spark_session = spark_session
|
|
25
|
+
|
|
26
|
+
def sql(self, sql_stmt: str) -> DataFrame:
|
|
27
|
+
"""
|
|
28
|
+
Execute Snowflake specific SQL directly against Snowflake.
|
|
29
|
+
"""
|
|
30
|
+
checksum = calculate_checksum(sql_stmt)
|
|
31
|
+
return self.spark_session.sql(
|
|
32
|
+
f"{SQL_PASS_THROUGH_MARKER} {checksum} {sql_stmt}"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def use_database(self, database: str, preserve_case: bool = False) -> DataFrame:
|
|
36
|
+
"""
|
|
37
|
+
Switch to the database specified by `database`.
|
|
38
|
+
"""
|
|
39
|
+
if preserve_case:
|
|
40
|
+
database = f'"{database}"'
|
|
41
|
+
return self.sql(f"USE DATABASE {database}")
|
|
42
|
+
|
|
43
|
+
def use_schema(self, schema: str, preserve_case: bool = False) -> DataFrame:
|
|
44
|
+
"""
|
|
45
|
+
Switch to the schema specified by `schema`.
|
|
46
|
+
"""
|
|
47
|
+
if preserve_case:
|
|
48
|
+
schema = f'"{schema}"'
|
|
49
|
+
return self.sql(f"USE SCHEMA {schema}")
|
|
50
|
+
|
|
51
|
+
def use_role(self, role: str, preserve_case: bool = False) -> DataFrame:
|
|
52
|
+
"""
|
|
53
|
+
Switch to the role specified by `role`.
|
|
54
|
+
"""
|
|
55
|
+
if preserve_case:
|
|
56
|
+
role = f'"{role}"'
|
|
57
|
+
return self.sql(f"USE ROLE {role}")
|
|
58
|
+
|
|
59
|
+
def use_warehouse(self, warehouse: str, preserve_case: bool = False) -> DataFrame:
|
|
60
|
+
"""
|
|
61
|
+
Switch to the warehouse specified by `warehouse`.
|
|
62
|
+
"""
|
|
63
|
+
if preserve_case:
|
|
64
|
+
warehouse = f'"{warehouse}"'
|
|
65
|
+
return self.sql(f"USE WAREHOUSE {warehouse}")
|
|
@@ -75,7 +75,13 @@ def make_column_names_snowpark_compatible(
|
|
|
75
75
|
In this case the function call should be `make_column_names_snowpark_compatible(['a', 'b'], 5, 2)`,
|
|
76
76
|
to avoid naming conflicts between the new columns and the old columns.
|
|
77
77
|
"""
|
|
78
|
+
from snowflake.snowpark_connect.relation.read.metadata_utils import (
|
|
79
|
+
METADATA_FILENAME_COLUMN,
|
|
80
|
+
)
|
|
81
|
+
|
|
78
82
|
return [
|
|
83
|
+
# Skip METADATA$FILENAME - preserve original name without quoting
|
|
84
|
+
name if name == METADATA_FILENAME_COLUMN else
|
|
79
85
|
# Use `-` in the name to force df.column to return double-quoted names
|
|
80
86
|
quote_name(f"{unquote_if_quoted(name)}-{plan_id:08x}-{i + offset}")
|
|
81
87
|
for i, name in enumerate(names)
|
{snowpark_connect-0.29.0 → snowpark_connect-0.30.1}/src/snowflake/snowpark_connect/config.py
RENAMED
|
@@ -143,6 +143,9 @@ class GlobalConfig:
|
|
|
143
143
|
# Control whether repartition(n) on a DataFrame forces splitting into n files during writes
|
|
144
144
|
# This matches spark behavior more closely, but introduces overhead.
|
|
145
145
|
"snowflake.repartition.for.writes": "false",
|
|
146
|
+
"snowpark.connect.structured_types.fix": str(
|
|
147
|
+
snowpark.context._enable_fix_2360274
|
|
148
|
+
).lower(),
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
boolean_config_list = [
|
|
@@ -263,9 +266,10 @@ SESSION_CONFIG_KEY_WHITELIST = {
|
|
|
263
266
|
"snowpark.connect.sql.identifiers.auto-uppercase",
|
|
264
267
|
"snowpark.connect.udtf.compatibility_mode",
|
|
265
268
|
"snowpark.connect.views.duplicate_column_names_handling_mode",
|
|
266
|
-
"enable_snowflake_extension_behavior",
|
|
269
|
+
"snowpark.connect.enable_snowflake_extension_behavior",
|
|
267
270
|
"spark.hadoop.fs.s3a.server-side-encryption.key",
|
|
268
271
|
"spark.hadoop.fs.s3a.assumed.role.arn",
|
|
272
|
+
"snowpark.connect.describe_cache_ttl_seconds",
|
|
269
273
|
}
|
|
270
274
|
AZURE_ACCOUNT_KEY = re.compile(
|
|
271
275
|
r"^fs\.azure\.sas\.[^\.]+\.[^\.]+\.blob\.core\.windows\.net$"
|
|
@@ -294,7 +298,8 @@ class SessionConfig:
|
|
|
294
298
|
"snowpark.connect.views.duplicate_column_names_handling_mode": "rename",
|
|
295
299
|
"spark.sql.execution.pythonUDTF.arrow.enabled": "false",
|
|
296
300
|
"spark.sql.tvf.allowMultipleTableArguments.enabled": "true",
|
|
297
|
-
"enable_snowflake_extension_behavior": "false",
|
|
301
|
+
"snowpark.connect.enable_snowflake_extension_behavior": "false",
|
|
302
|
+
"snowpark.connect.describe_cache_ttl_seconds": "300",
|
|
298
303
|
}
|
|
299
304
|
|
|
300
305
|
def __init__(self) -> None:
|
|
@@ -607,6 +612,21 @@ def get_cte_optimization_enabled() -> bool:
|
|
|
607
612
|
return get_boolean_session_config_param("snowpark.connect.cte.optimization_enabled")
|
|
608
613
|
|
|
609
614
|
|
|
615
|
+
def get_describe_cache_ttl_seconds() -> int:
|
|
616
|
+
"""Get the describe query cache TTL from session config, with a default fallback."""
|
|
617
|
+
session_config: SessionConfig = sessions_config[get_session_id()]
|
|
618
|
+
default_ttl: str = SessionConfig.default_session_config[
|
|
619
|
+
"snowpark.connect.describe_cache_ttl_seconds"
|
|
620
|
+
]
|
|
621
|
+
try:
|
|
622
|
+
ttl_str = session_config.get(
|
|
623
|
+
"snowpark.connect.describe_cache_ttl_seconds", default_ttl
|
|
624
|
+
)
|
|
625
|
+
return int(ttl_str)
|
|
626
|
+
except ValueError: # fallback to default ttl
|
|
627
|
+
return int(default_ttl)
|
|
628
|
+
|
|
629
|
+
|
|
610
630
|
def auto_uppercase_column_identifiers() -> bool:
|
|
611
631
|
session_config = sessions_config[get_session_id()]
|
|
612
632
|
return session_config[
|
|
@@ -710,7 +730,9 @@ def check_table_supports_operation(table_identifier: str, operation: str) -> boo
|
|
|
710
730
|
session_id = get_session_id()
|
|
711
731
|
session_config = sessions_config[session_id]
|
|
712
732
|
enable_extensions = str_to_bool(
|
|
713
|
-
session_config.get(
|
|
733
|
+
session_config.get(
|
|
734
|
+
"snowpark.connect.enable_snowflake_extension_behavior", "false"
|
|
735
|
+
)
|
|
714
736
|
)
|
|
715
737
|
|
|
716
738
|
if enable_extensions:
|
|
@@ -26,6 +26,9 @@ from snowflake.snowpark_connect.execute_plan.utils import (
|
|
|
26
26
|
pandas_to_arrow_batches_bytes,
|
|
27
27
|
)
|
|
28
28
|
from snowflake.snowpark_connect.relation.map_relation import map_relation
|
|
29
|
+
from snowflake.snowpark_connect.relation.read.metadata_utils import (
|
|
30
|
+
filter_metadata_columns,
|
|
31
|
+
)
|
|
29
32
|
from snowflake.snowpark_connect.type_mapping import (
|
|
30
33
|
map_snowpark_types_to_pyarrow_types,
|
|
31
34
|
snowpark_to_proto_type,
|
|
@@ -92,14 +95,19 @@ def map_execution_root(
|
|
|
92
95
|
) -> Iterator[proto_base.ExecutePlanResponse | QueryResult]:
|
|
93
96
|
result: DataFrameContainer | pandas.DataFrame = map_relation(request.plan.root)
|
|
94
97
|
if isinstance(result, pandas.DataFrame):
|
|
95
|
-
|
|
98
|
+
pandas_df = result
|
|
99
|
+
data_bytes = pandas_to_arrow_batches_bytes(pandas_df)
|
|
100
|
+
row_count = len(pandas_df)
|
|
101
|
+
schema = None
|
|
102
|
+
yield _build_execute_plan_response(row_count, data_bytes, schema, request)
|
|
96
103
|
else:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
filtered_result = filter_metadata_columns(result)
|
|
105
|
+
filtered_result_df = filtered_result.dataframe
|
|
106
|
+
snowpark_schema = filtered_result_df.schema
|
|
107
|
+
schema = snowpark_to_proto_type(
|
|
108
|
+
snowpark_schema, filtered_result.column_map, filtered_result_df
|
|
109
|
+
)
|
|
110
|
+
spark_columns = filtered_result.column_map.get_spark_columns()
|
|
103
111
|
if tcm.TCM_MODE:
|
|
104
112
|
# TCM result handling:
|
|
105
113
|
# - small result (only one batch): just return the executePlanResponse
|
|
@@ -108,22 +116,22 @@ def map_execution_root(
|
|
|
108
116
|
is_large_result = False
|
|
109
117
|
second_batch = False
|
|
110
118
|
first_arrow_table = None
|
|
111
|
-
with
|
|
112
|
-
for arrow_table in to_arrow_batch_iter(
|
|
119
|
+
with filtered_result_df.session.query_history() as qh:
|
|
120
|
+
for arrow_table in to_arrow_batch_iter(filtered_result_df):
|
|
113
121
|
if second_batch:
|
|
114
122
|
is_large_result = True
|
|
115
123
|
break
|
|
116
124
|
first_arrow_table = arrow_table
|
|
117
125
|
second_batch = True
|
|
118
126
|
queries_cnt = len(
|
|
119
|
-
|
|
127
|
+
filtered_result_df._plan.execution_queries[PlanQueryType.QUERIES]
|
|
120
128
|
)
|
|
121
129
|
# get query uuid from the last query; this may not be the last queries in query history because snowpark
|
|
122
130
|
# may run some post action queries, e.g., drop temp table.
|
|
123
131
|
query_id = qh.queries[queries_cnt - 1].query_id
|
|
124
132
|
if first_arrow_table is None:
|
|
125
133
|
# empty arrow batch iterator
|
|
126
|
-
pandas_df =
|
|
134
|
+
pandas_df = filtered_result_df.to_pandas()
|
|
127
135
|
data_bytes = pandas_to_arrow_batches_bytes(pandas_df)
|
|
128
136
|
yield _build_execute_plan_response(0, data_bytes, schema, request)
|
|
129
137
|
elif not tcm.TCM_RETURN_QUERY_ID_FOR_SMALL_RESULT and not is_large_result:
|
|
@@ -150,7 +158,7 @@ def map_execution_root(
|
|
|
150
158
|
spark_schema.SerializeToString(),
|
|
151
159
|
)
|
|
152
160
|
else:
|
|
153
|
-
arrow_table_iter = to_arrow_batch_iter(
|
|
161
|
+
arrow_table_iter = to_arrow_batch_iter(filtered_result_df)
|
|
154
162
|
batch_count = 0
|
|
155
163
|
for arrow_table in arrow_table_iter:
|
|
156
164
|
if arrow_table.num_rows > 0:
|
|
@@ -166,12 +174,6 @@ def map_execution_root(
|
|
|
166
174
|
|
|
167
175
|
# Empty result needs special processing
|
|
168
176
|
if batch_count == 0:
|
|
169
|
-
pandas_df =
|
|
177
|
+
pandas_df = filtered_result_df.to_pandas()
|
|
170
178
|
data_bytes = pandas_to_arrow_batches_bytes(pandas_df)
|
|
171
179
|
yield _build_execute_plan_response(0, data_bytes, schema, request)
|
|
172
|
-
else:
|
|
173
|
-
pandas_df = result_df
|
|
174
|
-
data_bytes = pandas_to_arrow_batches_bytes(pandas_df)
|
|
175
|
-
row_count = len(pandas_df)
|
|
176
|
-
schema = None
|
|
177
|
-
yield _build_execute_plan_response(row_count, data_bytes, schema, request)
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2012-2025 Snowflake Computing Inc. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
import pyspark.sql.connect.proto.expressions_pb2 as expressions_proto
|
|
6
|
+
|
|
7
|
+
import snowflake.snowpark.functions as snowpark_fn
|
|
8
|
+
import snowflake.snowpark_connect.proto.snowflake_expression_ext_pb2 as snowflake_proto
|
|
9
|
+
from snowflake.snowpark.types import (
|
|
10
|
+
BooleanType,
|
|
11
|
+
DayTimeIntervalType,
|
|
12
|
+
StringType,
|
|
13
|
+
YearMonthIntervalType,
|
|
14
|
+
)
|
|
15
|
+
from snowflake.snowpark_connect.column_name_handler import ColumnNameMap
|
|
16
|
+
from snowflake.snowpark_connect.expression.typer import ExpressionTyper
|
|
17
|
+
from snowflake.snowpark_connect.typed_column import TypedColumn
|
|
18
|
+
from snowflake.snowpark_connect.utils.context import (
|
|
19
|
+
push_evaluating_sql_scope,
|
|
20
|
+
push_outer_dataframe,
|
|
21
|
+
)
|
|
22
|
+
from snowflake.snowpark_connect.utils.telemetry import (
|
|
23
|
+
SnowparkConnectNotImplementedError,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Formatting constants for interval display
|
|
27
|
+
_TWO_DIGIT_FORMAT = (
|
|
28
|
+
"{:02d}" # Zero-padded 2-digit format for hours, minutes, and whole seconds
|
|
29
|
+
)
|
|
30
|
+
_THREE_DIGIT_FORMAT = (
|
|
31
|
+
"{:03d}" # Zero-padded 3-digit format for hours/minutes and whole seconds
|
|
32
|
+
)
|
|
33
|
+
_SECONDS_PRECISION_FORMAT = (
|
|
34
|
+
"{:09.6f}" # 6 decimal places with leading zeros for seconds
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _format_time_component(value: int, is_negative: bool = False) -> str:
|
|
39
|
+
"""Format a time component (hours, minutes, whole seconds) with proper zero-padding."""
|
|
40
|
+
if is_negative:
|
|
41
|
+
return _THREE_DIGIT_FORMAT.format(value)
|
|
42
|
+
else:
|
|
43
|
+
return _TWO_DIGIT_FORMAT.format(value)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _format_seconds_precise(seconds: float) -> str:
|
|
47
|
+
"""Format seconds with full precision, stripping trailing zeros."""
|
|
48
|
+
return _SECONDS_PRECISION_FORMAT.format(seconds).rstrip("0").rstrip(".")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def map_extension(
|
|
52
|
+
exp: expressions_proto.Expression,
|
|
53
|
+
column_mapping: ColumnNameMap,
|
|
54
|
+
typer: ExpressionTyper,
|
|
55
|
+
) -> tuple[list[str], TypedColumn]:
|
|
56
|
+
"""
|
|
57
|
+
The Extension relation type contains any extensions we use for adding new
|
|
58
|
+
functionality to Spark Connect.
|
|
59
|
+
|
|
60
|
+
The extension will require new protobuf messages to be defined in the
|
|
61
|
+
snowflake_connect_server/proto directory.
|
|
62
|
+
"""
|
|
63
|
+
extension = snowflake_proto.ExpExtension()
|
|
64
|
+
exp.extension.Unpack(extension)
|
|
65
|
+
match extension.WhichOneof("op"):
|
|
66
|
+
case "named_argument":
|
|
67
|
+
from snowflake.snowpark_connect.expression.map_expression import (
|
|
68
|
+
map_expression,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
named_argument = extension.named_argument
|
|
72
|
+
key = named_argument.key
|
|
73
|
+
value = named_argument.value
|
|
74
|
+
|
|
75
|
+
exp_name, typed_col = map_expression(value, column_mapping, typer)
|
|
76
|
+
if value.HasField("literal"):
|
|
77
|
+
name = key
|
|
78
|
+
elif value.HasField("unresolved_attribute"):
|
|
79
|
+
name = "__" + key + "__" + exp_name[0]
|
|
80
|
+
else:
|
|
81
|
+
raise SnowparkConnectNotImplementedError(
|
|
82
|
+
"Named argument not supported yet for this input."
|
|
83
|
+
)
|
|
84
|
+
return [name], typed_col
|
|
85
|
+
|
|
86
|
+
case "interval_literal":
|
|
87
|
+
interval_ext = extension.interval_literal
|
|
88
|
+
literal = interval_ext.literal
|
|
89
|
+
start_field = (
|
|
90
|
+
interval_ext.start_field
|
|
91
|
+
if interval_ext.HasField("start_field")
|
|
92
|
+
else None
|
|
93
|
+
)
|
|
94
|
+
end_field = (
|
|
95
|
+
interval_ext.end_field if interval_ext.HasField("end_field") else None
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Format interval with proper context-aware formatting
|
|
99
|
+
if literal.HasField("year_month_interval"):
|
|
100
|
+
total_months = literal.year_month_interval
|
|
101
|
+
lit_value, lit_name = _format_year_month_interval(
|
|
102
|
+
total_months, start_field, end_field
|
|
103
|
+
)
|
|
104
|
+
if start_field is not None and end_field is not None:
|
|
105
|
+
interval_data_type = YearMonthIntervalType(start_field, end_field)
|
|
106
|
+
else:
|
|
107
|
+
interval_data_type = YearMonthIntervalType()
|
|
108
|
+
|
|
109
|
+
# Create column using SQL expression with context-aware formatting
|
|
110
|
+
col = snowpark_fn.sql_expr(lit_value)
|
|
111
|
+
|
|
112
|
+
elif literal.HasField("day_time_interval"):
|
|
113
|
+
total_microseconds = literal.day_time_interval
|
|
114
|
+
lit_value, lit_name = _format_day_time_interval(
|
|
115
|
+
total_microseconds, start_field, end_field
|
|
116
|
+
)
|
|
117
|
+
if start_field is not None and end_field is not None:
|
|
118
|
+
interval_data_type = DayTimeIntervalType(start_field, end_field)
|
|
119
|
+
else:
|
|
120
|
+
interval_data_type = DayTimeIntervalType()
|
|
121
|
+
|
|
122
|
+
# Create column using SQL expression to get proper interval type (same as year-month)
|
|
123
|
+
col = snowpark_fn.sql_expr(lit_value)
|
|
124
|
+
|
|
125
|
+
else:
|
|
126
|
+
# Fallback - shouldn't happen
|
|
127
|
+
lit_value = str(literal)
|
|
128
|
+
lit_name = str(literal)
|
|
129
|
+
interval_data_type = StringType()
|
|
130
|
+
col = snowpark_fn.lit(lit_value)
|
|
131
|
+
|
|
132
|
+
typed_col = TypedColumn(col, lambda: [interval_data_type])
|
|
133
|
+
|
|
134
|
+
return [lit_name], typed_col
|
|
135
|
+
|
|
136
|
+
case "subquery_expression":
|
|
137
|
+
from snowflake.snowpark_connect.dataframe_container import (
|
|
138
|
+
DataFrameContainer,
|
|
139
|
+
)
|
|
140
|
+
from snowflake.snowpark_connect.expression.map_expression import (
|
|
141
|
+
map_expression,
|
|
142
|
+
)
|
|
143
|
+
from snowflake.snowpark_connect.relation.map_relation import map_relation
|
|
144
|
+
|
|
145
|
+
current_outer_df = DataFrameContainer(
|
|
146
|
+
dataframe=typer.df, column_map=column_mapping
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
with push_evaluating_sql_scope(), push_outer_dataframe(current_outer_df):
|
|
150
|
+
df_container = map_relation(extension.subquery_expression.input)
|
|
151
|
+
df = df_container.dataframe
|
|
152
|
+
|
|
153
|
+
queries = df.queries["queries"]
|
|
154
|
+
if len(queries) != 1:
|
|
155
|
+
raise SnowparkConnectNotImplementedError(
|
|
156
|
+
f"Unexpected number of queries: {len(queries)}"
|
|
157
|
+
)
|
|
158
|
+
query = f"({queries[0]})"
|
|
159
|
+
|
|
160
|
+
match extension.subquery_expression.subquery_type:
|
|
161
|
+
case snowflake_proto.SubqueryExpression.SUBQUERY_TYPE_SCALAR:
|
|
162
|
+
name = "scalarsubquery()"
|
|
163
|
+
result_exp = snowpark_fn.expr(query)
|
|
164
|
+
result_type = df.schema[0].datatype
|
|
165
|
+
case snowflake_proto.SubqueryExpression.SUBQUERY_TYPE_EXISTS:
|
|
166
|
+
name = "exists()"
|
|
167
|
+
result_exp = snowpark_fn.expr(f"(EXISTS {query})")
|
|
168
|
+
result_type = BooleanType()
|
|
169
|
+
case snowflake_proto.SubqueryExpression.SUBQUERY_TYPE_TABLE_ARG:
|
|
170
|
+
# TODO: Currently, map_sql.py handles this, so we never end up here.
|
|
171
|
+
raise SnowparkConnectNotImplementedError("Unexpected table arg")
|
|
172
|
+
case snowflake_proto.SubqueryExpression.SUBQUERY_TYPE_IN:
|
|
173
|
+
cols = [
|
|
174
|
+
map_expression(e, column_mapping, typer)
|
|
175
|
+
for e in extension.subquery_expression.in_subquery_values
|
|
176
|
+
]
|
|
177
|
+
col_names_str = ", ".join(
|
|
178
|
+
col_name for col_names, _ in cols for col_name in col_names
|
|
179
|
+
)
|
|
180
|
+
# TODO: Figure out how to make a named_struct(...) here to match Spark.
|
|
181
|
+
name = f"({col_names_str}) in (listquery())"
|
|
182
|
+
result_exp = snowpark_fn.in_(
|
|
183
|
+
[col.col for _, col in cols], snowpark_fn.expr(query)
|
|
184
|
+
)
|
|
185
|
+
result_type = BooleanType()
|
|
186
|
+
case other:
|
|
187
|
+
raise SnowparkConnectNotImplementedError(
|
|
188
|
+
f"Unexpected subquery type: {other}"
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
return [name], TypedColumn(result_exp, lambda: [result_type])
|
|
192
|
+
|
|
193
|
+
case other:
|
|
194
|
+
raise SnowparkConnectNotImplementedError(f"Unexpected extension {other}")
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _format_year_month_interval(
|
|
198
|
+
total_months: int, start_field: int | None, end_field: int | None
|
|
199
|
+
) -> tuple[str, str]:
|
|
200
|
+
"""Format year-month interval with context-aware precision."""
|
|
201
|
+
|
|
202
|
+
# Calculate years and months from absolute value
|
|
203
|
+
is_negative = total_months < 0
|
|
204
|
+
abs_months = abs(total_months)
|
|
205
|
+
years = abs_months // 12
|
|
206
|
+
months = abs_months % 12
|
|
207
|
+
|
|
208
|
+
# Determine interval type
|
|
209
|
+
is_year_only = (
|
|
210
|
+
start_field == YearMonthIntervalType.YEAR
|
|
211
|
+
and end_field == YearMonthIntervalType.YEAR
|
|
212
|
+
)
|
|
213
|
+
is_month_only = (
|
|
214
|
+
start_field == YearMonthIntervalType.MONTH
|
|
215
|
+
and end_field == YearMonthIntervalType.MONTH
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
# Format based on type and sign
|
|
219
|
+
if is_year_only:
|
|
220
|
+
sign = "-" if is_negative else ""
|
|
221
|
+
str_value = f"INTERVAL '{sign}{years}' YEAR"
|
|
222
|
+
elif is_month_only:
|
|
223
|
+
str_value = f"INTERVAL '{total_months}' MONTH" # Keep original sign
|
|
224
|
+
else: # YEAR TO MONTH (default)
|
|
225
|
+
if is_negative:
|
|
226
|
+
str_value = f"INTERVAL '-{years}-{months}' YEAR TO MONTH"
|
|
227
|
+
else:
|
|
228
|
+
str_value = f"INTERVAL '{years}-{months}' YEAR TO MONTH"
|
|
229
|
+
|
|
230
|
+
return str_value, str_value
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def _format_day_time_interval(
|
|
234
|
+
total_microseconds: int, start_field: int | None, end_field: int | None
|
|
235
|
+
) -> tuple[str, str]:
|
|
236
|
+
"""Format day-time interval with context-aware precision."""
|
|
237
|
+
total_seconds = total_microseconds / 1_000_000
|
|
238
|
+
|
|
239
|
+
# Handle negative intervals correctly
|
|
240
|
+
is_negative = total_seconds < 0
|
|
241
|
+
|
|
242
|
+
# Work with integer microseconds to preserve precision
|
|
243
|
+
abs_total_microseconds = abs(total_microseconds)
|
|
244
|
+
|
|
245
|
+
# Convert to components using integer arithmetic
|
|
246
|
+
days = int(abs_total_microseconds // (86400 * 1_000_000))
|
|
247
|
+
remaining_microseconds = abs_total_microseconds % (86400 * 1_000_000)
|
|
248
|
+
hours = int(remaining_microseconds // (3600 * 1_000_000))
|
|
249
|
+
remaining_microseconds = remaining_microseconds % (3600 * 1_000_000)
|
|
250
|
+
minutes = int(remaining_microseconds // (60 * 1_000_000))
|
|
251
|
+
remaining_microseconds = remaining_microseconds % (60 * 1_000_000)
|
|
252
|
+
|
|
253
|
+
# Convert final microseconds to seconds with full precision
|
|
254
|
+
seconds = remaining_microseconds / 1_000_000
|
|
255
|
+
|
|
256
|
+
# Apply negative sign back to days if needed
|
|
257
|
+
if is_negative:
|
|
258
|
+
days = -days
|
|
259
|
+
|
|
260
|
+
# Format based on the specific start/end field context
|
|
261
|
+
if (
|
|
262
|
+
start_field == DayTimeIntervalType.DAY and end_field == DayTimeIntervalType.DAY
|
|
263
|
+
): # DAY only
|
|
264
|
+
str_value = f"INTERVAL '{days}' DAY"
|
|
265
|
+
elif (
|
|
266
|
+
start_field == DayTimeIntervalType.HOUR
|
|
267
|
+
and end_field == DayTimeIntervalType.HOUR
|
|
268
|
+
): # HOUR only
|
|
269
|
+
# For HOUR-only intervals, calculate total hours (don't break down into days)
|
|
270
|
+
total_hours = int(abs(total_microseconds) // (3600 * 1_000_000))
|
|
271
|
+
if total_microseconds < 0:
|
|
272
|
+
total_hours = -total_hours
|
|
273
|
+
if total_hours >= 0:
|
|
274
|
+
str_value = f"INTERVAL '{_TWO_DIGIT_FORMAT.format(total_hours)}' HOUR"
|
|
275
|
+
else:
|
|
276
|
+
str_value = f"INTERVAL '{_THREE_DIGIT_FORMAT.format(total_hours)}' HOUR"
|
|
277
|
+
elif (
|
|
278
|
+
start_field == DayTimeIntervalType.MINUTE
|
|
279
|
+
and end_field == DayTimeIntervalType.MINUTE
|
|
280
|
+
): # MINUTE only
|
|
281
|
+
# For MINUTE-only intervals, calculate total minutes (don't break down into hours/days)
|
|
282
|
+
total_minutes = int(abs(total_microseconds) // (60 * 1_000_000))
|
|
283
|
+
if total_microseconds < 0:
|
|
284
|
+
total_minutes = -total_minutes
|
|
285
|
+
if total_minutes >= 0:
|
|
286
|
+
str_value = f"INTERVAL '{_TWO_DIGIT_FORMAT.format(total_minutes)}' MINUTE"
|
|
287
|
+
else:
|
|
288
|
+
str_value = f"INTERVAL '{_THREE_DIGIT_FORMAT.format(total_minutes)}' MINUTE"
|
|
289
|
+
elif (
|
|
290
|
+
start_field == DayTimeIntervalType.SECOND
|
|
291
|
+
and end_field == DayTimeIntervalType.SECOND
|
|
292
|
+
): # SECOND only
|
|
293
|
+
# For SECOND-only intervals, use total seconds (don't break down into minutes/hours/days)
|
|
294
|
+
total_seconds_precise = total_microseconds / 1_000_000
|
|
295
|
+
if total_seconds_precise == int(total_seconds_precise):
|
|
296
|
+
if total_seconds_precise >= 0:
|
|
297
|
+
str_value = f"INTERVAL '{_TWO_DIGIT_FORMAT.format(int(total_seconds_precise))}' SECOND"
|
|
298
|
+
else:
|
|
299
|
+
str_value = f"INTERVAL '{_THREE_DIGIT_FORMAT.format(int(total_seconds_precise))}' SECOND"
|
|
300
|
+
else:
|
|
301
|
+
seconds_str = _format_seconds_precise(total_seconds_precise)
|
|
302
|
+
str_value = f"INTERVAL '{seconds_str}' SECOND"
|
|
303
|
+
elif (
|
|
304
|
+
start_field == DayTimeIntervalType.MINUTE
|
|
305
|
+
and end_field == DayTimeIntervalType.SECOND
|
|
306
|
+
): # MINUTE TO SECOND
|
|
307
|
+
# For MINUTE TO SECOND intervals, calculate total minutes and remaining seconds
|
|
308
|
+
total_minutes = int(abs_total_microseconds // (60 * 1_000_000))
|
|
309
|
+
remaining_microseconds_for_minutes = abs_total_microseconds % (60 * 1_000_000)
|
|
310
|
+
remaining_seconds_for_minutes = remaining_microseconds_for_minutes / 1_000_000
|
|
311
|
+
|
|
312
|
+
# Format seconds appropriately (whole or fractional)
|
|
313
|
+
if remaining_seconds_for_minutes == int(remaining_seconds_for_minutes):
|
|
314
|
+
seconds_str = _TWO_DIGIT_FORMAT.format(int(remaining_seconds_for_minutes))
|
|
315
|
+
else:
|
|
316
|
+
seconds_str = _format_seconds_precise(remaining_seconds_for_minutes)
|
|
317
|
+
|
|
318
|
+
# Apply sign and format
|
|
319
|
+
if is_negative:
|
|
320
|
+
str_value = f"INTERVAL '-{_TWO_DIGIT_FORMAT.format(total_minutes)}:{seconds_str}' MINUTE TO SECOND"
|
|
321
|
+
else:
|
|
322
|
+
str_value = f"INTERVAL '{_TWO_DIGIT_FORMAT.format(total_minutes)}:{seconds_str}' MINUTE TO SECOND"
|
|
323
|
+
elif (
|
|
324
|
+
start_field == DayTimeIntervalType.HOUR
|
|
325
|
+
and end_field == DayTimeIntervalType.MINUTE
|
|
326
|
+
): # HOUR TO MINUTE
|
|
327
|
+
str_value = f"INTERVAL '{_TWO_DIGIT_FORMAT.format(hours)}:{_TWO_DIGIT_FORMAT.format(minutes)}' HOUR TO MINUTE"
|
|
328
|
+
elif (
|
|
329
|
+
start_field == DayTimeIntervalType.HOUR
|
|
330
|
+
and end_field == DayTimeIntervalType.SECOND
|
|
331
|
+
): # HOUR TO SECOND
|
|
332
|
+
if seconds == int(seconds):
|
|
333
|
+
str_value = f"INTERVAL '{_format_time_component(hours)}:{_format_time_component(minutes)}:{_format_time_component(int(seconds))}' HOUR TO SECOND"
|
|
334
|
+
else:
|
|
335
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
336
|
+
str_value = f"INTERVAL '{_format_time_component(hours)}:{_format_time_component(minutes)}:{seconds_str}' HOUR TO SECOND"
|
|
337
|
+
elif (
|
|
338
|
+
start_field == DayTimeIntervalType.DAY and end_field == DayTimeIntervalType.HOUR
|
|
339
|
+
): # DAY TO HOUR
|
|
340
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}' DAY TO HOUR"
|
|
341
|
+
elif (
|
|
342
|
+
start_field == DayTimeIntervalType.DAY
|
|
343
|
+
and end_field == DayTimeIntervalType.MINUTE
|
|
344
|
+
): # DAY TO MINUTE
|
|
345
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}:{_format_time_component(minutes)}' DAY TO MINUTE"
|
|
346
|
+
elif (
|
|
347
|
+
start_field == DayTimeIntervalType.DAY
|
|
348
|
+
and end_field == DayTimeIntervalType.SECOND
|
|
349
|
+
): # DAY TO SECOND
|
|
350
|
+
if seconds == int(seconds):
|
|
351
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}:{_format_time_component(minutes)}:{_format_time_component(int(seconds))}' DAY TO SECOND"
|
|
352
|
+
else:
|
|
353
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
354
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}:{_format_time_component(minutes)}:{seconds_str}' DAY TO SECOND"
|
|
355
|
+
else:
|
|
356
|
+
# Fallback - use smart formatting like the original literal.py logic
|
|
357
|
+
if days > 0:
|
|
358
|
+
if hours == 0 and minutes == 0 and seconds == 0:
|
|
359
|
+
str_value = f"INTERVAL '{int(days)}' DAY"
|
|
360
|
+
else:
|
|
361
|
+
if seconds == int(seconds):
|
|
362
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}:{_format_time_component(minutes)}:{_format_time_component(int(seconds))}' DAY TO SECOND"
|
|
363
|
+
else:
|
|
364
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
365
|
+
str_value = f"INTERVAL '{days} {_format_time_component(hours)}:{_format_time_component(minutes)}:{seconds_str}' DAY TO SECOND"
|
|
366
|
+
elif hours > 0:
|
|
367
|
+
if minutes == 0 and seconds == 0:
|
|
368
|
+
str_value = f"INTERVAL '{_format_time_component(hours)}' HOUR"
|
|
369
|
+
else:
|
|
370
|
+
if seconds == int(seconds):
|
|
371
|
+
str_value = f"INTERVAL '{_format_time_component(hours)}:{_format_time_component(minutes)}:{_format_time_component(int(seconds))}' HOUR TO SECOND"
|
|
372
|
+
else:
|
|
373
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
374
|
+
str_value = f"INTERVAL '{_format_time_component(hours)}:{_format_time_component(minutes)}:{seconds_str}' HOUR TO SECOND"
|
|
375
|
+
elif minutes > 0:
|
|
376
|
+
if seconds == 0:
|
|
377
|
+
str_value = f"INTERVAL '{_format_time_component(minutes)}' MINUTE"
|
|
378
|
+
else:
|
|
379
|
+
if seconds == int(seconds):
|
|
380
|
+
str_value = f"INTERVAL '{_format_time_component(minutes)}:{_format_time_component(int(seconds))}' MINUTE TO SECOND"
|
|
381
|
+
else:
|
|
382
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
383
|
+
str_value = f"INTERVAL '{_format_time_component(minutes)}:{seconds_str}' MINUTE TO SECOND"
|
|
384
|
+
else:
|
|
385
|
+
if seconds == int(seconds):
|
|
386
|
+
str_value = f"INTERVAL '{_format_time_component(int(seconds))}' SECOND"
|
|
387
|
+
else:
|
|
388
|
+
seconds_str = _format_seconds_precise(seconds)
|
|
389
|
+
str_value = f"INTERVAL '{seconds_str}' SECOND"
|
|
390
|
+
|
|
391
|
+
return str_value, str_value
|