Runtime compatibility¶
This page records how maintainers handle Python, Databricks Runtime, Spark, and Delta compatibility. The policy is intentionally small: the base wheel is pure Python, Databricks supplies the Spark and Delta pair, and delta-engine uses a small PySpark surface around SQL-driven catalog operations.
Supported floors and tested environments are different things. A floor is a requirement; a tested environment is evidence. The tested list must not become an allowlist that rejects compatible newer environments.
Current contract¶
Surface |
Contract |
|---|---|
Python |
Python 3.12 or later, with no upper bound |
Spark backend |
Databricks Runtime 16.2 or later, Unity Catalog, and the PySpark and Delta libraries supplied by the runtime |
SQL warehouse backend |
A Unity Catalog-enabled SQL warehouse; no PySpark or numbered Databricks Runtime required |
Dedicated access mode |
Unsupported; the Spark backend does not currently work with |
Databricks Runtime 16.2 is the Spark backend’s technical floor because the
reader requires DESCRIBE TABLE EXTENDED … AS JSON. It is not a claim that
every later numbered runtime has been tested.
Python versions¶
Package metadata expresses the minimum supported Python version and deliberately has no upper bound. A speculative upper bound would reject likely-compatible new Python releases and can make installers select an older delta-engine release instead.
CI runs the full suite on:
the minimum supported Python version; and
the latest stable Python version.
Intermediate minor versions remain supported without a dedicated job unless they introduce a distinct compatibility path, such as version-specific code, dependency resolution, or a reproduced defect. The exact built wheel is smoke-tested once on the Python floor; repeating the same packaging check on every Python minor would not prove a different property.
When a new stable Python version appears:
add it as the latest CI endpoint;
keep the minimum endpoint;
fix or narrowly document any demonstrated incompatibility; and
test the Spark path separately when a Databricks Runtime adopts that interpreter.
Raise the Python floor only when production code needs newer language or standard-library functionality, a required dependency drops the old version, or maintaining the old version has a concrete cost that outweighs its user value. Do not raise it merely because a new Python version exists or an internal development tool wants a newer interpreter.
A floor increase is a deliberate compatibility change. Announce it, update
requires-python, classifiers, CI, the lock, and documentation together, and
identify the final delta-engine release that works on the retired Python
version.
Databricks Runtime, Spark, and Delta¶
Do not publish, install, or select pyspark or delta-spark for Databricks
users. Databricks owns the compatible Spark and Delta combination in each
runtime; shadowing either package from a notebook can create the mismatch the
runtime is designed to avoid.
delta-engine therefore does not maintain a Spark-by-Delta dependency matrix, one wheel per runtime, a runtime allowlist, or a maximum Databricks Runtime. The local Spark suite checks delta-engine against the repository’s locked development environment, but it is not evidence that the Spark adapter works on a numbered Databricks Runtime.
When a new Databricks Runtime appears:
make no package-metadata change by default;
test the existing exact wheel on that runtime before claiming it as tested;
if it passes, record the environment as evidence without requiring a new delta-engine release; and
if it fails, reproduce the narrow boundary, then fix it or document that concrete incompatibility.
Any published test evidence should identify the exact delta-engine artifact, Databricks Runtime, and access mode. A runtime absent from that evidence remains allowed unless a concrete incompatibility is known.
New Databricks or Delta features¶
A new platform feature does not change delta-engine’s contract until the project intentionally adopts it. When it does:
document the feature’s own Databricks Runtime or Delta protocol requirement;
let the user choose a runtime that provides the feature;
keep baseline operations available on older supported runtimes; and
prefer the original Databricks error unless a targeted preflight materially improves safety or avoids partial execution.
An optional feature must not raise the package-wide runtime floor. Raise the global floor only when a baseline operation genuinely requires a newer platform and retaining the old path is impractical.
What each test proves¶
Evidence |
What it supports |
|---|---|
Minimum/latest Python CI |
Pure-Python and locked integration behaviour at the supported interpreter endpoints |
Installed-wheel smoke |
The built wheel installs and its base public surface works on the Python floor |
Local Spark suite |
Delta-engine behaviour against the locked development Spark/Delta pair |
Live SQL warehouse suite |
Shared SQL/catalog behaviour and the SQL warehouse adapter |
Live Spark notebook smoke |
The exact wheel and Spark adapter work on the named runtime and access mode |
Only the final row establishes evidence for a numbered Databricks Runtime. Until that coverage exists, describe 16.2 as the technical floor and avoid calling any numbered runtime live-tested.
See Installation for the consumer setup and Capabilities and limitations for current user-visible restrictions.