|
1 | 1 | # Release History |
2 | 2 |
|
3 | | -## 1.41.0 (YYYY-MM-DD) |
| 3 | +## 1.43.0 (YYYY-MM-DD) |
| 4 | + |
| 5 | +### Snowpark Python API Updates |
| 6 | + |
| 7 | +#### New Features |
| 8 | + |
| 9 | +- Added support for `Session.client_telemetry`. |
| 10 | +- Added support for `Session.udf_profiler`. |
| 11 | +- Added support for `functions.ai_translate`. |
| 12 | +- Added support for the following functions in `functions.py`: |
| 13 | + - String and Binary functions: |
| 14 | + - `base64_decode_binary` |
| 15 | + - `compress` |
| 16 | + - `decompress_binary` |
| 17 | + - `decompress_string` |
| 18 | + - `md5_binary` |
| 19 | + - `md5_number_lower64` |
| 20 | + - `md5_number_upper64` |
| 21 | + - `sha1_binary` |
| 22 | + - `sha2_binary` |
| 23 | + - `soundex_p123` |
| 24 | + - `strtok` |
| 25 | + - `try_base64_decode_binary` |
| 26 | + - `try_base64_decode_string` |
| 27 | + - `try_hex_decode_binary` |
| 28 | + - `try_hex_decode_string` |
| 29 | + - `unicode` |
| 30 | + - `uuid_string` |
| 31 | + |
| 32 | + - Conditional expressions: |
| 33 | + - `booland_agg` |
| 34 | + - `boolxor_agg` |
| 35 | + - `regr_valy` |
| 36 | + - `zeroifnull` |
| 37 | + |
| 38 | + - Numeric expressions: |
| 39 | + - `cot` |
| 40 | + - `mod` |
| 41 | + - `pi` |
| 42 | + - `square` |
| 43 | + - `width_bucket` |
| 44 | + |
| 45 | +#### Improvements |
| 46 | + |
| 47 | +- Enhanced `DataFrame.sort()` to support `ORDER BY ALL` when no columns are specified. |
| 48 | +- Catalog API now uses SQL commands instead of SnowAPI calls. This new implementation is more reliable now. |
| 49 | + |
| 50 | +#### Dependency Updates |
| 51 | + |
| 52 | +- Catalog API no longer uses types declared in `snowflake.core` and therefore this dependency was removed. |
| 53 | + |
| 54 | +### Snowpark pandas API Updates |
| 55 | + |
| 56 | +#### New Features |
| 57 | + |
| 58 | +- Added support for `Dataframe.groupby.rolling()`. |
| 59 | +- Added support for mapping `np.percentile` with DataFrame and Series inputs to `Series.quantile`. |
| 60 | +- Added support for setting the `random_state` parameter to an integer when calling `DataFrame.sample` or `Series.sample`. |
| 61 | + |
| 62 | +#### Improvements |
| 63 | + |
| 64 | +- Enhanced autoswitching functionality from Snowflake to native pandas for methods with unsupported argument combinations: |
| 65 | + - `shift()` with `suffix` or non-integer `periods` parameters |
| 66 | + - `sort_index()` with `axis=1` or `key` parameters |
| 67 | + - `sort_values()` with `axis=1` |
| 68 | + - `melt()` with `col_level` parameter |
| 69 | + - `apply()` with `result_type` parameter for DataFrame |
| 70 | + - `pivot_table()` with `sort=True`, non-string `index` list, non-string `columns` list, non-string `values` list, or `aggfunc` dict with non-string values |
| 71 | + - `fillna()` with `downcast` parameter or using `limit` together with `value` |
| 72 | + - `dropna()` with `axis=1` |
| 73 | + - `asfreq()` with `how` parameter, `fill_value` parameter, `normalize=True`, or `freq` parameter being week, month, quarter, or year |
| 74 | + - `groupby()` with `axis=1`, `by!=None and level!=None`, or by containing any non-pandas hashable labels. |
| 75 | + - `groupby_fillna()` with `downcast` parameter |
| 76 | + - `groupby_first()` with `min_count>1` |
| 77 | + - `groupby_last()` with `min_count>1` |
| 78 | + - `groupby_shift()` with `freq` parameter |
| 79 | +- Slightly improved the performance of `agg`, `nunique`, `describe`, and related methods on 1-column DataFrame and Series objects. |
| 80 | + |
| 81 | +#### Bug Fixes |
| 82 | + |
| 83 | +- Fixed a bug in `DataFrameGroupBy.agg` where func is a list of tuples used to set the names of the output columns. |
| 84 | +- Fixed a bug where converting a modin datetime index with a timezone to a numpy array with `np.asarray` would cause a `TypeError`. |
| 85 | +- Fixed a bug where `Series.isin` with a Series argument matched index labels instead of the row position. |
| 86 | + |
| 87 | +#### Improvements |
| 88 | + |
| 89 | +- Add support for the following in faster pandas: |
| 90 | + - `groupby.apply` |
| 91 | + - `groupby.nunique` |
| 92 | + - `groupby.size` |
| 93 | + - `concat` |
| 94 | + - `copy` |
| 95 | + - `str.isdigit` |
| 96 | + - `str.islower` |
| 97 | + - `str.isupper` |
| 98 | + - `str.istitle` |
| 99 | + - `str.lower` |
| 100 | + - `str.upper` |
| 101 | + - `str.title` |
| 102 | + - `str.match` |
| 103 | + - `str.capitalize` |
| 104 | + - `str.__getitem__` |
| 105 | + - `str.center` |
| 106 | + - `str.count` |
| 107 | + - `str.get` |
| 108 | + - `str.pad` |
| 109 | + - `str.len` |
| 110 | + - `str.ljust` |
| 111 | + - `str.rjust` |
| 112 | + - `str.split` |
| 113 | + - `str.replace` |
| 114 | + - `str.strip` |
| 115 | + - `str.lstrip` |
| 116 | + - `str.rstrip` |
| 117 | + - `str.translate` |
| 118 | + - `dt.tz_localize` |
| 119 | + - `dt.tz_convert` |
| 120 | + - `dt.ceil` |
| 121 | + - `dt.round` |
| 122 | + - `dt.floor` |
| 123 | + - `dt.normalize` |
| 124 | + - `dt.month_name` |
| 125 | + - `dt.day_name` |
| 126 | + - `dt.strftime` |
| 127 | + - `rolling.min` |
| 128 | + - `rolling.max` |
| 129 | + - `rolling.count` |
| 130 | + - `rolling.sum` |
| 131 | + - `rolling.mean` |
| 132 | + - `rolling.std` |
| 133 | + - `rolling.var` |
| 134 | + - `rolling.sem` |
| 135 | + - `rolling.corr` |
| 136 | + - `expanding.min` |
| 137 | + - `expanding.max` |
| 138 | + - `expanding.count` |
| 139 | + - `expanding.sum` |
| 140 | + - `expanding.mean` |
| 141 | + - `expanding.std` |
| 142 | + - `expanding.var` |
| 143 | + - `expanding.sem` |
| 144 | + - `cumsum` |
| 145 | + - `cummin` |
| 146 | + - `cummax` |
| 147 | +- Make faster pandas disabled by default (opt-in instead of opt-out). |
| 148 | +- Improve performance of `drop_duplicates` by avoiding joins when `keep!=False` in faster pandas. |
| 149 | + |
| 150 | +## 1.42.0 (2025-10-28) |
| 151 | + |
| 152 | +### Snowpark Python API Updates |
| 153 | + |
| 154 | +#### New Features |
| 155 | + |
| 156 | +- Snowpark python DB-api is now generally available. Access this feature with `DataFrameReader.dbapi()` to read data from a database table or query into a DataFrame using a DBAPI connection. |
| 157 | + |
| 158 | +## 1.41.0 (2025-10-23) |
4 | 159 |
|
5 | 160 | ### Snowpark Python API Updates |
6 | 161 |
|
|
49 | 204 | - `st_y` |
50 | 205 | - `st_ymax` |
51 | 206 | - `st_ymin` |
| 207 | + - `st_geogfromgeohash` |
| 208 | + - `st_geogpointfromgeohash` |
| 209 | + - `st_geographyfromwkb` |
| 210 | + - `st_geographyfromwkt` |
| 211 | + - `st_geometryfromwkb` |
| 212 | + - `st_geometryfromwkt` |
| 213 | + - `try_to_geography` |
| 214 | + - `try_to_geometry` |
| 215 | + |
| 216 | +#### Improvements |
52 | 217 |
|
| 218 | +- Added a parameter to enable and disable automatic column name aliasing for `interval_day_time_from_parts` and `interval_year_month_from_parts` functions. |
53 | 219 |
|
54 | 220 | #### Bug Fixes |
55 | 221 |
|
56 | 222 | - Fixed a bug that `DataFrameReader.xml` fails to parse XML files with undeclared namespaces when `ignoreNamespace` is `True`. |
57 | 223 | - Added a fix for floating point precision discrepancies in `interval_day_time_from_parts`. |
58 | 224 | - Fixed a bug where writing Snowpark pandas dataframes on the pandas backend with a column multiindex to Snowflake with `to_snowflake` would raise `KeyError`. |
59 | 225 | - Fixed a bug that `DataFrameReader.dbapi` (PuPr) is not compatible with oracledb 3.4.0. |
| 226 | +- Fixed a bug where `modin` would unintentionally be imported during session initialization in some scenarios. |
| 227 | +- Fixed a bug where `session.udf|udtf|udaf|sproc.register` failed when an extra session argument was passed. These methods do not expect a session argument; please remove it if provided. |
| 228 | + |
| 229 | +#### Improvements |
| 230 | + |
| 231 | +- The default maximum length for inferred StringType columns during schema inference in `DataFrameReader.dbapi` is now increased from 16MB to 128MB in parquet file based ingestion. |
60 | 232 |
|
61 | 233 | #### Dependency Updates |
62 | 234 |
|
63 | 235 | - Updated dependency of `snowflake-connector-python>=3.17,<5.0.0`. |
64 | 236 |
|
65 | 237 | ### Snowpark pandas API Updates |
66 | 238 |
|
| 239 | +#### New Features |
| 240 | + |
| 241 | +- Added support for the `dtypes` parameter of `pd.get_dummies` |
| 242 | +- Added support for `nunique` in `df.pivot_table`, `df.agg` and other places where aggregate functions can be used. |
| 243 | +- Added support for `DataFrame.interpolate` and `Series.interpolate` with the "linear", "ffill"/"pad", and "backfill"/bfill" methods. These use the SQL `INTERPOLATE_LINEAR`, `INTERPOLATE_FFILL`, and `INTERPOLATE_BFILL` functions (PuPr). |
| 244 | + |
67 | 245 | #### Improvements |
68 | 246 |
|
69 | 247 | - Improved performance of `Series.to_snowflake` and `pd.to_snowflake(series)` for large data by uploading data via a parquet file. You can control the dataset size at which Snowpark pandas switches to parquet with the variable `modin.config.PandasToSnowflakeParquetThresholdBytes`. |
|
105 | 283 | - `dt.days_in_month` |
106 | 284 | - `dt.daysinmonth` |
107 | 285 | - `sort_values` |
| 286 | + - `loc` (setting columns) |
108 | 287 | - `to_datetime` |
| 288 | + - `rename` |
| 289 | + - `drop` |
| 290 | + - `invert` |
| 291 | + - `duplicated` |
| 292 | + - `iloc` |
| 293 | + - `head` |
| 294 | + - `columns` (e.g., df.columns = ["A", "B"]) |
| 295 | + - `agg` |
| 296 | + - `min` |
| 297 | + - `max` |
| 298 | + - `count` |
| 299 | + - `sum` |
| 300 | + - `mean` |
| 301 | + - `median` |
| 302 | + - `std` |
| 303 | + - `var` |
| 304 | + - `groupby.agg` |
| 305 | + - `groupby.min` |
| 306 | + - `groupby.max` |
| 307 | + - `groupby.count` |
| 308 | + - `groupby.sum` |
| 309 | + - `groupby.mean` |
| 310 | + - `groupby.median` |
| 311 | + - `groupby.std` |
| 312 | + - `groupby.var` |
| 313 | + - `drop_duplicates` |
109 | 314 | - Reuse row count from the relaxed query compiler in `get_axis_len`. |
110 | 315 |
|
111 | 316 | #### Bug Fixes |
|
0 commit comments