Skip to main content
Version: 3.1.0 (Preview)

Python Runtime

Ambari 3.1.0 requires Python 3.9.2 or later on Linux. The default package target is CPython 3.9 (cp39) for manylinux2014_x86_64. Rocky Linux 8 explicitly requires AppStream python39; Rocky Linux 9 uses system Python 3.9. The installed wrapper validates the interpreter and selects the matching ABI.

The source-level minimum does not make a cp39 RPM compatible with any newer Python minor release. Use the interpreter matching the package's native extensions; CPython 3.10 requires its own package target. Ambari's own Python code remains maintained in Ambari. The removal concerns copied third-party forks, not all Python source files delivered by verified upstream wheels.

Official Dependencies​

The merged Python modernization uses official packages instead of vendored forks: APScheduler 3.11.3, Jinja2 3.1.6, MarkupSafe 3.0.3, stomp.py 8.2.0, websocket-client 1.9.0, cryptography 50.0.1, distro 1.9.0, javaproperties 0.8.2, and PyYAML 6.0.3. Vendored APScheduler, Jinja2, STOMP/WebSocket, crypto, and test-broker sources are not runtime dependencies.

Standard-library replacements are used for simplejson (json), mock (unittest.mock), and pbkdf2 (hashlib.pbkdf2_hmac). Existing AES-CBC v1 compatibility is retained while protocol changes are handled separately.

Packaging Contract​

Agent and Server dependencies are installed into Ambari private libraries during the Maven build. Nodes must not run pip install at runtime. Requirements are hash-locked and the main lock accepts binary wheels only for the selected platform and ABI. docopt==0.6.2 is the sole exception: stomp.py declares it as a hard dependency, so it is installed from a separately hash-locked source distribution.

The build clears previous dependency directories, audits installed metadata and licenses, and emits an SBOM. The default platform is Linux x86_64; the python-wheel-aarch64 and python-wheel-cp310 profiles produce separate artifacts and are not evidence that every platform is production-tested. Offline builds use a supplied wheelhouse with PIP_NO_INDEX=true.

The runtime wrapper, dependency directory, and native extensions must use one Python ABI. Do not reintroduce deleted Python 2 extensions, Ambari simulator/test bundles, or unlocked optional test dependencies. Verified upstream distributions may include their own documentation, tests, or examples covered by their RECORD metadata. The normalizer removes unused declared console/GUI entry points and updates RECORD; it does not authorize arbitrary trimming of upstream distributions. See the RPM packaging guide and upgrade guide for packaging and migration constraints.

Source Evidence​

The runtime and packaging changes are merged in AMBARI-26643. The Python floor, interpreter selection, wheel platform/ABI defaults, RPM requirements, and offline Maven installation are defined in the current pyproject.toml, requirements locks, root pom.xml, Agent pom.xml, and Unix wrapper scripts.