Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/libraries.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ homepage_url = "https://www.ml4trading.io/"
id = "python-315-polars"
criterion = "python-3.15-prerelease"
libraries = ["data", "engineer"]
affected_versions = ">=0.1.2,<0.2"
affected_versions = ">=0.1.2,<0.3"
rationale = "Polars 1.44.2 fails required series construction on CPython 3.15.0rc1."
evidence = [
"https://github.com/ml4t/data/issues/37",
Expand Down
30 changes: 30 additions & 0 deletions decisions/0015-python-315-polars-020-wait.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Decision 0015: Continue the Polars wait through 0.2 releases

**Status**: Accepted
**Date**: 2026-09-24
**Approver**: Stefan Jansen

## Context

Decision 0013 replaced the expiration date for the Data and Engineer Python 3.15 wait with two
review triggers: Python 3.15 final and a Polars release after 1.44.2. Neither trigger has occurred.
Data 0.2.0 retains the truthful `Requires-Python: >=3.12,<3.15` bound and passed the blocking Python
3.12 through 3.14 release matrix, but the configured affected-version range ended before 0.2.0.
The ecosystem audit therefore rejected the published release even though its dependency blocker,
supported Python versions, evidence, user impact, and mitigation are unchanged.

## Decision

Extend the `python-315-polars` affected-version range from `>=0.1.2,<0.2` to `>=0.1.2,<0.3`.
The existing libraries, evidence, mitigation, owning issue, and objective review triggers remain
unchanged. This covers the Data and Engineer 0.2 release lines while the recorded dependency wait
is active. It does not claim Python 3.15 support or weaken the three-platform stable matrix.

A 0.3 development or final release is outside this decision. It requires either completed Python
3.15 qualification or another reviewed decision supported by current dependency evidence.

## Consequences

Data 0.2.0 can satisfy ecosystem qualification when its source commit, release tag, PyPI metadata,
and deployed documentation agree. Data and Engineer continue to run the visible Python 3.15 canary
and must requalify when either existing review trigger occurs.
5 changes: 4 additions & 1 deletion tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ def test_load_repository_config() -> None:
assert exception.covers_version("0.1.8.dev2+g9096f8941")
assert exception.covers_version("0.1.8")
assert exception.covers_version("0.1.9.dev1")
assert not exception.covers_version("0.2.0.dev1")
assert exception.covers_version("0.2.0.dev1")
assert exception.covers_version("0.2.0")
assert exception.covers_version("0.2.1.dev1")
assert not exception.covers_version("0.3.0.dev1")

diagnostic_exception = config.exception("python-315-scipy")
assert diagnostic_exception.libraries == ("diagnostic",)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def test_validate_exception_accepts_matching_repository() -> None:
exception_id="python-315-polars",
library_key="data",
repository="ml4t/data",
package_version="0.1.2",
package_version="0.2.0",
on_date=date(2026, 8, 11),
)

Expand All @@ -42,7 +42,7 @@ def test_validate_exception_accepts_matching_repository() -> None:
(
"data",
"ml4t/data",
"0.2.0.dev1",
"0.3.0.dev1",
date(2026, 8, 11),
"does not cover version",
),
Expand Down
Loading