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.28.0 (2025-02-20)¶
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¶
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.
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 the
otherwise
clause.
Snowpark local testing updates¶
New features¶
Added support for
NULL_IF
parameter to CSV reader.Added support for
date_format
,datetime_format
, andtimestamp_format
options when loading CSVs.
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.