Repository navigation
Description
Current verified maintenance and qualification - November 1, 2026
The stable Python 3.15 qualification at 6f38868e046e18b00252ab417db191440a327082 is complete. Linux, macOS and Windows passed their native and installed suites, serial PDF controls, original notebook replays and strict all-extras audits. Each full job fails the mandatory installed producer-support assertion because published ml4t-data 0.3.1 declares Requires-Python: <3.15,>=3.12. Installation/import success does not override that declared-support restriction. This is not a missing-wheel claim.
The common wheel SHA256 is 85cd1ea7d7d98015bf92131ee3ba19642c962f2cd9cefc891eca098427bcf19f; sdist SHA256 is 362d929912c9883813f4085209d628a933b57c2c4b8382b84cd1d9d05a75cc45. All 358 source modules and metadata were verified against the candidate, and all six canonical migration cells passed 25 cases each. Of nine original browser profiles, eight passed; the Windows sdist profile retained two capacity-page navigation timeouts among 230 passes and three platform skips.
The full-context capacity diagnostic at 28424011b3935ca689e40481c020905eff046ead passed all 232 applicable cases with three POSIX-only skips. Its retained real browser traces show the capacity pages loading in about 1.45 and 1.27 seconds with successful local-file requests. This passing diagnostic does not explain or erase the original timeouts.
The future caller uses the canonical stable-interpreter workflow 2bfa8eb353b0f16bdaae0506c38b8c44d0819298 and embedded policy 71f184b28d4761f363bf33bb7e538e59d896c4ae. Main's published 0.2 support bounds and exception remain unchanged. No full Python 3.15 support or release is claimed. The retained future head 1e19f872b1083c8d71add528989e46f7d1e37c47 passed 195 source cases and both strict locked release/contributor hash audits on each stable Python3.15.2 OS in the focused run. The pushed current candidate 4c36401e24dd4b6b2411eb3b7281cedd82ed5a8f corrects the complete browser/PDF corpus count from235 to236 after the new native suspension regression, registers actual installed-test markers and retains per-profile capacity traces and native timeout evidence. The completed current-head qualification at 4c36401e24dd4b6b2411eb3b7281cedd82ed5a8f has 19 successful jobs, three failed full-support jobs and one inapplicable diagnostic skip. All three full jobs passed their native and isolated installed suites, mandatory serial PDF stages, both-format original notebook replays and strict all-extras hash audits. Linux/macOS each passed 9,106 native and installed cases with 943 named exclusions; Windows passed 9,104 with 945 named exclusions. Each serial PDF stage accounted for all 109 cases: Linux/macOS passed 90 with 19 Windows-only exclusions; Windows passed 106 with three POSIX-only exclusions. Each of the nine native/wheel/sdist report profiles accounted for all 236 cases, including all 127 report-browser cases. All six canonical notebook replay cells passed 25 cases without skips. The same canonical wheel SHA256 d4765dfbda7beaf498cfcb871001ba0fd9541507b191e54b4ae6081026999cf3 and sdist SHA256 9b199fd8f2e20c32fd745403d460fd49dc3535a1b3159246701b99298a754c2d match all 358 candidate module bytes. These are unpublished 0.3.0.dev0 qualification artifacts.
All three full-support jobs failed the actual installed producer-support assertion AssertionError: {'ml4t-data': '<3.15,>=3.12'}. The later missing producers.xml is secondary because producer tests correctly did not execute. Fresh PyPI metadata and the SHA256-verified actual Data 0.3.1 wheel still declare that bound. Installation/import success is distinct from declared support. No Python bounds or gates are overridden, and full Python 3.15 support remains unqualified.
The same current-head run also passed all 99 original-order Windows cleanup cases on Python 3.13. Its 24 native timeout observations were exclusively expected debugger-held negative controls. No unexpected natural timeout was reproduced. All nine report profiles retain actual capacity traces. Neither these passes nor the prior successful capacity diagnostic explains the retained natural native WAIT_TIMEOUT 258/profile sharing failures or the original capacity navigation timeouts. Issue 112 and issue 45 remain open; no causal runtime fix or complete-support claim is made.
PR279 merged as 7c92a5eb8efb58b6b549d8e7fe6ab492bf867a2e. Its subsequent main run failed a Windows lifecycle batch. All 396 original cases are retained: 393 passed and three failed. Two failures retain a real native wait timeout after job termination and profile sharing denial; the third observed the injected browser suspension as running despite successful actual cleanup. This issue remains open. No failure, native-exit check, profile check or deadline is waived.
The six-case native observation run passed but did not reproduce or explain those failures. The first original-order diagnostic retained 87 passes and 12 failures caused by my observer installation before counterfactual source inspection and a modified-bootstrap anchor. Those are diagnostic defects, not additional runtime defects. The corrected observer at ff47d47844b6083276a99e2d180f659a21e15590 installs after fault setup; its three original-order Windows batches completed with all 99 cases passing. The twelve native timeout observations came exclusively from expected negative controls, so the original natural failures remain unexplained. It only reads native thread, pending-I/O and debug state after an actual wait timeout. Passing observations alone will not count as a causal repair.
Fresh macOS/Windows strict source-canary audits in the current diagnostic run now identify four advisories in locked pypdf 6.21.2, fixed upstream in 6.21.3. Both actual local release and contributor graph audits reproduced the failure. PR280, exact 58257376018ba444d8c129f11bd737086673b6c5, requires patched pypdf>=6.21.3 and resolves 6.21.4. Both actual locked strict hash audits now pass and two real public supported-Python PDF export/read tests pass. The identical dependency repair on the future branch passed 195 public source cases plus both strict audits on each of Linux/macOS/Windows stable Python 3.15.2 in run41144072723. PR280 also retains timeout-only native observations in the existing required Windows lifecycle job; it does not change cleanup deadlines/assertions or establish a causal lifecycle repair. It merged as afda973336527e7cf4b27baabc47e3736df2f576 after 56 successful exact-head checks and the approved Python 3.15 exception skip. All nine supported native source/PDF cells and all 396 unchanged-order Windows lifecycle cases passed; the 48 native timeout observations were expected negative controls only. The installed wheel passed the complete migration/notebook/browser workflow and 89 real PDF cases with 18 platform exclusions. Authenticated wheel and sdist module bytes match all 358 reviewed modules, and both require patched pypdf>=6.21.3. Main has the identical reviewed Git tree. Its actual CI has now passed all nine supported native source/PDF cells and all 396 original-order Windows lifecycle cases. The retained 48 native timeout observations were expected negative controls; no natural failure was reproduced or explained. Actual main shared qualification is SUCCESS. The actual current-main Build Package and installed-workflow gate has completed successfully (job124401722150 in run41152288281). Its installed wheel passed the complete analytical, notebook and browser workflows plus89 real PDF cases with18 platform exclusions. Authenticated main wheel SHA256 ca88feef2e45a818026f1cfec21c1525409471cc69707fc1d866f2f25e1627e0 and sdist SHA256 cff97ee1ed2c1e30b220d76a39fa98c88eecefafb850f70885719665242a963e match all358 actual main modules and require patched pypdf>=6.21.3. Main has60successful checks and one registered exception skip. These are unpublished CI archives, not a replacement of the immutable published0.2.0 artifacts. This dependency/observation maintenance does not explain or erase the original natural cleanup failures, close this issue, expand Python support, or authorize a release. No vulnerability exclusion is added.
Focused capacity mechanism assessment: the retained HTML from the later successful Windows diagnostic uses identical product source bytes to the original failing 6f38868 candidate. Its actual offline Linux browser replay loaded in 1.31 seconds with no external resource tags or dynamic resource requests. Explicit 50x browser CPU throttling reproduced the same Page.goto: Timeout 30000ms exceeded on the identical file after its local transfer completed, without changing the deadline. This proves delayed rendering can produce the symptom; it does not establish that the original Windows host was overloaded. The original failed artifact contains only identity and JUnit, without its actual HTML/trace/CPU observations, so that attribution cannot be recovered. Future report profiles already retain actual HTML and traces. The original capacity failure was observed on the unpublished Python 3.15 candidate; no supported 0.2 capacity navigation failure was reproduced. The separate actual published Data support-bound blocker remains unchanged. Codex executed and reviewed this controlled experiment; no runtime repair or full-support claim follows.
AI assistance: Codex reviewed source and hosted logs, implemented the observer/dependency work, and collected and checked evidence. The failures and limitations above remain part of the review.
Qualification blocked by an actual supported Windows lifecycle failure - October 30, 2026
Actual Windows/Python 3.13 crash batch 9, exact 378ffa55ee26bd4ca07551f2e7b9755a0dc3c627, failed case 15 test_real_pdf_cleanup_owns_browser_without_hiding_render_failures[profile_sharing]. The other 32 cases passed. Both pages rendered and Browser.close acknowledged, but the main Chrome kernel handle remained unsignaled after the unchanged five-second cleanup budget: wait258, exit120, membership true, termination access true, elapsed4.999521s. Actual profile deletion then failed with a sharing violation. The intended injected profile-sharing lock was never reached because native termination raised first.
Authenticated artifact 13009303877 SHA256 0d1c4715e78fc8bba1cb6a20fde4faba94c89a34822241ac574da7099c3353ad and the actual failed job/case logs, JUnit, process/profile observations and worker thread snapshots are retained. The PDF process/worker runtime is byte-identical to published 0.2.0 source 19e76072; this is a supported Windows lifecycle recurrence, not solely a Python 3.15 or Data metadata failure.
Investigate the native cleanup mechanism and require a real producing regression and focused failing-base/passing-fix evidence for any repair. No causal fix is established yet. Preserve terminal kernel-handle verification, job accounting, profile cleanup, atomic output, original errors, neighbor isolation and existing deadlines. No unchanged retry, ignored repetition or exit-code-only acceptance. Earlier exact-revision successful qualification remains historical evidence, not a disposition for this recurrence. Codex assisted log/source inspection and this update; no independent human review is claimed.
The final stable shared consumer run 41118125321 remains SUCCESS (12 successful jobs, one inapplicable exception skip). That scoped success does not override this normal-CI failure. Issue112 owns this runtime investigation. Published Data0.3.1 still declares Python<3.15 and remains a separate installed-producer support restriction. Full3.15 support remains unqualified; no release or deployment is requested.
Supported release scope
Diagnostic 0.2.0 is published and supports Python 3.12-3.14 (Requires-Python >=3.12,<3.15). Its final source is 19e76072e64a18c9ba56130e4a7bcc0bc871f57e; the supported release qualification and published-package verification passed, and canonical docs are deployed from that revision. The earlier Windows PDF/runtime repair shipped after its recorded final-main and Release acceptance. Issue #112 has since reopened for the October 30 recurrence described above. This issue stays open for future Python 3.15 source, common-artifact and all-extras qualification; 0.2.0 does not advertise Python 3.15 support.
The shared exception python-315-scipy applies to >=0.1.2,<0.3 through November 24, 2026. Ecosystem and release callers use immutable reusable workflow 322df8513e6f7dceae8eab9d9697b3428ee62af6, with internal policy 728da8e1175c4ad55c5feb6365d195a4f6a045c0. Supported release gates remain blocking. The monthly three-OS source canary remains visible while 0.2 excludes Python 3.15.
This is owned full qualification, not a missing-PyArrow-wheel wait. Published PyArrow 26, SciPy 1.18.1, Numba 0.68 and llvmlite 0.50 supply relevant CPython 3.15 wheels. Source canaries do not establish full support.
Earlier owner qualification at 378ffa5 (historical candidate)
The last full-matrix qualify/python315-next candidate was 378ffa55ee26bd4ca07551f2e7b9755a0dc3c627, including supported main a006a12e74302b284b3a8a10b99c29a376869638. The original full/native/common-artifact run tested runtime/tests/metadata/lock at 30d0fa3d0ee334b09e7f01eb294c37740c470fb6. The corrected installed-browser run uses 44e31df; the independent strict-audit run uses 2452d3d. Their completed outcomes are retained below with their exact scope and failures.
The final candidate moves the existing SHAP requirement from the dev group into the included test group and marks two browser test modules for the existing mandatory serial stage. It changes no runtime code, test assertions, cleanup deadlines or numerical defaults. All 358 runtime module identities and every resolved dependency entry/version/hash remain unchanged. A fresh actual build produces the same wheel as those earlier three-OS runs. The new source archive changes only the test-group metadata and those two test-module markers; building that actual source archive produces the identical wheel:
- Final wheel SHA256:
b4d059251d30f0d496b5cc279c117031aaad54afea540789a060e0b7d6c131aa. - Final source archive SHA256:
e180a07a26f3ea69b053b8ff41c951ce08cc40d0a92df073d206c82520428c28. - Earlier source archive used in the completed three-OS profiles:
baf7658e3947164cdf61e8ba2051da5cd2dd3ccecd26eccc4344eec8bc512537.
Actual completed outcomes as of October 30:
- Source probes: 195 cases passed on each operating system.
- Full native and isolated common-wheel suites: Linux and macOS each passed 9,158 tests with 958 named optional/reference/fixture/platform exclusions; Windows passed 9,168 with 948 named exclusions. Each suite had zero test failures. These are suite outcomes, not green overall-job claims.
- Native browser/PDF: all 232 cases accounted for on each OS. Linux/macOS each passed 217 with 15 Windows-only skips; Windows passed 229 with three POSIX-only skips. All 127 required report-browser cases passed per OS; no browser-discovery omission.
- Corrected isolated wheel/source-archive browser/PDF: all six platform/format cells passed the complete 232-case profile, including all 127 required report-browser cases and all applicable 105 PDF cases. Linux/macOS passed 217 with 15 Windows-only skips per format; Windows passed 229 with three POSIX-only skips per format. Authenticated artifacts verify the common archives and all 358 module hashes.
- Canonical notebook/PDF replay: all three OSes passed 25 cases per wheel and source archive, without skips. This includes all nine original analytical notebooks and the composed signal/PDF controls.
- Separate frozen release and contributor hash-strict audits: all three operating systems passed, with actual logs, hashed requirement graphs and lock-pinned tool constraints retained. These audits do not override a dependency's declared Python support.
Earlier genuine failures remain recorded. The first installed-browser environment omitted published Backtest 0.2.0 and four report modules failed collection. The same immutable archive reproduced four collection errors locally; adding that real producer collected the 45 cases. Commit 17a058e repaired the environment, and actual local isolated-wheel execution passed 217 cases with 15 Windows-only skips. Hosted corrected results above retain the same tested archives.
The original macOS and Windows full jobs exceeded their aggregate 90-minute budget after both full suites passed. macOS also completed native/installed serial PDF and wheel original-notebook replay; Windows completed native PDF. The separate identical-artifact report profiles supply the complete Windows installed PDF evidence. Missing stages and timeouts are not counted as successful jobs. The future full-job budget is now 120 minutes; per-test 120-second deadlines, kernel-exit/profile checks and every required gate remain unchanged. Independent audits no longer wait behind the long full job. After retaining completed logs and authenticated artifacts, the obsolete queued browser job with the already-fixed environment was canceled, rather than executed unchanged.
The same authenticated future wheel also passed 15 actual published-producer cases on local Linux Python 3.12, 3.13 and 3.14, with zero skips. These exercise Backtest 0.2.0 capital flows, first-fill fees and final portfolio reports, plus Engineer 0.2.1 nanosecond endpoint/missingness results in complete signal reports. Data 0.3.1 was installed and its declaration accepted on these supported interpreters; no provider requests were made. These focused cases do not replace the full matrix or establish Data support on 3.15.
Fresh checks at 30d0fa3 passed Ruff, formatting, types, all hooks, lock validation, Actionlint, strict docs and rendered links. Supported-main qualification exposed a separate Windows pytest config rejection before collection (D:\dev\null does not exist). PR278 merged as a006a12 after 56 successful checks and one approved skip at its reviewed head; the merged tree is identical. It preserves isolation, controls and deadlines, and resolves contributor-only msgpack 1.2.3 with actual strict audits on all nine supported platform/version combinations. The future branch now includes that main revision.
The actual pinned shared exception validator rejects future 0.3.0.dev0 because python-315-scipy only covers >=0.1.2,<0.3. Commit eb06c4b removes that exception from future ecosystem/release callers; published/main 0.2 retains its valid exception. Both future callers adopt immutable reusable workflow 2bfa8eb353b0f16bdaae0506c38b8c44d0819298, with internal policy 71f184b28d4761f363bf33bb7e538e59d896c4ae. It binds Python 3.15 to the stable setup-python output, preserving the canonical 3.12-3.15 gates and protected names.
The first actual stable consumer run finished with four failed jobs, eight successful jobs and one inapplicable skip. All three 3.15 test environments omitted SHAP, although collected tests and the public end-to-end example require it. The macOS 3.12 job separately failed the real atomic PDF permission test during Chrome startup in the default parallel pool. That startup cause is not established from its log; no runtime fix is claimed. All failed logs and artifacts remain retained.
Commit 378ffa5 repairs the test dependency ownership and serial browser selection. The actual isolated test-only environment reproduces missing SHAP before the change. Afterward, the same installed wheel passed 278 cases with five named optional ML-backend skips, including the public end-to-end example and real atomic PDF permission test on local stable Python 3.15/Linux. Explicit serial collection still selects all 67 cases from the two marked modules; their bodies and deadlines are unchanged, and native/installed mandatory PDF stages retain them. This local result does not qualify macOS. Normal commit hooks, Ruff/format and generated-lock consistency passed.
The final stable shared consumer run completed successfully at exact 378ffa55ee26bd4ca07551f2e7b9755a0dc3c627: 12 successful jobs and one inapplicable exception skip. All nine supported platform/version cells and the three stable Python 3.15 core/test-group source/build/isolated-import cells passed. Actual stable interpreter paths come from setup-python (CPython 3.15.2). The Python 3.15 source counts are Linux 9,049 passed/998 skipped, macOS 8,922 passed/1,125 skipped and Windows 8,920 passed/1,127 skipped, with zero failures. These core/test-group results do not replace full all-extras, browser or producer integration gates.
The previous 48 missing-SHAP failures on each OS are resolved. On Windows, installing SHAP also enables 54 formerly skipped cases (52 pass; two retain actual missing-LightGBM skips); moving 67 browser cases to the mandatory serial stage removes 64 former passes and three POSIX-only skips from default selection. This accounts for the Windows aggregate change without claiming every previously skipped case now passes. All failed logs are retained. Current serial native and installed browser acceptance remains separately required, including the real macOS atomic-PDF permission case.
Normal supported-version CI remains active at the same head and is not claimed green. The superseded normal CI at 97a994c was canceled by normal branch concurrency after 13 successes, with no observed test failure; it does not qualify the new head. No release workflow was dispatched.
The Linux full job's actual integration failure is the installed metadata assertion for published Data 0.3.1: Requires-Python >=3.12,<3.15. The later missing producers.xml is secondary. A separate actual all-extras install/import probe on stable Python 3.15 succeeded with uv 0.10.9, but the installed-metadata assertion correctly failed. This is a declared-support integration restriction, not a missing-wheel or installation-impossibility claim. Fresh PyPI metadata at 19:00 UTC still identifies Data 0.3.1 as current; Engineer 0.2.1 and Backtest 0.2.0 declare Python >=3.12. No Python-bounds override or provider request was used. Full support remains unqualified while owned gates or this integration restriction remain unresolved.
Retained previous qualification
The separate 0.3.0.dev0 candidate declares Requires-Python >=3.12,<3.16. It does not expand the 0.2 cut. Generated-lock repairs select actual current CPython 3.15 binaries, including Polars 2.1, lxml 6.1.3, Matplotlib 3.11.2, NumPy 2.5.4 and pandas 3.1.0. Actual old Numba build rejection, empty Polars Series methods, native rendering/setup failures and audit-tool failures have retained reproductions and focused passing repairs. Statsmodels/pandas annotation changes also required verified public scalar/type handling. No dependency or security gate was weakened.
The full three-OS run at f7859c9 completed. Actual standard-GIL CPython 3.15.2 native source and isolated installed-wheel suite results were:
| Platform | Native and installed result, each |
|---|---|
| Linux | 9,157 passed, 0 failed, 956 named exclusions |
| macOS | 9,030 passed, 0 failed, 1,083 named exclusions |
| Windows | 9,038 passed, 0 failed, 1,075 named exclusions |
Independent installed Requires-Python checks found no conflicting selected distributions in those core/dev/ML/visualization/performance environments. Strict hash audits passed on all three systems. Both wheel and sdist separately passed the five original Pyfolio analytical notebooks and three real PDF controls: 17 cases per format per platform, no skips.
These suite passes have material limits. macOS and Windows each excluded 127 actual report-browser cases because Chrome was not discoverable. Linux executed those cases. The existing Windows native ownership cases and separately executed PDF controls remain distinct evidence; they do not qualify the omitted report-browser cases. Reference-package and other optional exclusions are retained by name.
The Windows platform-local wheel differs from the Linux/macOS wheel through checkout CRLF and ZIP attributes. All 358 Python modules match after explicit normalization and actual AST comparison, but the archives are not claimed byte-identical. The previous common-canonical-artifact replay at 74a8415 passed: the same hash-checked wheel and sdist on all three systems, covering all nine original analytical notebooks, three composed signal notebooks and three real PDF readiness controls. Its 25 cases per format passed on each OS without skips. It qualifies that previous source only. This supplements the full-suite evidence; it does not close the 127 report-browser exclusions.
The future candidate's strict local MkDocs build, exact version/source identity, internal links and documented native Empyrical command pass. Reference Empyrical/Pyfolio comparisons retain their compatible Python 3.12 environments. Both one/two-nanosecond duration failures found during the earlier installed suite also reproduced on supported Python 3.12/pandas 3.1; their shared fix is now in merged PR273 and the future branch.
Remaining acceptance and exact blockers
- Current supported main afda973 has completed its applicable CI/package gates with 60 successful checks and one registered skip. Current future 4c36401 has completed all three native/installed/serial-PDF stages and all nine report profiles, but its full-support jobs correctly fail the published Data declaration. Retain the unexplained capacity navigation and supported Windows lifecycle failures; passing diagnostics do not dispose of them.
- Qualify final future support metadata, lock, shared policy/callers, audits, lint/types/hooks, strict docs/source/links and supported-version compatibility before merging support changes. This is separate from published 0.2.0.
- Complete the actual all-extras/producer integration using a published Data artifact declaring Python 3.15 support, or obtain an explicit next-version optional-integration scope decision. The current Data 0.3.1 declaration blocks this route. Do not override Python bounds or label all-extras qualification green.
Keep this issue open. No release, tag, package publication or deployment is authorized by this qualification work.
AI assistance: Codex investigated the actual failures, prepared and reviewed the candidate, ran the stated local commands and inspected/downloaded hosted results. No independent human review is claimed.
Activity
stefan-jansen commentedon Sep 3, 2026
Maintainer status: still blocked. PyPI currently reports PyArrow 25.0.1, which has no CPython 3.15 wheels. The next review is 2026-09-15, or earlier when PyArrow 26.0.0 is published. Closure still requires Linux, macOS, and Windows Python 3.15 qualification plus published-package verification.
[-]Track Python 3.15 PyArrow wheel compatibility[/-][+]Track Python 3.15 dependency wheel compatibility[/+]stefan-jansen commentedon Sep 3, 2026
Fresh candidate evidence on 2026-09-03 adds a second dependency-stack blocker. Installing current main c1a7830 on CPython 3.15.0rc1 resolves Pydantic 2.13.5 to pydantic-core 2.46.5; that version has no cp315 wheel and its maturin source build fails before import. PyPI currently shows 30 cp315 files for pydantic-core 2.48.0, but Pydantic 2.13.5 pins 2.46.5. PyArrow 25.0.1 still has zero cp315 files. The issue now tracks both blockers; closure still requires an end-to-end install and full three-platform qualification, so resolving either package alone is insufficient.
stefan-jansen commentedon Sep 5, 2026
Dependency recheck on 2026-09-05: PyPI still reports PyArrow 25.0.1 with zero CPython 3.15 wheels. Pydantic 2.13.5 still pins pydantic-core 2.46.5, while the CPython 3.15 wheels are in pydantic-core 2.48.0. The issue remains blocked; no source change can satisfy the three-platform acceptance criteria yet.
stefan-jansen commentedon Sep 19, 2026
Maintainer recheck on 2026-09-19:
This stays open. Recheck immediately when PyArrow 26.0.0 or stable Pydantic 2.14 is published, otherwise on 2026-09-26. Closure still requires the complete non-hardware suite on Python 3.15 across Linux, macOS, and Windows, followed by the Requires-Python change and published-package verification.
stefan-jansen commentedon Sep 21, 2026
Decision 0013 in ecosystem pull request ml4t/ecosystem#41 replaces the September 30 expiry with a
version-scoped prerelease wait for the Diagnostic 0.1 release line.
Diagnostic owns the dependency and suite evidence. Recheck when Python 3.15 final ships or when
PyArrow 26 ships. Until the complete suite passes on Linux, macOS, and Windows, Diagnostic keeps its
truthful
<3.15upper bound and runs a visible non-blocking canary at least monthly. Python 3.12through 3.14 qualification remains blocking; Python 3.15 readiness does not block an otherwise
qualified patch release.
Pydantic-core 2.49.0 now publishes CPython 3.15 wheels, so it is no longer a current blocker.
stefan-jansen commentedon Oct 14, 2026
Fresh upstream recheck on 2026-10-14: PyArrow 26.0.0 now publishes CPython 3.15 wheels for Linux, macOS (arm64 and x86_64), and Windows amd64. Stable Pydantic 2.14.1 pins pydantic-core 2.50.1, which also publishes those CPython 3.15 wheels. SciPy 1.18.1 has the corresponding wheels too.
Verified through the actual PyPI JSON metadata for pyarrow, pydantic, pydantic-core/2.50.1 and scipy. The September missing-wheel explanation is no longer current.
This is dependency availability evidence, not Diagnostic qualification. Current main 76a56fe keeps Requires-Python >=3.12,<3.15; its lock still uses PyArrow 25.0.0 and platform-specific older Pydantic selections. No final Python 3.15 install/import/full-suite matrix has been executed in this recheck. Keep this issue open under the user's existing deferral. The next compatibility task is dependency/lock reconciliation and real Python 3.15 qualification on Linux, macOS and Windows before widening support and verifying a published package. The approved version-scoped wait does not block an otherwise qualified Python 3.12-3.14 patch release.
Primary metadata: https://pypi.org/pypi/pyarrow/json, https://pypi.org/pypi/pydantic/json, https://pypi.org/pypi/pydantic-core/2.50.1/json, https://pypi.org/pypi/scipy/json.
AI assistance: Codex retrieved and checked the upstream metadata and prepared this maintainer status update. No Python 3.15 support or release is being claimed.
[-]Track Python 3.15 dependency wheel compatibility[/-][+]Qualify Python 3.15 source and installed-artifact support[/+]