Skip to content

Track Python 3.15 full-environment compatibility: Databento dependency blocker #37

Open

Description

@stefan-jansen

Data supports Python 3.12 through 3.14 and declares Requires-Python: >=3.12,<3.15. Keep the upper bound until the complete supported environment qualifies on Python 3.15 across Linux, macOS, and Windows.

Recheck on 2026-10-17 at source 55b86e2:

  • Python 3.15.0 final shipped on October 9 and Polars 2.0.0 shipped on October 6.
  • A fresh isolated core-dependency probe on CPython 3.15.0 final selected Polars 2.0.0 and Pydantic 2.14.1. All 66 tests in tests/test_core_abstractions.py, tests/test_storage_paths.py, and tests/test_aqr_provider.py passed in 2.89 seconds. The earlier Polars/Pydantic failure is no longer reproduced.
  • The complete all-extras environment fails dependency resolution before test collection. Released Databento versions through 0.87.0 require databento-dbn versions without CPython 3.15 wheels. Databento-dbn 0.72.0 now publishes cp315 wheels, but no released Databento version accepts it yet.
  • This probe used fresh current PyPI resolution, not the supported-version lock. Databento 0.87.0 still requires databento-dbn>=0.70.0,<0.71.0; the resolver rejects this set for the cp315 ABI. The failure occurs before all-extras tests can collect. No requirement or Python upper bound was weakened.

External blocker: a released Databento dependency set compatible with CPython 3.15. Recheck after a Databento release accepting databento-dbn 0.72.0 or newer. Then run the complete all-extras suite, package build, isolated wheel and source installs, and public workflows on Python 3.15 final across all three operating systems before changing package metadata.

Continue the visible monthly core-dependency canary. Its 2026-10-01 run predates the new dependencies and had a failed core job despite an overall successful workflow conclusion because the job uses continue-on-error.

This compatibility issue does not block an otherwise qualified Python 3.12-3.14 patch release. Shared compatibility policy and its exception remain owned by ml4t/ecosystem; this issue records Data's runtime evidence.

Activity

  1. added
    compatibility: affectedHas Python, platform, dependency, or cross-library compatibility impact
    priority: highMaterial user impact requiring prompt remediation
    status: blockedCannot progress until the documented dependency resolves
    type: bugConfirmed or reported incorrect behavior
    on Aug 11, 2026
  2. stefan-jansen commented on Aug 12, 2026

    @stefan-jansen
    ContributorAuthor

    Maintainer update for 2026-08-11:

    • The failure remains upstream-owned and reproducible across Linux, macOS, and Windows.
    • fix(python): Support Python 3.15 expression dispatch pola-rs/polars#28750 is still open and blocked from merge as of this review.
    • PyPI still reports Polars 1.43.2 as the latest release, so no released artifact contains the accepted Python 3.15 expression-dispatch fix.
    • Data main passes the required Python 3.12-3.14 matrix and enforces the approved python-315-polars exception with Requires-Python >=3.12,<3.15.
    • The exception remains version-bounded and expires on 2026-09-30. It has not been broadened or renewed.

    Next review: 2026-08-18, or immediately after a Polars release containing the upstream fix. Acceptance still requires the complete Python 3.15 matrix to pass on all three operating systems before removing the exception.

  3. stefan-jansen commented on Sep 19, 2026

    @stefan-jansen
    ContributorAuthor

    Maintainer recheck on 2026-09-19:

    • PyPI now reports Polars 1.44.2 as the latest stable release.
    • A fresh CPython 3.15.0rc1 run still fails in the Polars construction path: 83 tests passed, 3 failed, and 17 errored, with the same AttributeError: 'NoneType' object has no attribute '_s' signature.
    • The stable Pydantic resolver path also does not yet provide the required CPython 3.15 support.
    • Python 3.12 through 3.14 remain the supported range, so the existing bounded exception remains appropriate and must not be widened.

    This stays open. Recheck immediately after a Polars release containing pola-rs/polars#28750, or by 2026-09-26 ahead of the 2026-09-30 exception expiry. Closure still requires the complete Python 3.15 matrix on Linux, macOS, and Windows.

  4. added
    type: maintenanceInternal maintenance without user-visible behavior
    ecosystemTracked by a shared ML4T ecosystem requirement
    and removed
    type: bugConfirmed or reported incorrect behavior
    priority: highMaterial user impact requiring prompt remediation
    on Sep 21, 2026
  5. stefan-jansen commented on Sep 21, 2026

    @stefan-jansen
    ContributorAuthor

    Decision 0013 in ecosystem pull request ml4t/ecosystem#41 replaces the September 30 expiry with a
    version-scoped prerelease wait for the Data 0.1 release line.

    Data owns the runtime evidence. Recheck when Python 3.15 final ships or when Polars publishes a
    release after 1.44.2. Until the complete suite passes on Linux, macOS, and Windows, Data keeps its
    truthful <3.15 upper bound and runs a visible non-blocking canary at least monthly. Python 3.12
    through 3.14 qualification remains blocking; Python 3.15 readiness does not block an otherwise
    qualified patch release.

  6. stefan-jansen commented on Sep 21, 2026

    @stefan-jansen
    ContributorAuthor

    Fresh closure-audit evidence on 2026-09-20:

    • Supported Python 3.12-3.14 remains green locally: 3,649 tests pass in both the standard and ResourceWarning-as-error lanes.
    • A CPython 3.15.0rc1 source probe using the locked core dependency set reproduces the accepted Polars failure: 4 failures and 6 setup errors in 66 focused tests, all with AttributeError: NoneType object has no attribute _s during DataFrame construction.
    • Resolving current stable core constraints dynamically stops earlier because stable Pydantic still selects pydantic-core==2.46.5, which has no CPython 3.15 wheel.
    • Pull request ci: add monthly Python 3.15 dependency canary #59 adds the required monthly, Ubuntu-only, non-blocking canary. It is deliberately absent from pull-request triggers and supported-version release gates.

    The issue remains open. Recheck on Python 3.15 final or after a stable Polars release newer than 1.44.2, then run the full Linux, macOS, and Windows qualification before changing Requires-Python.

  7. changed the title [-]Track Python 3.15 prerelease Polars runtime compatibility[/-] [+]Track Python 3.15 full-environment compatibility: Databento dependency blocker[/+] on Oct 14, 2026
  8. stefan-jansen commented on Oct 18, 2026

    @stefan-jansen
    ContributorAuthor

    Rechecked on 2026-10-18 against current published dependencies using CPython 3.15.0 final. A fresh isolated core environment passes all 66 core/storage-path/AQR tests in 3.66s. Full all-extras resolution still fails before collection: latest Databento 0.87.0 requires databento-dbn>=0.70.0,<0.71.0, while the released cp315 wheels are in databento-dbn0.72.0 outside that constraint. No package bound or gate was weakened. Retain this tracker with the exact external release blocker; recheck when Databento accepts a cp315-compatible dbn release, then qualify the complete matrix before closing. This does not block supported Python3.12-3.14 maintenance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    compatibility: affectedHas Python, platform, dependency, or cross-library compatibility impactecosystemTracked by a shared ML4T ecosystem requirementpriority: normalNormal planned workstatus: blockedCannot progress until the documented dependency resolvestype: maintenanceInternal maintenance without user-visible behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions