apache/beam · warning

This version of Apache Beam has not been sufficiently…

Error message

This version of Apache Beam has not been sufficiently tested on Python %s.%s. You may encounter bugs or missing features.

What it means

Beam emits a warning at setup time when the running Python is 3.15 or newer, because that version has not been sufficiently tested with this Beam release (python_requires is >=3.10 and testing covers up to 3.14). The install proceeds but bugs or missing features are possible.

Solutions

  1. Use a supported Python version (>=3.10, <3.15), e.g. via pyenv, conda, or a pinned docker image like python:3.12.
  2. If you must use 3.15, expect the warning and test thoroughly; consider installing from source with recent dependencies.
  3. Pin CI images to a specific tested Python minor version instead of 'latest'.

Example fix

// before
FROM python:latest        # 3.15 -> warning
// after
FROM python:3.12-slim
Defensive patterns

Strategy: validation

Validate before calling

import sys
if sys.version_info >= (3, 15):
    raise SystemExit('Use Python >=3.10,<3.15 (e.g. 3.12) for Apache Beam')

Prevention

When it happens

Trigger: Running pip install / python setup.py for Beam with sys.version_info.minor >= 15 (e.g. Python 3.15 pre-releases or new releases).

Common situations: Developers on the latest Python (3.15 alpha/beta or just-released) trying to install Beam; CI matrices that use 'python:latest' docker images.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/5d2784759ec02da6. Report an issue: GitHub.

Appendix: source

Thrown at sdks/python/setup.py:341

        'error: {}'.format(err.stderr))


def get_portability_package_data():
  files = []
  portability_dir = Path(__file__).parent / 'apache_beam' / \
                    'portability' / 'api'
  for ext in ['*.pyi', '*.yaml']:
    files.extend(
        str(p.relative_to(portability_dir.parent.parent))
        for p in portability_dir.rglob(ext))

  return files


python_requires = '>=3.10'

if sys.version_info.major == 3 and sys.version_info.minor >= 15:
  warnings.warn(
      'This version of Apache Beam has not been sufficiently tested on '
      'Python %s.%s. You may encounter bugs or missing features.' %
      (sys.version_info.major, sys.version_info.minor))

if __name__ == '__main__':
  # In order to find the tree of proto packages, the directory
  # structure must exist before the call to setuptools.find_packages()
  # executes below.
  generate_protos_first()

  generate_external_transform_wrappers()

  # These data files live elsewhere in the full Beam repository.
  copy_tests_from_docs()

  # generate cythonize extensions only if we are building a wheel or
  # building an extension or running in editable mode.
  cythonize_cmds = ('bdist_wheel', 'build_ext', 'editable_wheel')

View on GitHub (pinned to 12126d8942)