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.

New Python transformations versions

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 pyspark and py4j remain. 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, and pycodestyle-magic.
  • These version pins are lifted so the packages are now current: mlflow, snowflake-connector-python, keboola.component, cffi, charset-normalizer, pytz, and pyopenssl. A single cryptography<49 cap remains.
  • torch is 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.