Skip to content

ODSC-88492: ADS Python 3.13 support readiness#1394

Closed
cheryloracle wants to merge 9 commits into
oracle:mainfrom
cheryloracle:csa/odsc-88492
Closed

ODSC-88492: ADS Python 3.13 support readiness#1394
cheryloracle wants to merge 9 commits into
oracle:mainfrom
cheryloracle:csa/odsc-88492

Conversation

@cheryloracle

Copy link
Copy Markdown
Member

Summary

Implemented ADS Python 3.13 readiness for the agreed initial support scope. The change audits Python 3.13 dependency compatibility, defines supported and deferred optional surfaces, marker-gates deferred extras in pyproject.toml, raises the opctl OCI CLI floor for Python 3.13 resolution, fixes Python 3.13 SyntaxWarning issues, updates model artifact/runtime validation to accept Python 3.13, adds Python 3.13 CI matrix coverage with scoped exclusions for deferred extras, and advertises Python 3.13 in package classifiers only after validation completed.

The Python 3.13 audit documentation records the validation performed, CI coverage decisions, known incompatibilities, deferred extras, and follow-up ticket candidates for unsupported optional surfaces. No license metadata changes were required because no new dependencies were introduced.

Tests Run

  • python -m pip install --dry-run --ignore-installed --no-deps -e .
  • python -m pip install --dry-run --ignore-installed -e .
  • python -m pip install --dry-run --ignore-installed -e '.[onnx]'
  • python -m pip install --dry-run --ignore-installed -e '.[tensorflow]'
  • python -m pip install --dry-run --ignore-installed -e '.[text]' (expected failure captured during audit: spaCy/thinc/blis path did not resolve cleanly on Python 3.13)
  • python -m pip install --dry-run --ignore-installed -e '.[opctl]'
  • python -m pip install --dry-run --ignore-installed -e '.[forecast]' (stopped after NumPy 1.26.4 source metadata preparation)
  • python -m pip install --dry-run --ignore-installed -e '.[anomaly]' (stopped after NumPy 1.26.4 source metadata preparation)
  • python -c "import tomllib; tomllib.load(open('pyproject.toml','rb')); print('pyproject ok')"
  • python -m pip install --dry-run --ignore-installed -e '.[text,forecast,anomaly,regression,pii,recommender]'
  • python -m venv .venv-py313
  • .venv-py313/bin/python -m pip install -r test-requirements.txt
  • .venv-py313/bin/python -c "import ads; print(ads.version)"
  • .venv-py313/bin/python -W error::SyntaxWarning -c "import ads; print(ads.version)"
  • .venv-py313/bin/python -m pytest -q tests/unitary/default_setup/test_import.py tests/unitary/default_setup/model/test_model_introspect.py tests/unitary/default_setup/model/test_model_artifact.py (23 passed, 2 skipped)
  • .venv-py313/bin/python -m pytest -q tests/unitary/default_setup/runtime_dependency (16 passed)
  • .venv-py313/bin/python -W error::SyntaxWarning -m py_compile ads/telemetry/telemetry.py ads/text_dataset/dataset.py
  • .venv-py313/bin/python -m pip install build
  • .venv-py313/bin/python -m build
  • python -m venv .venv-py313-wheel
  • .venv-py313-wheel/bin/python -m pip install dist/oracle_ads-2.15.2-py3-none-any.whl
  • .venv-py313-wheel/bin/python -W error::SyntaxWarning -c "import ads; print(ads.version)"
  • .venv-py313-wheel/bin/python -c "import importlib.metadata as m; print(m.version('oracle-ads'))"
  • unzip -p dist/oracle_ads-2.15.2-py3-none-any.whl oracle_ads-2.15.2.dist-info/METADATA | rg "^(Provides-Extra|Requires-Dist):|python_version < '3.13'|oci-cli"
  • python -m venv .venv-py313-sdist
  • .venv-py313-sdist/bin/python -m pip install dist/oracle_ads-2.15.2.tar.gz
  • .venv-py313-sdist/bin/python -W error::SyntaxWarning -c "import ads; print(ads.version)"
  • .venv-py313-wheel/bin/python -m pip install --dry-run --ignore-installed "oracle_ads[opctl] @ file:///Users/cheryllam/gt/ads/crew/csa_2/dist/oracle_ads-2.15.2-py3-none-any.whl"
  • .venv-py313-wheel/bin/python -m pip install --dry-run --ignore-installed "oracle_ads[text,forecast,anomaly,regression,pii,recommender] @ file:///Users/cheryllam/gt/ads/crew/csa_2/dist/oracle_ads-2.15.2-py3-none-any.whl"
  • .venv-py313-wheel/bin/python -m pip install --dry-run --ignore-installed "oracle_ads[onnx] @ file:///Users/cheryllam/gt/ads/crew/csa_2/dist/oracle_ads-2.15.2-py3-none-any.whl"
  • .venv-py313-wheel/bin/python -m pip install --dry-run --ignore-installed "oracle_ads[tensorflow] @ file:///Users/cheryllam/gt/ads/crew/csa_2/dist/oracle_ads-2.15.2-py3-none-any.whl"
  • .venv-py313/bin/python -m pytest -q tests/unitary/default_setup/model/test_model_introspect.py tests/unitary/default_setup/model/test_model_artifact.py (22 passed, 2 skipped)
  • .venv-py313/bin/python -m pytest -q tests/unitary/with_extras/model/test_env_info.py tests/unitary/with_extras/model/test_runtime_info.py (30 passed)
  • .venv-py313/bin/python -W error::SyntaxWarning -m py_compile ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py ads/model/runtime/utils.py
  • git diff --check
  • .venv-py313/bin/python -c "import yaml; [yaml.safe_load(open(p)) for p in ['.github/workflows/run-unittests-default_setup.yml', '.github/workflows/run-unittests-py310-py311.yml']]; print('workflow yaml ok')"
  • .venv-py313/bin/python -m pytest -q tests/unitary/with_extras/model/test_env_info.py tests/unitary/with_extras/model/test_runtime_info.py tests/unitary/default_setup/model/test_model_introspect.py tests/unitary/default_setup/model/test_model_artifact.py (52 passed, 2 skipped)
  • /usr/bin/env OCI_CONFIG_LOCATION=/Users/cheryllam/gt/ads/crew/csa_2/.tmp-oci/config .venv-py313/bin/python -m pytest -q tests/unitary/default_setup (attempted full default_setup: 987 passed, 5 skipped, 2 xfailed, 129 failed, 128 errors; dominated by local OCI auth/client setup and missing optional serialization dependencies in workstation harness)
  • .venv-py313/bin/python -m pip install -e '.[opctl]'
  • .venv-py313/bin/python -m pytest -q tests/unitary/with_extras/opctl/test_opctl_conda.py tests/unitary/with_extras/opctl/test_opctl_local_model_deployment_backend.py (initial run: 10 passed, 5 failed due tests reading real ~/.oci/config)
  • /usr/bin/env HOME=/Users/cheryllam/gt/ads/crew/csa_2/.tmp-home .venv-py313/bin/python -m pytest -q tests/unitary/with_extras/opctl/test_opctl_conda.py tests/unitary/with_extras/opctl/test_opctl_local_model_deployment_backend.py (15 passed)
  • .venv-py313/bin/python -c "import tomllib; tomllib.load(open('pyproject.toml','rb')); print('pyproject ok')"
  • rg -n "should not advertise|Do not add|No Python 3.13 classifier|before changing package classifiers|Validation Required" docs/source/python_313_dependency_audit.rst
  • .venv-py313/bin/python -m docutils docs/source/python_313_dependency_audit.rst /tmp/python_313_dependency_audit.html (not run: docutils is not installed in the Python 3.13 venv)

@oracle-contributor-agreement oracle-contributor-agreement Bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Jul 8, 2026
@cheryloracle

Copy link
Copy Markdown
Member Author

Python 3.13 failures happen during dependency setup, before tests run. Both jobs fail installing fiona<=1.9.6 because GDAL config is missing:

  WARNING:root:Failed to get options via gdal-config: [Errno 2] No such file or directory: 'gdal-config'
  CRITICAL:root:A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
  [end of output]

@cheryloracle

Copy link
Copy Markdown
Member Author

Python 3.13 CI is failing before tests run because onnx still installs and fails to build a wheel.

@cheryloracle

Copy link
Copy Markdown
Member Author

Closing canceled CSA test PR.

@cheryloracle
cheryloracle deleted the csa/odsc-88492 branch July 14, 2026 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant