Skip to content
Merged
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
72 changes: 72 additions & 0 deletions tools/eval/github_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,77 @@ def tests(*ids: str) -> str:
)


# Pydantic 2.14.0 (2026-10-08) no longer writes the resolved `validate_by_name` back into a
# model's `model_config`, which now stays as declared: pydantic/pydantic#13825 ("Do not mutate
# `model_config` attribute"), merged 2026-09-25 (authored and committed 2026-09-25).
# Release notes: https://github.com/pydantic/pydantic/releases/tag/v2.14.0
PYDANTIC_CONFIG_AS_DECLARED = Upstream(
library="pydantic",
version="2.14.0",
released="2026-10-08",
changelog="https://github.com/pydantic/pydantic/releases/tag/v2.14.0",
upstream_change="pydantic-2.14-model-config-not-resolved",
)

# Issue: https://github.com/pydantic/pydantic-settings/issues/1021 (2026-10-09): with
# `validate_by_alias=False`, environment variables and secret files named after an aliased
# field are ignored and the default is used.
# Fix: https://github.com/pydantic/pydantic-settings/pull/1022 (squash-merged 2026-10-13): the
# sources resolve "fields can be populated by name" themselves, applying the `populate_by_name`
# fallback and the `validate_by_alias=False` implication. The base is the squash commit's
# parent. Only tests/test_settings.py is laid over: its new tests have no comments or
# docstrings. tests/test_utils.py is left out, because it imports the fix's new helper.
# The two tests below fail at the base on Pydantic 2.14.0 ('default' == 'honeycrisp') and pass
# there on 2.13.5 (checked); the PR's third new test, on init kwargs, passes at the base. The
# error doesn't name a fix; not claimed as hard-set (the obvious fix wasn't tried).
# Cause words name pydantic's change, not the symptom, and every phrase carries its object
# (`model_config` or `validate_by_name`): a bare verb ("written back", "no longer writes")
# matches a fix that only treats the symptom ("never written back to the field"), and "write
# back" matches "write backend". Not "implies" or "validate_by_name" alone: a symptom-only fix
# says them ("validate_by_alias=False implies by name").
PYDANTIC_SETTINGS_BY_NAME = GitHubTask(
name="gh-pydantic-settings-validate-by-name",
repo="https://github.com/pydantic/pydantic-settings",
base_commit="f0dd3824b3cdacd65a4bda730a9754a1cfdcda13",
fix_commit="3b405d42a4c55c9e88864bf80cddac44caad7da7",
issue_url="https://github.com/pydantic/pydantic-settings/issues/1021",
fix_url="https://github.com/pydantic/pydantic-settings/pull/1022",
test_paths=("tests/test_settings.py",),
python="3.12",
pins=("pydantic==2.14.0",),
setup=f"uv pip install --quiet {EXCLUDE_NEWER} -e . pytest==9.1.1",
test_command=tests(
"tests/test_settings.py::test_validate_by_alias_false_when_using_name",
"tests/test_settings.py::test_validate_by_alias_false_with_secrets_when_using_name",
),
upstream=PYDANTIC_CONFIG_AS_DECLARED,
discovery=Discovery(
symptom_words=("validate_by_alias", "alias", "environment variable", "default"),
cause_words=(
"back into model_config",
"back to model_config",
"no longer mutates",
"no longer mutates model_config",
"mutate model_config",
"mutates model_config",
"mutating model_config",
"model_config as declared",
"model_config no longer",
"model_config unchanged",
"leaves model_config",
"no longer writes validate_by_name",
"no longer sets validate_by_name",
"stopped writing validate_by_name",
"stopped setting validate_by_name",
"2.14",
),
library="pydantic",
),
trigger="version_specific",
license="MIT",
)


# Polars 2.0.0 (2026-10-06; first release candidate 2026-09-02): a lazy query's collect now
# runs on the streaming engine, which doesn't keep a join's row order unless the join passes
# `maintain_order`. Upgrade guide, "The Lazy API defaults to the streaming engine":
Expand Down Expand Up @@ -393,6 +464,7 @@ def scenario(task: GitHubTask) -> Scenario:
PYTEST_BDD,
TEKORE,
PYDANTIC_SETTINGS,
PYDANTIC_SETTINGS_BY_NAME,
MLODA,
PIP_TOOLS,
MARKLASSIAN,
Expand Down
Loading