New Python Versions Available for Transformations and Workspaces
Four new Python runtimes (3.11, 3.12, 3.13, and 3.14) are now available for Python Transformations and Workspaces. Your existing transformations keep running on their current version. We're not changing any defaults yet.
Why Now?
Python 3.10 is approaching end of life, and its underlying operating system (Debian 10 "buster") is already end-of-life. Python 3.11 is supported until October 2027, giving you a comfortable runway. The new versions let you move forward on your own schedule.
What's Available
The new versions come in two flavors:
- 3.11 — the compatibility bridge. Kept as close to today's 3.10 as a supported operating system allows: the same libraries and version pins, just on a newer OS. It's a low-risk stepping stone off 3.10.
- 3.12 / 3.13 / 3.14 — one up-to-date runtime. These three share the same operating system, the same system libraries, and the same current Python packages. They differ only by the Python version number, so you can pick whichever interpreter you need and expect everything else to behave the same.
We're making four new Python versions (3.11, 3.12, 3.13, and 3.14) available for Python Transformations and Workspaces, alongside the existing 3.10. This is the first step: the images are available for you to select now.
We are not changing any defaults yet. Your existing transformations keep running on the version they use today. We'll announce a change to the default Python version separately, later on.

Pinned patch versions
Each runtime ships a specific, pinned Python patch version:
| Runtime | Pinned patch version |
|---|---|
| Python 3.14 | 3.14.6 |
| Python 3.13 | 3.13.14 |
| Python 3.12 | 3.12.13 |
| Python 3.11 | 3.11.15 |
System-level differences
| 3.10 (current) | 3.11 (bridge) | 3.12 / 3.13 / 3.14 | |
|---|---|---|---|
| Base OS | Debian 10 "buster" (EOL) | Debian 12 "bookworm" | Debian 13 "trixie" |
| Java (PySpark) | OpenJDK 13 | OpenJDK 13 | OpenJDK 21 |
| MS SQL ODBC driver | msodbcsql17 |
msodbcsql17 |
msodbcsql18 |
Important: SQL Server Connection Changes on 3.12+
One behavior change to plan for: msodbcsql18
On 3.12 and up, the SQL Server driver moves to msodbcsql18, which changes the connection defaults: Encrypt now defaults to yes and the server certificate is validated. Connection strings that work today may fail unless they add Encrypt=no or TrustServerCertificate=yes. If you connect to SQL Server or Synapse, this is the main thing to test when moving up from the 3.11 bridge.
Package changes
3.11 (bridge) keeps today's 3.10 library set and version pins almost exactly—the smallest possible jump—with two exceptions:
- The daipe and pyfony framework bundles are removed, as they can't be built on Python 3.11+. Plain
pysparkandpy4jremain. Code using the daipe/pyfony stack must stay on 3.10. - PyYAML moves to 6.x.
3.12 / 3.13 / 3.14 provide a current dependency set. Compared with 3.10, the complete list of changes is:
- These packages are removed: daipe, pyfony,
nose,qgrid,vincent, andpycodestyle-magic. - These version pins are lifted so the packages are now current:
mlflow,snowflake-connector-python,keboola.component,cffi,charset-normalizer,pytz, andpyopenssl. A singlecryptography<49cap remains. torchis updated to the current version (CPU build).
Everything else is unchanged. The full package set on all new versions is: avro, azure-storage-blob, beautifulsoup4, bokeh, boto3, cloudpickle, colorama, colorlog, cython, deepdiff, deprecation, dill, fastavro, flake8, future, h5py, h2o, httplib2, ipython, matplotlib, mlflow, nltk, numba, numexpr, numpy, ordered-set, pandas, patsy, plotly, pipdeptree, py4j, pymongo, pyodbc, pyspark, pytest, python-box, python-dotenv, PyYAML, scikit-image, scikit-learn, scipy, seaborn, simpleeval, snowflake-connector-python, sqlalchemy, statsmodels, sympy, tabulate, tomlkit, tqdm, wheel, xgboost, xlrd, cryptography, torch, plus Keboola's Storage API client (sapi-python-client).
Do you need to do anything?
For most people, no action is needed right now. We're not changing any defaults yet, so your transformations keep running exactly as they do today. When we later announce a change to the default version, we'll give you notice in advance to move along with it, there's nothing to do in the meantime.
Take action now only if one of these applies to you:
- You want to stay on your current setup no matter what. If your code depends on daipe, pyfony,
nose,qgrid,vincent,pycodestyle-magic, or a specific old version of any other package, pin your transformations to Python 3.10 now. That way a future change to the default won't affect you, and you can plan a migration on your own terms. - You want a newer Python version already. You can switch today. Choose 3.11 for the smallest possible jump (same libraries and pins, just a supported OS underneath—the only blocker is the daipe/pyfony stack, which must stay on 3.10), or 3.12 / 3.13 / 3.14 for a current, up-to-date runtime.
If you have any questions about choosing a version or migrating your workflows, our support team is here to help.