Snowpark Library for Python release notes for 2025¶
This article contains the release notes for the Snowpark Library for Python, including the following when applicable:
Behavior changes
New features
Customer-facing bug fixes
Snowflake uses semantic versioning for Snowpark Library for Python updates.
See Snowpark Developer Guide for Python for documentation.
- warning:
As Python 3.8 has reached its End of Life, deprecation warnings will be triggered when using snowpark-python with Python 3.8. For more details, see Snowflake Python Runtime Support. Snowpark Python 1.24.0 will be the last client and server version to support Python 3.8, in accordance with Anaconda’s policy. Upgrade your existing Python 3.8 objects to Python 3.9 or greater.
Version 1.29.1 (2025-03-12)¶
Bug fixes¶
Fixed a bug in
DataFrameReader.dbapi
(private preview) that prevents usage in stored procedures and Snowbooks.
Version 1.29.0 (2025-03-05)¶
New features¶
Added support for the following AI-powered functions in
functions.py
(Private Preview):ai_filter
ai_agg
summarize_agg
Added support for the new FILE SQL type, with the following related functions in
functions.py
(Private Preview):
fl_get_content_type
fl_get_etag
fl_get_file_type
fl_get_last_modified
fl_get_relative_path
fl_get_scoped_file_url
fl_get_size
fl_get_stage
fl_get_stage_file_url
fl_is_audio
fl_is_compressed
fl_is_document
fl_is_image
fl_is_video
Added support for importing third-party packages from PyPi using Artifact Repository (Private Preview):
Use keyword arguments
artifact_repository
andartifact_repository_packages
to specify your artifact repository and packages respectively when registering stored procedures or user defined functions.Supported APIs are:
Session.sproc.register
Session.udf.register
Session.udaf.register
Session.udtf.register
functions.sproc
functions.udf
functions.udaf
functions.udtf
functions.pandas_udf
functions.pandas_udtf
Improvements¶
Improved version validation warnings for
snowflake-snowpark-python
package compatibility when registering stored procedures. Now, warnings are only triggered if the major or minor version does not match, while bugfix version differences no longer generate warnings.Bumped cloudpickle dependency to also support
cloudpickle==3.0.0
in addition to previous versions.
Bug fixes¶
Fixed a bug where creating a Dataframe with large number of values raised
Unsupported feature 'SCOPED_TEMPORARY'.
error if thread-safe session was disabled.Fixed a bug where
df.describe
raised internal SQL execution error when the dataframe is created from reading a stage file and CTE optimization is enabled.Fixed a bug where
df.order_by(A).select(B).distinct()
would generate invalid SQL when simplified query generation was enabled usingsession.conf.set("use_simplified_query_generation", True)
Disabled simplified query generation by default.
Snowpark pandas API updates¶
Improvements¶
Improve error message for
pd.to_snowflake
,DataFrame.to_snowflake
, andSeries.to_snowflake
when the table does not exist.Improve readability of docstring for the
if_exists
parameter inpd.to_snowflake
,DataFrame.to_snowflake
, andSeries.to_snowflake
.Improve error message for all pandas functions that use UDFs with Snowpark objects.
Bug fixes¶
Fixed a bug in
Series.rename_axis
where anAttributeError
was being raised.Fixed a bug where
pd.get_dummies
didn’t ignore NULL/NaN values by default.Fixed a bug where repeated calls to
pd.get_dummies
results in ‘Duplicated column name error’.Fixed a bug in
pd.get_dummies
where passing list of columns generated incorrect column labels in output DataFrame.Update
pd.get_dummies
to return bool values instead of int.
Snowpark local testing updates¶
New features¶
Added support for literal values to
range_between
window function.
Version 1.28.0 (2025-02-20)¶
New features¶
Added support for the following functions in
functions.py
normal
randn
Added support for
allow_missing_columns
parameter toDataframe.union_by_name
andDataframe.union_all_by_name
.
Improvements¶
Improved random object name generation to avoid collisions.
Improved query generation for
Dataframe.distinct
to generate SELECT DISTINCT instead of SELECT with GROUP BY all columns. To disable this feature, setsession.conf.set("use_simplified_query_generation", False)
.
Deprecations¶
Deprecated Snowpark Python function
snowflake_cortex_summarize
. Users can installsnowflake-ml-python
and use thesnowflake.cortex.summarize
function instead.Deprecated Snowpark Python function
snowflake_cortex_sentiment
. Users can installsnowflake-ml-python
and use thesnowflake.cortex.sentiment
function instead.
Bug fixes¶
Fixed a bug where session-level query tag was overwritten by a stack trace for DataFrames that generate multiple queries. Now, the query tag will only be set to the stacktrace if
session.conf.set("collect_stacktrace_in_query_tag", True)
.Fixed a bug in
Session._write_pandas
where it was erroneously passinguse_logical_type
parameter toSession._write_modin_pandas_helper
when writing a Snowpark pandas object.Fixed a bug in options SQL generation that could cause multiple values to be formatted incorrectly.
Fixed a bug in
Session.catalog
where empty strings for database or schema were not handled correctly and were generating erroneous SQL statements.
Experimental Features¶
Added support for writing pyarrow Tables to Snowflake tables.
Snowpark pandas API updates¶
New features¶
Added support for applying Snowflake Cortex functions
Summarize
andSentiment
.Added support for list values in
Series.str.get
.
Bug fixes¶
Fixed a bug in
apply
where kwargs were not being correctly passed into the applied function.
Snowpark local testing updates¶
New features¶
- Added support for the following functions
hour
minute
Added support for NULL_IF parameter to CSV reader.
Added support for
date_format
,datetime_format
, andtimestamp_format
options when loading CSVs.
Bug fixes¶
Fixed a bug in
DataFrame.join
that caused columns to have incorrect typing.Fixed a bug in
when
statements that caused incorrect results in theotherwise
clause.
Version 1.27.0 (2025-02-05)¶
New features¶
Added support for the following functions in functions.py
:
array_reverse
divnull
map_cat
map_contains_key
map_keys
nullifzero
snowflake_cortex_sentiment
acosh
asinh
atanh
bit_length
bitmap_bit_position
bitmap_bucket_number
bitmap_construct_agg
cbrt
equal_null
from_json
ifnull
localtimestamp
max_by
min_by
nth_value
nvl
octet_length
position
regr_avgx
regr_avgy
regr_count
regr_intercept
regr_r2
regr_slope
regr_sxx
regr_sxy
regr_syy
try_to_binary
base64
base64_decode_string
base64_encode
editdistance
hex
hex_encode
instr
log1p
log2
log10
percentile_approx
unbase64
Added support for specifying a schema string (including implicit struct syntax) when calling
DataFrame.create_dataframe
.Added support for
DataFrameWriter.insert_into/insertInto
. This method also supports local testing mode.Added support for
DataFrame.create_temp_view
to create a temporary view. It will fail if the view already exists.Added support for multiple columns in the functions
map_cat
andmap_concat
.Added an option
keep_column_order
for keeping original column order inDataFrame.with_column
andDataFrame.with_columns
.Added options to column casts that allow renaming or adding fields in
StructType
columns.Added support for
contains_null parameter
toArrayType
.Added support for creating a temporary view via
DataFrame.create_or_replace_temp_view
from a DataFrame created by reading a file from a stage.Added support for
value_contains_null
parameter toMapType
.Added interactive to telemetry that indicates whether the current environment is an interactive one.
Allow
session.file.get
in a Native App to read file paths starting with / from the current versionAdded support for multiple aggregation functions after
DataFrame.pivot
.
Experimental features¶
Added
Session.catalog
class to manage Snowflake objects. It can be accessed viaSession.catalog
.snowflake.core
is a dependency required for this feature.
Allow user input schema or user input schemas when reading JSON file on stage.
Added support for specifying a schema string (including implicit struct syntax) when calling
DataFrame.create_dataframe
.
Improvements¶
Updated
README.md
to include instructions on how to verify package signatures usingcosign
.
Bug fixes¶
Fixed a bug in local testing mode that caused a column to contain None when it should contain 0.
Fixed a bug in
StructField.from_json
that preventedTimestampTypes
withtzinfo
from being parsed correctly.Fixed a bug in
function date_format
that caused an error when the input column was date type or timestamp type.Fixed a bug in DataFrame that allowed null values to be inserted in a non-nullable column.
Fixed a bug in functions
replace
andlit
which raised type hint assertion error when passing Column expression objects.Fixed a bug in
pandas_udf
andpandas_udtf
where session parameters were erroneously ignored.Fixed a bug that raised an incorrect type conversion error for system function called through
session.call
.
Snowpark pandas API updates¶
New features¶
Added support for
Series.str.ljust
andSeries.str.rjust
.Added support for
Series.str.center
.Added support for
Series.str.pad
.Added support for applying the Snowpark Python function
snowflake_cortex_sentiment
.Added support for
DataFrame.map
.Added support for
DataFrame.from_dict
andDataFrame.from_records
.Added support for mixed case field names in struct type columns.
Added support for
SeriesGroupBy.unique
Added support for
Series.dt.strftime
with the following directives:%d: Day of the month as a zero-padded decimal number.
%m: Month as a zero-padded decimal number.
%Y: Year with century as a decimal number.
%H: Hour (24-hour clock) as a zero-padded decimal number.
%M: Minute as a zero-padded decimal number.
%S: Second as a zero-padded decimal number.
%f: Microsecond as a decimal number, zero-padded to 6 digits.
%j: Day of the year as a zero-padded decimal number.
%X: Locale’s appropriate time representation.
%%: A literal ‘%’ character.
Added support for
Series.between
.Added support for
include_groups=False
inDataFrameGroupBy.apply
.Added support for
expand=True
inSeries.str.split
.Added support for
DataFrame.pop
andSeries.pop
.Added support for
first
andlast
inDataFrameGroupBy.agg
andSeriesGroupBy.agg
.Added support for
Index.drop_duplicates
.Added support for aggregations
"count"
,"median"
,np.median
,"skew"
,"std"
,np.std
"var"
, andnp.var
inpd.pivot_table()
,DataFrame.pivot_table()
, andpd.crosstab()
.
Improvements¶
Improved performance of
DataFrame.map
,Series.apply
andSeries.map
methods by mapping numpy functions to Snowpark functions if possible.Added documentation for
DataFrame.map
.Improved performance of
DataFrame.apply
by mapping numpy functions to Snowpark functions if possible.Added documentation on the extent of Snowpark pandas interoperability with scikit-learn.
Infer return type of functions in
Series.map
,Series.apply
andDataFrame.map
if type-hint is not provided.Added
call_count
to telemetry that counts method calls including interchange protocol calls.