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.

  9. stefan-jansen commented on Oct 23, 2026

    @stefan-jansen
    ContributorAuthor

    Rechecked on October 23 against current published dependencies with CPython 3.15.0 final. Fresh isolated core installation succeeds and all 66 core/storage-path/AQR tests pass in 2.59 seconds. The complete all-extras installation still fails before collection: Databento 0.88.0 requires databento-dbn~=0.70.0, which does not provide the required supported cp315 dependency set. The resolver considered the released Databento versions from the project's minimum through 0.88.0 and found none installable. No bound was weakened and no prerelease dependency was substituted.

    Keep this tracker open for the external Databento release blocker. Recheck when a released Databento dependency set supports CPython 3.15, then qualify the complete environment, distributions and all three operating systems before removing the upper bound. Python 3.12-3.14 maintenance remains supported.

    A separate current maintenance gate also needs a shared-policy decision: the immutable ecosystem snapshot used by Data approves python-315-polars only for versions >=0.1.2,<0.3. It now correctly rejects post-0.3.0 development versions. This failed gate is retained, not skipped or represented as passing; a Data-specific bounded 0.3.x renewal has been requested with the current dependency evidence. It is not a new Polars runtime failure.

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