diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8659203..8462ddc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,8 @@ jobs: enable-cache: true python-version: ${{ matrix.python }} - run: uv sync --locked --all-extras - - run: uv run ruff check src tests - - run: uv run ruff format --check src tests + - run: uv run ruff check src tests scripts + - run: uv run ruff format --check src tests scripts - run: uv run pytest --cov=code_assistant --cov-report=xml - name: Run real offline reproduction run: | diff --git a/README.md b/README.md index e62d032..9b54fb8 100644 --- a/README.md +++ b/README.md @@ -13,18 +13,20 @@ registered source citations. Patches are proposed without changing the repositor |---|---| | Search / test / synthesis agents and conditional routing | Implemented and covered by offline integration tests | | Search, source reads, pytest execution, log inspection | Real tools with budgets and structured events | -| FastAPI, bearer authentication, OpenAPI docs | Locally tested | -| Docker service, restricted runner, Compose | Build and execution checks passed in GitHub Actions | +| FastAPI, bearer authentication, OpenAPI docs | Real-model HTTP check passed: 401 without token, 200 with token | +| Docker service and restricted runner | Both image builds and execution checks passed in GitHub Actions | | 100 historical issues across 12 repositories | Pinned, reproducible SWE-bench Lite subset | | Retrieval baseline on all 100 pre-fix snapshots | **100 completed; Hit@1 40%; Hit@5 71%; MRR@5 0.5202** | -| Real-model root-cause accuracy | Integration and review workflow implemented; **not evaluated** | -| Generated-patch resolution | Official harness export/scoring implemented; **not evaluated** | +| Real LLM run on all 100 issues | **90 cited diagnoses, 10 abstentions; file Hit@1 87%, Hit@5 88%** | +| Automated root-cause comparison | **87 correct, 1 partial, 2 incorrect, 10 unscorable**; human accuracy remains unmeasured | +| Generated-patch resolution | **48/100 resolved** in official SWE-bench tests; 23 failed, 27 empty, 2 timed out | Baseline numbers measure **file localization against maintainer patches**, not bug-fix accuracy. -The first three historical tasks have now been diagnosed with a real model through a locally -authenticated Codex CLI. All three patches apply; official functional evaluation is separate. +The real run uses `gpt-6.1-sol` through a locally authenticated Codex CLI, with a frozen +configuration and source fingerprint. Automated causal comparison is a labeled LLM judgment +with possible same-model bias. Functional resolution comes from the official SWE-bench harness. The scripted demo is synthetic and excluded from the 100 historical tasks. -[Results and traces](reports/README.md). +[Results and traces](reports/README.md) · [Reproduce real-model evaluation](docs/MODEL_EVALUATION.md). ## Quick start @@ -120,11 +122,15 @@ and set `ASSISTANT_TEST_IMAGE` when needed. Historical patch evaluation uses off ```bash # Explicit local execution for the trusted bundled fixture: ASSISTANT_TEST_EXECUTOR=local uv run code-assistant serve -curl http://127.0.0.1:8000/v1/debug \ +curl --noproxy 127.0.0.1 http://127.0.0.1:8000/v1/debug \ -H 'Content-Type: application/json' \ -d '{"repository":"checkout","issue":"Passing discount=0 to calculate_total(100, discount=0) returns 90 instead of 100."}' ``` +Set `ASSISTANT_MODE=model` when serving with the real-model configuration above. +The [authenticated real-model HTTP check](reports/real-model-api/validation.json) +completed search → test → search → synthesis on the trusted synthetic fixture. + Open [interactive API docs](http://127.0.0.1:8000/docs). For other repositories, configure `ASSISTANT_WORKSPACE_ROOT` and pass a relative directory. Configure `ASSISTANT_API_TOKEN` and send `Authorization: Bearer ` before exposing beyond loopback. No wildcard CORS or @@ -170,8 +176,8 @@ responses contain source excerpts and are ignored by Git. index truncation, invalid synthesis, and incomplete traces. [Logging walkthrough](docs/INTERVIEW.md). ```bash -uv run ruff check src tests -uv run ruff format --check src tests +uv run ruff check src tests scripts +uv run ruff format --check src tests scripts uv run pytest --cov=code_assistant uv build ``` diff --git a/README.zh-CN.md b/README.zh-CN.md index a67d8b0..19e048c 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -12,17 +12,19 @@ |---|---| | 搜索、测试、综合三个 agent 及条件路由 | 已实现,离线集成测试覆盖 | | 仓库搜索、源码读取、pytest 执行、日志读取 | 真实工具,具有调用预算和事件日志 | -| FastAPI、Bearer 认证、交互式接口文档 | 本地已验证 | -| Docker 服务、受限测试镜像、Compose | GitHub Actions 构建及运行验证均通过 | +| FastAPI、Bearer 认证、交互式接口文档 | 真实模型 HTTP 验证通过:无令牌 401,有令牌 200 | +| Docker 服务及受限测试镜像 | 两种镜像的 GitHub Actions 构建及运行验证均通过 | | 12 个仓库的 100 条历史问题 | 固定版本 SWE-bench Lite 子集,可重复选样 | | 100 个修复前快照的检索基线 | **全部完成;Hit@1 40%,Hit@5 71%,MRR@5 0.5202** | -| 真实模型根因正确率 | 接入与人工评分流程已实现;**尚未评测** | -| 生成补丁的回归测试通过率 | 官方评测导出与评分已实现;**尚未评测** | +| 100 条真实模型运行 | **90 条带证据诊断,10 条证据不足;文件 Hit@1 87%,Hit@5 88%** | +| 自动根因核对 | **87 条正确、1 条部分正确、2 条错误、10 条不可评分**;人工准确率未测 | +| 生成补丁的官方测试 | **48/100 解决**;23 条未通过、27 条空补丁、2 条超时,全部计入分母 | -这些数字衡量“候选文件是否命中维护者补丁修改的文件”,不是修复成功率。 -已通过本地 Codex CLI 登录对前三条历史问题运行真实模型,三个补丁均通过应用检查; -功能测试由官方评测另行验证。固定演示使用人工构造缺陷,排除在 100 条历史任务之外。 -[真实运行结果与日志](reports/README.md)。 +文件定位指标衡量“候选文件是否命中维护者补丁修改的文件”,与修复成功率分别计算。 +完整模型运行通过本地 Codex CLI 登录调用 `gpt-6.1-sol`,配置和源码指纹已冻结。 +自动根因核对由 LLM 对照维护者补丁进行,存在同模型评审偏差;功能解决率由官方测试 +计算。固定演示使用人工构造缺陷,排除在 100 条历史任务之外。 +[真实运行结果与日志](reports/README.md) · [复现模型评测](docs/MODEL_EVALUATION.md)。 ## 快速运行 @@ -116,11 +118,15 @@ uv run code-assistant debug /你的仓库路径 "问题描述" --executor docker ```bash # 显式允许执行可信的内置演示测试。 ASSISTANT_TEST_EXECUTOR=local uv run code-assistant serve -curl http://127.0.0.1:8000/v1/debug \ +curl --noproxy 127.0.0.1 http://127.0.0.1:8000/v1/debug \ -H 'Content-Type: application/json' \ -d '{"repository":"checkout","issue":"Passing discount=0 to calculate_total(100, discount=0) returns 90 instead of 100."}' ``` +使用上面的真实模型配置启动服务时,另设 `ASSISTANT_MODE=model`。 +[真实模型 HTTP 验证](reports/real-model-api/validation.json)已通过认证并完成可信示例的 +“搜索 → 测试 → 再搜索 → 综合”。 + 打开[交互式接口文档](http://127.0.0.1:8000/docs)。其他仓库通过 `ASSISTANT_WORKSPACE_ROOT` 指定父目录,请求传相对目录。向回环地址之外开放前应配置 `ASSISTANT_API_TOKEN`,请求发送 `Authorization: Bearer `。服务限制路径范围, @@ -165,8 +171,8 @@ token 用量。事件日志不记录提示词、源码正文和隐藏推理。 及未完成运行。[面试讲解](docs/INTERVIEW.md)。 ```bash -uv run ruff check src tests -uv run ruff format --check src tests +uv run ruff check src tests scripts +uv run ruff format --check src tests scripts uv run pytest --cov=code_assistant uv build ``` diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index e28c78e..028cf45 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -40,6 +40,21 @@ binary data, and files larger than 500 KB. It caps 20,000 files / 80 MB and logs Each evidence record has an immutable ID for that run. Source reads and search snippets have distinct kinds: a search snippet alone cannot satisfy the final source-read requirement. +## Local-login model adapter + +[`codex_model.py`](../src/code_assistant/codex_model.py) implements LangChain's chat-model +interface over non-interactive Codex CLI inference. Application tool schemas and messages +travel over stdin; schema-validated JSON becomes `AIMessage.tool_calls` or a structured +diagnosis. Authentication stays with the CLI's supported login. + +Each call runs in an empty temporary directory with user configuration/rules ignored and +built-in execution, file operations, web search, connectors, plugins, and extra agents +disabled. CLI events are checked and unexpected built-in activity fails the call. Only the +application tools have the actor repository path. Time/output limits and safe error handling +bound the subprocess. The model still receives the selected source excerpts in its input. +The pinned run records CLI version, model identifier, reasoning effort, transport, usage, +and reconnect counts. [Reproduction](MODEL_EVALUATION.md). + ## Output and verification Synthesis produces a Pydantic `Diagnosis`: conclusion, causal explanation, affected files, @@ -52,6 +67,18 @@ Confidence is model-reported, not a calibrated probability. Semantic review and regression tests are required for correctness claims. The service never applies patches; `patch_verified` remains false. Project tests separately verify the synthetic example's patch. +[`patches.py`](../src/code_assistant/patches.py) separately validates diff paths against +affected files that were actually read, mechanically recounts hunk lengths, and checks +applicability on a temporary source copy. Invalid candidates are withheld with their original +hashes preserved. It does not run regression tests. After inference freezes, official +SWE-bench containers evaluate the submitted patch and retain separate functional results. + +Each historical issue has an isolated snapshot and trace. Concurrent workers share no actor +state; the main thread persists complete predictions and restores task order at completion. +Resumption rejects task, model, source, environment, budget, and worker-count mismatches. +Four frozen batches preserve the full 100-task denominator and patch identities during +official evaluation. Automated gold-based review occurs only after each prediction freezes. + ## Execution and service boundaries Local execution is disabled by default. Opting into local pytest executes repository code diff --git a/docs/BENCHMARK.md b/docs/BENCHMARK.md index 0a613bb..cb959c1 100644 --- a/docs/BENCHMARK.md +++ b/docs/BENCHMARK.md @@ -2,12 +2,15 @@ ## Decision and scope -The future model experiment asks whether the assistant identifies the causal mechanism in -real bug reports, as confirmed by merged maintainer fixes. Its primary diagnosis metric is -**human-adjudicated root-cause accuracy**. Functional patch resolution is measured separately -by the official SWE-bench harness. Both are currently unmeasured. - -The completed experiment is a **deterministic file-localization baseline**. It checks data +The real-model experiment asks whether the assistant identifies the causal mechanism in +real bug reports, as confirmed by merged maintainer fixes. The 100-task run is complete: +90 cited diagnoses, 10 abstentions, Hit@1 87%, Hit@5 88%. An explicitly automated causal +comparison scores 87 correct, 1 partial, 2 incorrect, and 10 unscorable. **Human-adjudicated +root-cause accuracy remains unmeasured.** Functional resolution is measured separately by +the pinned official harness: **48/100 resolved**, 23 unresolved, 27 empty patches, +2 test timeouts (600 seconds). See [published results](../reports/README.md). + +The earlier completed experiment is a **deterministic file-localization baseline**. It checks data preparation, snapshot isolation, search/read tools, scoring, and per-issue telemetry. It does not test LLM reasoning or establish that multi-agent orchestration improves outcomes. @@ -79,8 +82,8 @@ raw durations, trace conservation checks, and manifests are published in [report ## Model evaluation and causal rubric First run three pilot issues for environment/protocol debugging, then freeze the model, -prompts, tools, budgets, and code before the 100-issue run. A full run requires provider -credentials and incurs that provider's usage charges. Record actual token usage when supplied; +prompts, tools, budgets, and code before the 100-issue run. A full run requires a provider +key or supported local CLI login and consumes that account's allowance. Record token usage when supplied; unknown usage stays null. Do not alter the task set after viewing results. ```bash @@ -116,6 +119,21 @@ benefits from the retrieval baseline versus an LLM treatment. ## Official patch evaluation +The runnable evaluation path is [MODEL_EVALUATION.md](MODEL_EVALUATION.md), pinned to +`swebench==5.0.2`. The 100 inference outputs are also frozen in four consecutive 25-task +batches so Docker tests can overlap later inference. Batch selection follows the original +task order and includes abstentions and invalid patches; no outcome-based filtering is used. +Every nonempty evaluated patch has a SHA-256 checked against the final predictions. The +four batch denominators sum to 100. The original dataset checksum and actual image digests +are retained. The full run resolved 48/100; 23 nonempty patches failed tests, 27 predictions +had empty patches, and 2 tests timed out. There are no missing outcomes or image-pull failures. +The three-task pilot separately resolved all three cases; it does not enlarge the denominator. + +Two post-hoc maintainer-patch controls also passed official required regressions with the +same image digests, despite incidental fixture/import errors in the larger test output. +Those errors alone therefore do not justify excluding the original model failures. +[Control evidence](../reports/evaluation-controls/README.md). The agent score remains 48/100. + Use a separate environment with a recorded, pinned SWE-bench harness version and working Docker. Export the **same pinned source records** for official evaluation, instead of silently loading whatever the upstream `main` revision becomes: @@ -157,12 +175,17 @@ and selected dataset hash before making a patch-correctness claim. ## 中文说明 -已完成的是 100 条真实历史问题的**文件定位基线**,不是 100 条大模型根因诊断或补丁修复。 -固定数据版本、2026 种子和按仓库轮转的选样规则均可核验,12 个仓库全部有覆盖。 +已完成 100 条历史问题的检索基线和真实模型运行。真实模型给出 90 条带证据诊断, +10 条主动判断证据不足;文件 Hit@1 为 87%,Hit@5 为 88%。固定数据版本、2026 种子和 +按仓库轮转的选样规则均可核验,12 个仓库全部有覆盖。 agent 只能访问修复前快照,参考补丁和隐藏测试放在外部;但公开历史问题可能存在训练 污染,因此不能宣称完全不存在泄漏。文件命中率与因果正确性严格区分。 人工根因评分要求说明触发条件、错误机制及责任代码,并与维护者补丁一致;相关文件命中 但解释不全只能算部分正确。每条需要复核人和理由,全部复核后才生成根因正确率。 -功能修复率必须由官方 SWE-bench 环境运行回归测试确认。当前两者都没有结果,不填写数字。 +自动评审已对照维护者补丁产生 87 条正确、1 条部分正确、2 条错误及 10 条不可评分; +这不是人工准确率。官方 SWE-bench 环境确认 **48/100** 修复;23 条未通过、27 条空补丁、 +2 条超时均保留在分母中,逐条报告、日志摘录与哈希已发布。100 条推理阶段关闭历史 +仓库测试执行,专职测试 agent 已在真实模型的可信 +示例中实际运行;官方隐藏测试仅在预测冻结后执行。 diff --git a/docs/FAILURE_ANALYSIS.md b/docs/FAILURE_ANALYSIS.md new file mode 100644 index 0000000..5888686 --- /dev/null +++ b/docs/FAILURE_ANALYSIS.md @@ -0,0 +1,82 @@ +# Failure analysis / 失败分析 + +The frozen real-model run finished all 100 selected tasks. Official `swebench==5.0.2` +evaluation produced the following complete accounting: + +| Outcome | Count | Meaning | +|---|---:|---| +| Resolved | 48 | Official FAIL_TO_PASS and PASS_TO_PASS requirements satisfied | +| Unresolved | 23 | Nonempty patch applied, but official regression requirements failed | +| Empty patch | 27 | 17 invalid candidates withheld; 10 model abstentions | +| Test timeout | 2 | Test execution exceeded the fixed 600-second limit | +| Missing outcome / image-pull failure | 0 | All 100 outcomes accounted for | + +The resolution rate is **48/100**, with no denominator exclusions. Predictions were never +repaired after seeing reference patches or official results. The three-issue pilot is a +separate protocol check; its 3/3 result is not added to the full-run denominator. +[Raw counts](../reports/model-100/failure-analysis.json) · +[Official outcomes](../reports/model-100/official-evaluation/results.json). + +## What the evidence establishes + +The source audit found 26 role turn-limit events, 7 recoverable tool errors, 10 abstentions, +and 17 invalid patches. There were no run crashes, invalid synthesis outputs, unpaired tools, +or unfinished traces. A role hitting its turn limit can still synthesize from existing +evidence, so 26 limit events do not mean 26 failed issues. + +Post-freeze automated review marked 87 explanations correct, yet **40 of those cases did +not resolve in official tests**. The reviewer evaluates the causal explanation; it does not +prove implementation completeness. It also shares the actor's model family, which can bias +agreement. Named human root-cause accuracy remains unmeasured. + +Examples retained for inspection: + +- `astropy__astropy-14365`: the candidate applied, but the official + `test_roundtrip[True]` regression still failed. + [Report](../reports/model-100/official-evaluation/astropy__astropy-14365/report.json). +- `psf__requests-2674`: automated review found that the diagnosis targeted + `ConnectTimeoutError`, while the maintainer correction handled `ClosedPoolError`. + [Review records](../reports/model-100/automated-review/reviews.jsonl). +- `psf__requests-2317` and `sympy__sympy-11870`: patches applied and tests began, then + timed out at 600 seconds. The logs do not establish an infrastructure-only cause; + both count as unresolved in the aggregate. + [Requests excerpt](../reports/model-100/official-evaluation/psf__requests-2317/test-output-excerpt.txt) · + [SymPy excerpt](../reports/model-100/official-evaluation/sympy__sympy-11870/test-output-excerpt.txt). + +## Maintainer-patch sanity controls + +Two unresolved cases with incidental fixture/import errors were checked using the exact +maintainer patches, after inference froze. Both controls **resolved the official required +tests** using the same recorded image digests. Other errors in the larger test output still +occurred, so those messages alone do not invalidate the targeted grade. Both original +agent failures remain unresolved; the score stays 48/100. +[Maintainer controls and reports](../reports/evaluation-controls/README.md). + +## Improvements to evaluate separately + +The current implementation preserves original candidates, checks cited/read file membership, +mechanically recounts diff hunk lengths, and validates applicability on an isolated copy. +That prevented invalid suggestions from becoming submitted patches, but 17 candidates still +failed the check. A future run could request a bounded model correction using only that +pre-evaluation applicability error. It must freeze a new configuration and retain the +original run as its baseline. + +A larger investigation budget may reduce abstentions. Set `ASSISTANT_MAX_AGENT_STEPS=7` +and use a new output directory to measure the tradeoff in tokens, latency, and resolution. +Longer test timeouts are another separate protocol change; preserve the 600-second results +and do not merge retries into the original score. Neither change has been claimed as tested. + +## 中文说明 + +最终官方修复率为 **48/100**。23 份补丁虽然能够应用,但未满足回归要求;17 份候选 +未通过应用检查,10 条模型判断证据不足,因此共有 27 条空补丁;另有 2 条测试超时。 +没有丢失样本,也没有因为失败而换题或删除分母。 + +自动根因核对认为正确的 87 条中,有 40 条没有通过官方功能验证。这说明解释正确、 +补丁可应用和功能修复是不同要求,自动评审也可能过于宽松。全部原始预测、被拒候选、 +官方结果、实际镜像 digest 和日志摘录均保留。增加轮数、补丁纠错或延长测试时间都应 +作为新的实验,不能回写本次冻结成绩。 + +另对两条出现夹具/依赖报错的失败样本运行维护者补丁对照,两份都通过官方指定回归, +无关报错仍会出现。因此不能把这些报错直接当作排除失败样本的依据。对照单独记录, +不增加模型成绩;两条超时的具体原因仍未确定。 diff --git a/docs/INTERVIEW.md b/docs/INTERVIEW.md index 203f4f9..d369b12 100644 --- a/docs/INTERVIEW.md +++ b/docs/INTERVIEW.md @@ -1,79 +1,92 @@ # Interview walkthrough / 面试讲解 -These answers describe this repository's actual implementation and evidence. They do not -claim a real-model 100-issue experiment or maintainer-level semantic accuracy that has not run. +These answers describe measured behavior. File localization, automated causal comparison, +human accuracy, and official functional resolution have distinct meanings. ## 1. How did routing choose an agent? -I used a deterministic LangGraph supervisor over observable state. It sends every new issue -to code search. If source evidence is missing, search can refine once. With source evidence -and execution enabled, it invokes the test specialist. A real assertion failure allows one -additional search pass using the failure log. It then invokes synthesis, or returns insufficient -evidence if no source was read. A global tool budget overrides further investigation. +I used a deterministic LangGraph supervisor over observable state. Every issue starts with +code search. Missing source evidence permits another search pass. With source evidence and +execution enabled, the test specialist selects a narrow existing test and reads its output. +A real assertion failure permits another search pass using that evidence. Synthesis follows +when evidence is ready or the investigation budget is reached. No source or an explicit +model abstention yields insufficient evidence. Models choose tools within each role; the +supervisor chooses role transitions. -The model decides searches, files, and test targets inside each specialist's allowed tools. -The supervisor decides specialist transitions. Separate prompts and tool lists provide role -boundaries even when all three roles share one model. This is sequential orchestration. +Each role has its own prompt, context, and tool allowlist. The roles execute sequentially +within an issue; the benchmark can run separate issues concurrently. All three can share a +model. See [`choose_route`](../src/code_assistant/workflow.py). -**中文:** 我把角色路由做成可审计的状态规则,依据是否读到源码、是否执行过测试、 -真实退出状态和剩余预算判断下一步。模型决定角色内部用什么搜索词、读什么文件、运行 -哪个测试,但不能增加权限。对应 [`choose_route`](../src/code_assistant/workflow.py)。 +**中文:** 路由依据源码证据、是否尝试过测试、真实测试状态及预算,具有明确原因日志。 +模型决定搜索词、读取文件和测试目标。真实模型在可信示例中实际走过“搜索 → 测试 → +再搜索 → 综合”。100 条历史推理采用源码取证,官方隐藏测试在预测冻结后单独执行。 ## 2. What did the 100-issue benchmark look like? -I pinned a SWE-bench Lite dataset revision and selected 100 historical issue/merged-PR pairs -across 12 repositories. A seeded hash ranks issues within each repository; round-robin -selection improves coverage and does not depend on results. Each issue has a base commit, -the original report, a solution PR URL, and separately stored maintainer reference labels. - -I completed a deterministic retrieval baseline on all 100 pre-fix snapshots: Hit@1 was 40%, -Hit@5 was 71%, and MRR@5 was 0.5202. These are file-localization metrics. Real-model causal -accuracy remains unmeasured. The implemented review workflow requires a causal explanation -matching the maintainer fix, with reviewer/rationale fields for all 100 cases; official patch -resolution requires SWE-bench tests. Failures remain in the denominator. - -**中文:** 真实做过的是固定版本的 100 条文件定位评测。不能把 71% 写成 bug 修复率, -也不能声称已经跑过 100 条大模型诊断。根因正确性由人工对照维护者修复判定,补丁效果 -由官方回归测试判定。见[协议](BENCHMARK.md)和[运行证据](../reports/README.md)。 +I pinned SWE-bench Lite revision `b0dde1093fe417d83b7184254edf8199c1f0dff5` and selected +100 historical issue/merged-PR pairs from 12 repositories. A seed-2026 hash ranks issues +within each repository; sorted-repository round robin gives broad coverage. Selection never +uses predictions or outcomes. Actors see the report and the exact pre-fix snapshot, without +Git history, reference patches, or hidden tests. + +The deterministic retrieval baseline scored Hit@1 40%, Hit@5 71%, and MRR@5 0.5202. The +real `gpt-6.1-sol` run completed all 100 tasks with 90 cited diagnoses and 10 abstentions: +file Hit@1 87%, Hit@5 88%, MRR@5 0.875. It used reasoning medium, five model turns per role, +18 application tool calls per issue, and six workers. These configurations have different +budgets, so this is not a controlled proof that multi-agent orchestration causes an improvement. + +Post-freeze automated comparison with maintainer patches judged 87 correct, 1 partial, +2 incorrect, and 10 unscorable. That is **87% automated agreement**, with same-model bias; +complete named human adjudication has not occurred. Functional repair is separately tested +with official `swebench==5.0.2`, original hidden tests, pinned data, and recorded image digests. +The official result is **48/100 resolved**: 23 unresolved, 27 empty patches, and +2 test timeouts. Every case remains in the denominator. See [results](../reports/README.md). + +**中文:** 已真实完成 100 条模型运行。文件定位 88%、自动根因核对 87%、官方修复率 +48% 是不同指标;人工根因准确率仍为空。官方测试接受等效修复,不要求与维护者补丁逐字相同。 +公开历史问题可能进入模型训练集,因此不声称这是完全未见过的数据。 ## 3. How did the agent gather evidence before a fix? -The runnable synthetic example follows this actual sequence: - -1. `search_repository("calculate_total discount")` finds source and related tests. -2. `read_file("checkout.py")` registers the function body and line numbers. -3. `run_tests(["tests/test_checkout.py"])` produces a real result: 1 failed, 2 passed. -4. `inspect_logs("test-1")` reads the assertion showing `90.0` instead of `100`. -5. Code search reads the source again with the failed-test context. -6. Synthesis cites source/test evidence, explains why `discount or 10` replaces zero, - and proposes an explicit `None` check. - -The demo's choices are scripted, while search, reads, tests, and logs are real. In model mode, -native LangChain tool calls choose the sequence within the same boundaries. The service never -applies the patch. A separate regression test applies the demo suggestion to a temporary copy -and confirms 3 passed. - -**中文:** 先定位、读函数,再运行最小测试,读取真实断言错误,回到源码核对机制, -最后给出引用和建议。演示的模型选择是固定脚本,不能说成大模型自主推理;真实模型 -接入走相同工具协议,尚未进行在线调用。源码引用校验也不能替代正确性评测。 - -## 4. What did the structured logs reveal? - -Each run records start/end, routing reason, role, tool start/end, duration, outcome, evidence -counts, test exit codes/status, truncation, and provider token usage when supplied. Historical -runs also record snapshot hashes. Logs omit prompts, source bodies, secrets, and hidden reasoning. - -For the completed 100-issue baseline, the trace audit found 100 complete runs, 399 paired tool -calls, zero empty searches, zero tool errors, and zero truncated indexes. Scoring still found -29 top-five localization misses: successful tool execution is not successful diagnosis. -There were no LLM-routing failures to report because this baseline did not call an LLM. - -Fault-injection tests separately verify timeout handling, dependency-import/collection errors, -unknown tools, budget limits, secret redaction, and invented-citation rejection. Those are tested -failure patterns, not incidents invented for the historical benchmark. Use -`code-assistant logs runs/` to inspect actual counts and raw tool durations. - -**中文:** 我会对齐每条 issue 的开始/结束、每次工具的开始/结束,以及退出状态、耗时 -和证据数。真实基线没有执行错误,但有 29 条前五候选未命中,说明工具运行成功不等于 -诊断成功。超时、环境错误和伪造引用是在故障注入测试中验证的,不能说成真实模型评测 -期间出现过的问题。 +The real-model trusted checkout integration followed search, source reads, focused pytest, +log inspection, another search, and synthesis. The baseline actually produced **1 failed, +2 passed**. The model explained that `discount or 10` replaces explicit zero, cited registered +source/test IDs, and proposed an explicit `None` check. A separate temporary-copy check +applied that real model's suggestion and obtained **3 passed**. The original checkout remained +unchanged. A real HTTP check also completed all three roles: health 200, an unauthenticated +request 401, and an authenticated model request 200. +[HTTP evidence](../reports/real-model-api/validation.json). + +Historical inference is source-only: search repository symbols/error text, read relevant +functions/callers, then synthesize a cited cause and candidate patch. An isolated-copy +applicability check mechanically recounts hunks and runs `git apply --check`. It withheld +17 invalid patches; 73 could be submitted. Official functional tests run afterward. +The original diagnostic response keeps `patch_verified=false`; subsequent official results +are separate immutable evidence. See [real-model integration](../reports/real-model-checkout/). + +**中文:** 证据由真实工具产生,模型不能自行宣布测试通过。可信示例确实执行了测试; +历史基准在推理阶段读取修复前代码,随后在官方容器验证冻结补丁。出处校验能阻止虚构 +引用,但不能证明因果解释,因此还需要根因复核和功能测试。 + +## 4. What did structured logs reveal? + +Events capture role/route reasons, paired tool starts/ends, outcomes, duration, evidence +counts, test exit status, patch applicability, token usage, and snapshot hashes. Logs exclude +prompts, source bodies, credentials, and hidden reasoning. The real 100-task run recorded +**541 model responses and 844 paired application tool calls**, with zero unfinished traces. +There were 26 agent-step-limit events, 7 recoverable tool errors, 10 abstentions, and 17 +withheld patches. No index truncation, invalid synthesis, or run crash was observed. + +The exploratory three-task pilot exposed 56 WebSocket reconnect events. The frozen full +run used the verified HTTPS configuration and had zero reconnects and zero observed built-in +CLI tool calls. An automated review also caught a concrete causal mismatch in requests-2674: +the prediction targeted ConnectTimeoutError while the maintainer fix handled ClosedPoolError. +Successful source access therefore did not establish a correct diagnosis or working patch. + +Official test failures and infrastructure errors are retained separately, with per-issue +reports and image/patch hashes. Human accuracy stays unmeasured; logging is evidence for +execution behavior, not a substitute for semantic adjudication. Use `code-assistant logs` +and the [published event audit](../reports/model-100/log-audit.json) for actual counts. + +**中文:** 真实日志发现了连接重试、轮数上限、工具错误和补丁无法应用;自动复核还 +发现了异常类型判断错误。对应配置、哈希、失败案例和测试结果均保留,可以逐条核对。 diff --git a/docs/MODEL_EVALUATION.md b/docs/MODEL_EVALUATION.md index d9a59d3..4dc38e3 100644 --- a/docs/MODEL_EVALUATION.md +++ b/docs/MODEL_EVALUATION.md @@ -1,5 +1,13 @@ # Real-model evaluation / 真实模型评测 +The completed 100-task run produced 90 cited diagnoses and 10 abstentions, file Hit@1 87%, +Hit@5 88%, and MRR@5 0.875. Post-freeze automated root-cause comparison judged 87 correct, +1 partial, 2 incorrect, and 10 unscorable. There are 73 applicable patches and 17 withheld +candidates. Official tests resolved **48/100**: 23 unresolved, 27 empty patches, and +2 test timeouts at the fixed 600-second limit. All failures remain in the denominator. +[Per-issue official results](../reports/model-100/official-evaluation/results.json) · +[Failure analysis](FAILURE_ANALYSIS.md) · [Evidence index](../reports/README.md). + The fixed 100-task actor run uses `codex-cli:gpt-6.1-sol`, reasoning `medium`, HTTPS transport, six workers, and the budgets recorded in its manifest. Codex CLI `0.162.0-alpha.2` reuses its own local ChatGPT login. It does not require exporting @@ -32,7 +40,9 @@ configuration change. Model inference consumes the signed-in account's allowance Inference and evaluation are separate. A source-only applicability check may mechanically recount unified-diff hunk lengths, then runs `git apply --check` against a temporary copy. It changes no source and executes no repository code. Invalid/unread-path patches are withheld. -The original candidate and both hashes remain in ignored local run artifacts. +The original candidate and both hashes remain in ignored local run artifacts; the +17 withheld historical candidates are also published in +[withheld-patches.jsonl](../reports/model-100/withheld-patches.jsonl). Applicability does **not** establish functional correctness. 模型补丁冻结后,用官方 `swebench==5.0.2`、原始评测脚本及 FAIL_TO_PASS/PASS_TO_PASS @@ -54,6 +64,12 @@ It takes a frozen predictions path under `reports/`. No model login or API secre The pinned parquet checksum is verified before any official test script is used. Harness reports, test output, image digests, and errors are retained as run artifacts. +For this run, four consecutive 25-task batches let official tests overlap later inference. +`scripts/freeze_batch.py` freezes only completed newline-terminated records, preserves the +original task order, and records the parent manifest hash. The final aggregator checks each +evaluated patch hash against the full 100 predictions and rejects duplicate/missing outcomes. +Every empty patch and infrastructure error remains in the denominator. + ## Root-cause review ```bash @@ -70,6 +86,12 @@ complete named human review. Official patch resolution is a separate functional 数据;本项目控制运行时答案泄漏,无法证明训练集无污染。在线模型的别名、服务端版本、 采样及依赖镜像可能变化,需保留本次清单、预测文件哈希和镜像 digest。 +The trace audit records 26 agent turn-limit events; 10 cases abstained. To explore a larger +investigation budget, set `ASSISTANT_MAX_AGENT_STEPS=7` and use a new output directory. +That is a different experiment; preserve the original predictions and configuration. +Local HTTP validation bypasses environment proxies for loopback (`curl --noproxy 127.0.0.1` +or an HTTPX client with `trust_env=False`), after an inherited proxy intercepted the smoke test. + Primary references: [Codex non-interactive mode](https://learn.chatgpt.com/docs/non-interactive-mode), [Codex provider configuration](https://learn.chatgpt.com/docs/config-file/config-reference), [SWE-bench official evaluation guide](https://www.swebench.com/SWE-bench/guides/evaluation/). diff --git a/docs/RESUME.md b/docs/RESUME.md index 35387e9..a94d597 100644 --- a/docs/RESUME.md +++ b/docs/RESUME.md @@ -1,22 +1,38 @@ # Evidence-backed resume wording / 可核验简历表述 -Use this version for the current implementation. Replace the evaluation bullet only after -the real-model run, complete causal review, and official patch evaluation have artifacts. +The following wording describes the measured implementation and its published evidence. **Agentic Code-Search & Debugging Assistant | 2026** *LangChain, LangGraph, FastAPI, Docker* -- Built a three-specialist debugging workflow with state-based routing between code search, +- Built a three-agent debugging assistant with state-based routing between code search, focused test execution, and evidence-grounded synthesis. -- Exposed bounded repository-search, source-reading, pytest, and log-inspection tools through - LangChain's native tool-calling protocol, with registered citations and explicit abstention. -- Executed a reproducible 100-issue retrieval benchmark on historical pre-fix repository - snapshots, achieving 71% file Hit@5 against maintainer patch locations. -- Implemented a FastAPI service, Docker service/test images, structured JSONL traces, and - CI checks across three Python versions; added separate human root-cause and official - SWE-bench patch-scoring workflows. - -**中文对应:** 实现三个专职 agent、可审计路由和真实工具;完成 100 条历史问题的 -文件定位基线,前五候选命中率 71%;提供 FastAPI、Docker、结构化日志和 CI。 -目前不要写“100 条大模型诊断已完成”“根因正确率 71%”或“修复成功率 71%”。 +- Integrated bounded search, source-reading, test-running, and log-inspection tools with + validated citations, explicit abstention, and isolated patch applicability checks. +- Evaluated a real LLM on 100 pinned historical SWE-bench Lite issues across 12 repositories, + achieving 88% file Hit@5 and **48/100 functional resolutions** in official Docker tests. +- Delivered an authenticated FastAPI service, Docker images, and structured traces covering + 541 model responses and 844 tool calls; verified 75 tests and multi-version/container CI. + +**中文:** + +- 使用 LangChain/LangGraph 构建三个专职 agent,依据证据、测试状态及预算在代码搜索、 + 测试执行与综合诊断之间路由。 +- 接入真实仓库检索、源码读取、测试及日志工具,校验引用,支持证据不足时放弃, + 并在隔离副本检查补丁能否应用。 +- 在覆盖 12 个仓库的 100 条固定历史问题上运行真实 LLM,文件 Hit@5 达 88%, + 官方 SWE-bench Docker 测试确认 **48/100** 功能修复。 +- 提供带认证的 FastAPI 服务、Docker 镜像和结构化日志,记录 541 次模型响应及 + 844 次工具调用;通过 75 项测试与多 Python 版本、容器 CI。 + +The 100-task inference phase is source-only. The test specialist actually runs on trusted +repositories, demonstrated separately through real-model CLI and HTTP integration checks. +Historical hidden tests run after predictions freeze in the official evaluation environment. +Failures, abstentions, and timeouts remain in the denominator. The subset is not an official +leaderboard submission and has not undergone a controlled orchestration ablation. + +Automatic root-cause comparison judged 87 correct, 1 partial, 2 incorrect, and 10 unscorable. +This is **87% automated agreement**, with possible same-model bias. Do not describe it as +human-validated root-cause accuracy. File Hit@5, causal agreement, and functional resolution +measure different outcomes. [Evidence](../reports/README.md) · [Interview answers](INTERVIEW.md). diff --git a/docs/handoff/LATEST.md b/docs/handoff/LATEST.md index dc612e2..0a8c5a9 100644 --- a/docs/handoff/LATEST.md +++ b/docs/handoff/LATEST.md @@ -1,54 +1,71 @@ # Handoff -## Objective +## Objective and status -Complete real LLM root-cause diagnosis and patch evaluation for the existing 100 historical -issues, improve the implementation, and publish evidence with English/Chinese documentation. +Completed real LLM diagnosis and official patch evaluation for the existing 100 historical +tasks, improved the implementation, and published English/Chinese evidence. ## Scope -- Changed: only this separate `agentic-code-search` repository on `feat/real-model-evaluation`. -- Added: local-login Codex LangChain adapter, tool isolation, model-access diagnostics, - safe patch applicability checks, parallel/resumable inference, automated review, - pinned official-harness scripts and GitHub Actions workflow. -- Preserved: original historical task selection, gold isolation, retrieval baseline, - original synthetic demo, adjacent `xhs-vault-main` project and all private data. -- Credentials remain with the CLI. No auth files, API keys, private source, model reasoning, - or full source snapshots are published. - -## Evidence - -- 73 tests passed locally on Python 3.12; Ruff lint and formatting passed. -- Real CLI readiness and historical three-issue pilot succeeded. -- Pilot: 3 diagnosed, 3 localization hits, 3 applicable patches, 14 model calls, - 127,195 input tokens, 3,107 output tokens, zero observed built-in tool calls. -- Exploratory pilot used automatic WebSocket fallback (56 reconnect events). A separate - HTTPS probe succeeded without reconnects; the fixed 100-task run uses HTTPS. -- Full run: ignored `runs/model-100-20261008`; manifest freezes model, settings, source - digest, dataset/task hash, environment, CLI version, and worker count. Results pending. -- Published pilot evidence: `reports/model-pilot-3/`; source excerpts are excluded. -- Original retrieval results remain at `reports/retrieval-100/`. - -## Review Notes - -- Reviewed native tool protocol, absence of built-in CLI tools, no actor checkout in model - working directory, no raw credential access, usage accounting, and process-group timeout. -- Rejected built-in activity, unavailable application tools, malformed arguments, and - incomplete model turns. Provider errors are safe to log and do not reveal raw stderr. -- Patch checks use isolated copies to avoid Git subdirectory filtering, enforce read-file - path membership, and leave the checkout untouched. Applicability is not test resolution. -- Parallel results are persisted after each issue, sorted at completion, and duplicate or - configuration-mismatched resumption is rejected. -- Official harness is pinned to 5.0.2 and verifies the upstream parquet checksum. - Image digests are captured; empty patches, infrastructure errors, and missing outcomes - stay in the full denominator. No model credentials enter GitHub Actions. -- Residual risks: model alias drift, public-benchmark training contamination, same-model - automated-review bias, and dependency/image/network failures during official tests. -- Human root-cause accuracy remains null without complete human adjudication. - -## Next Step - -Finish the frozen 100-task inference, export its predictions, run official Docker evaluation, -compare frozen causes with maintainer fixes using labeled automated review, and publish -all measured scores, failed cases, logs and validation evidence. Update both READMEs and -resume/interview guidance from actual final results. Do not alter source during the frozen run. +- Only the separate `agentic-code-search` repository was changed. Core implementation + merged in PR #1; final results/documentation use `feat/model-benchmark-results`. +- Added a local-login Codex LangChain adapter, tool isolation, safe model diagnostics, + patch applicability checks, parallel/resumable inference, automated causal review, + official harness scripts, frozen-batch export, and Linux evaluation workflow. +- Preserved the original task selection, gold isolation, retrieval baseline, and synthetic + demo. The adjacent `xhs-vault-main` project and private data were outside scope. +- Credentials remain with the CLI. Authentication files, API keys, prompts, hidden + reasoning, full source snapshots, and private repositories are excluded from publication. + +## Frozen inference and measured results + +- Inference source commit: `3dc26ac14fe7573bb84ef851262645353842ef58`. +- Source SHA-256: `d4e5b6d72a4d66ac37e10f45ae0c900d24a439de2ee2ff1d5c6ca68fd5f1ddf1`. +- Model: `codex-cli:gpt-6.1-sol`, reasoning medium, HTTPS, 6 workers, + CLI `0.162.0-alpha.2`, five model turns per role, 18 tools per issue. +- 100 complete: 90 cited diagnoses, 10 abstentions. Hit@1 87%, Hit@5 88%, MRR@5 0.875. +- 541 model responses, 844 paired tools; 5,379,967 reported input tokens, + 124,958 output tokens, 939,008 cached input tokens. Zero built-in CLI tool calls, + transport reconnects, run crashes, unpaired tools, or unfinished traces. +- 26 role step-limit events, 7 recoverable tool errors, 17 withheld patches; 73 submitted + nonempty patches. Full inference wall time: 1,358.683187 seconds on the recorded host. +- Automated causal review: 87 correct, 1 partial, 2 incorrect, 10 unscorable. + Human root-cause accuracy remains null; same-model judgment is explicitly labeled. +- Official `swebench==5.0.2`: **48/100 resolved**, 23 unresolved, 27 empty patches, + 2 test timeouts at 600 seconds, no missing outcomes or image-pull failures. +- Four frozen 25-task batches, workflow runs `37823468905`, `37823608201`, + `37824041242`, `37824921353`. Exact patch hashes match the full predictions; + actual image digests, official reports, excerpts and raw-log hashes are published. +- Separate pilot: 3/3 official resolutions, workflow `37822223997`. Excluded from full score. +- Two post-hoc maintainer-patch sanity controls resolved with the same recorded image + digests, workflow `37827800765`. Incidental fixture/import errors still occurred but + did not block required regressions. Original model failures and 48/100 remain unchanged. + +## Validation and review + +- 75 local tests passed on Python 3.12; Ruff lint/format passed for src/tests/scripts. +- Real model CLI integration performed search/test/search/synthesis; baseline 1 failed, + 2 passed, then independent application to a temporary copy produced 3 passed. +- Real FastAPI/model integration: health 200, missing bearer token 401, authenticated + diagnosis 200, all three roles executed. Loopback HTTP clients bypass inherited proxies. +- CI validates Python 3.11/3.12/3.13 and both Docker images; see published CI evidence. +- Reviewed tool protocol, built-in activity rejection, actor-root isolation, safe provider + errors, process timeouts, patch-path confinement, unchanged source snapshots, strict + resumption, full-denominator aggregation, and absence of credentials in CI. +- Review was self-review with a fresh validation pass; no independent human review or + orchestration ablation is claimed. + +## Evidence and remaining limits + +`reports/model-100/` holds predictions, causes/citation provenance, source proof, usage, +events, failure analysis, automated review, and official evaluation. Local complete logs +and source caches remain ignored under `runs/` and `.cache/`. GitHub raw evaluation +artifacts have 30-day retention; durable reports/excerpts/hashes are committed. + +Residual limits: public-benchmark training contamination, model alias drift, same-model +review bias, 17 invalid candidates, 10 abstentions, and 2 unexplained test timeouts. +Any larger-budget, patch-correction, timeout, or single-agent comparison must use a new +manifest/output directory; do not rewrite the original predictions or score. + +GitHub Git HTTPS transport was unavailable during publication. Git Data API publication +preserved and verified exact local commit/tree identities without force-pushing. diff --git a/reports/README.md b/reports/README.md index df7375e..8cff769 100644 --- a/reports/README.md +++ b/reports/README.md @@ -1,33 +1,54 @@ # Published evidence / 运行证据 -The checked-in artifacts record real local execution on 2026-10-08. No model provider -credentials or local Docker engine were available. Docker evidence is provided separately -by the repository's [GitHub Actions runs](https://github.com/YeDonS/agentic-code-search/actions). +Real execution on 2026-10-08 includes the original retrieval baseline, a complete 100-issue +LLM run, post-freeze automated review, and official SWE-bench Docker tests on GitHub Actions. +Model inference reused a local Codex login; authentication files and API secrets are excluded. -| Artifact | Meaning | +| Evidence | Meaning | |---|---| -| `retrieval-100/manifest.json` | Ordered task IDs, data hash, settings, environment and implementation fingerprint | -| `retrieval-100/predictions.jsonl` | Actual ranked files for all 100 issues; source excerpts omitted for publication | -| `retrieval-100/scores.json` | Per-issue localization metrics and fixed 100-issue denominator | -| `retrieval-100/trace-events.jsonl` | All per-issue structured events, grouped by run ID | -| `retrieval-100/log-audit.json` | Run/tool conservation counts, failure-pattern counts, raw tool durations | -| `retrieval-100/reproduction.json` | Equality check against the first full 100-issue run | -| `demo/response.json` | Scripted diagnosis with actual source/test evidence from the original demo fixture | -| `demo/events.jsonl` | Search → test → search → synthesis transitions and real tool events | -| `validation.json` | Local checks and remaining evaluation limits | -| `github-ci.json` | Successful Docker and Python 3.11/3.12/3.13 jobs for the implementation commit | +| [Model manifest](model-100/manifest.json) | Fixed 100 tasks, model/reasoning/transport, budgets, environment, CLI version | +| [Source proof](model-100/source-proof.json) | Inference source digest matches the recorded Git commit | +| [Predictions](model-100/predictions.jsonl) | All 100 diagnoses/abstentions and submitted patches | +| [Diagnoses and citation provenance](model-100/diagnoses.jsonl) | Causal explanations, source paths/lines, route history; source excerpts omitted | +| [Localization scores](model-100/scores.json) and [final scores](model-100/final-scores.json) | File metrics and official 48/100 resolution; human accuracy remains null | +| [Official results](model-100/official-evaluation/results.json) and [manifest](model-100/official-evaluation/manifest.json) | All 100 outcomes, exact patch hashes, image digests, 20 shard manifests | +| [Failure analysis](../docs/FAILURE_ANALYSIS.md) and [counts](model-100/failure-analysis.json) | 23 test failures, 27 empty patches, 2 timeouts; complete denominator | +| [Withheld candidates](model-100/withheld-patches.jsonl) | 17 original invalid patches retained for audit | +| [Model usage](model-100/model-usage.json) | 541 responses, reported tokens, reconnects, patch checks | +| [Events](model-100/trace-events.jsonl) and [audit](model-100/log-audit.json) | 844 paired tools, budgets/errors, raw durations and trace conservation | +| [Automated causal review](model-100/automated-review/summary.json) | 87 correct, 1 partial, 2 incorrect, 10 unscorable; not human accuracy | +| [Frozen batches](model-batches/) | Four consecutive 25-task batches for overlapping official evaluation | +| [Pilot official results](model-pilot-3/official-evaluation/results.json) | Three real historical patches resolved; reports, test excerpts, raw-log hashes | +| [Maintainer controls](evaluation-controls/README.md) | Two post-hoc gold-patch controls passed required tests with the same image digests; separate from agent score | +| [Real-model checkout](real-model-checkout/) | Real search/test/synthesis routing, actual baseline failure and patched-copy success | +| [Real-model HTTP](real-model-api/validation.json) | Bearer auth and actual three-role model workflow through FastAPI | +| [Retrieval baseline](retrieval-100/scores.json) | Original Hit@1 40%, Hit@5 71%, MRR@5 0.5201667 | +| [Retrieval reproduction](retrieval-100/reproduction.json) | Second full run produced identical ranked predictions | +| [Validation](validation.json) and [CI](github-ci.json) | Local checks and actual multi-version/container evidence | -All 100 historical runs completed. File Hit@1 = **0.40**, Hit@5 = **0.71**, MRR@5 = **0.5201667**. -The audit records 100 complete runs and 399 paired tool calls, with no empty searches, tool -errors, or index truncation. There are 29 localization misses despite successful tool execution. +The LLM run completed **100/100**: 90 cited diagnoses and 10 explicit abstentions. File +Hit@1 is **87%**, Hit@5 **88%**, MRR@5 **0.875**. The automated comparison rate is **87%**; +named human adjudication remains unmeasured. There are 73 applicable patches, 17 withheld +candidates, and 10 abstentions. The complete official evaluation resolved **48/100**; +23 were unresolved, 27 had empty patches, and 2 tests timed out. No outcomes are missing. +The fixed denominator includes all empty patches, failures, and timeouts. -[The implementation CI run](https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547) -passed all four jobs, including actual container API and restricted-runner checks. -The final evidence-only documentation commit does not change the verified implementation. +Official workflow runs: [batch 1](https://github.com/YeDonS/agentic-code-search/actions/runs/37823468905), +[batch 2](https://github.com/YeDonS/agentic-code-search/actions/runs/37823608201), +[batch 3](https://github.com/YeDonS/agentic-code-search/actions/runs/37824041242), +[batch 4](https://github.com/YeDonS/agentic-code-search/actions/runs/37824921353). +The [three-issue pilot](https://github.com/YeDonS/agentic-code-search/actions/runs/37822223997) +resolved all three patches. Raw official logs remain in GitHub run artifacts and ignored +local `runs/`; durable reports/excerpts/hashes are curated here. The synthetic fixture is +excluded from the historical task set. Full source archives, prompts, and hidden reasoning +are not published. -Root-cause accuracy and patch resolution remain `null`: neither can be inferred from file -localization. The demo is synthetic, uses a fixed model script, and is excluded from the -historical benchmark. Full local responses and source archives remain in ignored directories. +Two unresolved cases with incidental test environment errors received separate maintainer +patch controls. Both controls satisfied official required regressions; unrelated errors +still occurred in the larger test output. Both original model failures remain in the +denominator. These controls do not explain the two test timeouts or change 48/100. -中文:这些是实际运行产生的文件定位与工具验证证据。100 条全部跑完,71% 只表示前五 -候选文件命中维护者修改位置。真实模型根因正确率和官方回归通过率尚未产生,不填数字。 +中文:100 条真实模型运行及官方测试已完成,官方修复率 48/100;定位命中、自动根因 +核对和官方功能修复分别评分。 +自动核对 87% 不能称为人工根因准确率。所有失败和空补丁都保留在总分母中,原始预测 +不会根据测试结果修改。镜像 digest、补丁哈希、逐条结果和日志支持核验与复现。 diff --git a/reports/evaluation-controls/README.md b/reports/evaluation-controls/README.md new file mode 100644 index 0000000..c5d8329 --- /dev/null +++ b/reports/evaluation-controls/README.md @@ -0,0 +1,37 @@ +# Maintainer-patch controls / 维护者补丁对照 + +These are **two post-hoc environment sanity checks**, separate from the agent's 100-task +experiment. The original model outputs had unresolved grades and incidental pytest +fixture/import errors. To test whether those observations invalidate the grade, the exact +pinned maintainer patches were evaluated with the same official harness and image digests. + +| Instance | Agent result | Maintainer control | Required regressions | +|---|---|---|---| +| `psf__requests-3362` | Unresolved | Resolved | 1 FAIL_TO_PASS, 75 PASS_TO_PASS | +| `pydata__xarray-4493` | Unresolved | Resolved | 1 FAIL_TO_PASS, 1,689 PASS_TO_PASS | + +Both controls passed the official required tests. Incidental fixture/import errors elsewhere +in the test output still occurred. SWE-bench grades the specified FAIL_TO_PASS/PASS_TO_PASS +requirements, so an unrelated error in the larger test suite does not alone invalidate the +grade. These controls support retaining both original unresolved outcomes. They do not +establish that every environment in the 100-task experiment is sound, explain the two +timeouts, or increase the agent's score. + +[Results](results.json) · [Manifest](manifest.json) · +[Frozen maintainer predictions](swebench-predictions.jsonl) · +[Official workflow](https://github.com/YeDonS/agentic-code-search/actions/runs/37827800765). +Per-instance reports, excerpts, image digests, and raw-log hashes are committed alongside +this file. Reference patches were used only after actor predictions froze. + +Reproduce separately from model predictions: + +```bash +# On a disposable Linux Docker host with swebench==5.0.2 installed: +uv run --no-sync python scripts/evaluate_patches.py reports/evaluation-controls/swebench-predictions.jsonl runs/new-maintainer-controls +uv run python scripts/aggregate_patch_results.py reports/evaluation-controls/swebench-predictions.jsonl runs/new-maintainer-controls runs/new-maintainer-controls-results.json +``` + +中文:两条模型失败日志包含测试夹具或依赖报错,因此使用维护者原始补丁做了额外对照。 +同一镜像 digest 和官方 harness 下,两份维护者补丁均满足指定回归要求,其他报错仍存在。 +这说明不能仅凭无关报错删除模型失败样本。本次模型修复率仍为 **48/100**;对照的 +2/2 不加入分子或分母,也不代表排除了其他样本的全部环境风险。 diff --git a/reports/evaluation-controls/manifest.json b/reports/evaluation-controls/manifest.json new file mode 100644 index 0000000..7495c19 --- /dev/null +++ b/reports/evaluation-controls/manifest.json @@ -0,0 +1,20 @@ +{ + "kind": "post-hoc maintainer-gold environment sanity control", + "instance_ids": [ + "psf__requests-3362", + "pydata__xarray-4493" + ], + "dataset_revision": "b0dde1093fe417d83b7184254edf8199c1f0dff5", + "source_sha256": "438e281d80587aa7be470896ce410557002fde02d2ceee3e099331d308f62dd3", + "predictions_sha256": "3a3741c36e1072fc930081d794784c8008e4de2e8d28a708d5e1ce64897e2c68", + "selection": "Two original unresolved cases with observed pytest plugin/fixture or pandas-xarray compatibility errors. Not a random sample or agent evaluation.", + "purpose": "Check whether unchanged official environments also block known maintainer fixes.", + "included_in_agent_score": false, + "agent_predictions_changed": false, + "harness_version": "5.0.2", + "test_timeout_seconds": 600, + "workflow_url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827800765", + "results_sha256": "0e1d4dc6176a5d71a7f94fe2950fd9058ed7a7af63b5c2af915a2ef4ca556b9c", + "conclusion": "Both maintainer patches resolved the official required tests despite incidental errors elsewhere in the test output. No original agent outcomes were excluded or revised.", + "same_image_digests_as_agent_run": true +} diff --git a/reports/evaluation-controls/psf__requests-3362/harness-summary.json b/reports/evaluation-controls/psf__requests-3362/harness-summary.json new file mode 100644 index 0000000..3b66c2b --- /dev/null +++ b/reports/evaluation-controls/psf__requests-3362/harness-summary.json @@ -0,0 +1,33 @@ +{ + "total_instances": 1, + "submitted_instances": 1, + "completed_instances": 1, + "resolved_instances": 1, + "unresolved_instances": 0, + "infra_failure_instances": 0, + "ambiguous_failure_instances": 0, + "empty_patch_instances": 0, + "error_instances": 0, + "completed_ids": [ + "psf__requests-3362" + ], + "incomplete_ids": [], + "empty_patch_ids": [], + "submitted_ids": [ + "psf__requests-3362" + ], + "resolved_ids": [ + "psf__requests-3362" + ], + "unresolved_ids": [], + "infra_failure_ids": [], + "ambiguous_failure_ids": [], + "failure_reasons": {}, + "error_ids": [], + "schema_version": 2, + "unstopped_instances": 0, + "unstopped_containers": [], + "unremoved_images": [ + "swebench/sweb.eval.x86_64.psf_1776_requests-3362:latest" + ] +} diff --git a/reports/evaluation-controls/psf__requests-3362/outcome.json b/reports/evaluation-controls/psf__requests-3362/outcome.json new file mode 100644 index 0000000..edc07c6 --- /dev/null +++ b/reports/evaluation-controls/psf__requests-3362/outcome.json @@ -0,0 +1,14 @@ +{ + "instance_id": "psf__requests-3362", + "status": "resolved", + "resolved": true, + "image": "swebench/sweb.eval.x86_64.psf_1776_requests-3362:latest", + "patch_sha256": "23e64f2da841d5d49874221e915a084e9bb1def2fcd6d6a24fd8e7dce71fba8d", + "image_id": "sha256:99e1429866dc72aa1cc58848ae7816ce0ccbcc3b1d77dd71c38c029926cd2c05", + "image_digests": [ + "swebench/sweb.eval.x86_64.psf_1776_requests-3362@sha256:c5dc4ba64a2d97d6cff6b82fe9c0561589df13f23df6883d05e99b630942bbd1" + ], + "harness_exit_code": 0, + "failure_reason": null, + "infra_failure": false +} diff --git a/reports/evaluation-controls/psf__requests-3362/raw-log-manifest.json b/reports/evaluation-controls/psf__requests-3362/raw-log-manifest.json new file mode 100644 index 0000000..329ee30 --- /dev/null +++ b/reports/evaluation-controls/psf__requests-3362/raw-log-manifest.json @@ -0,0 +1,53 @@ +{ + "workflow_url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827800765", + "artifact_name": "patch-shard-0", + "test_output_sha256": "6e78397832f4aea061592e89d4d302e19c3d770fc14751167d033ca38f2b8e9a", + "raw_lines": 2713, + "excerpt_start_line": 2550, + "excerpt_stop_line": 2709, + "trailing_whitespace_removed_for_display": true, + "display_annotations": [], + "files": { + "harness.log": { + "sha256": "421fa73e2fccdd60a4e362e2c7f5707bcd4edc9400f1fb49b0c0a42703a464a4", + "bytes": 841 + }, + "image-pull.log": { + "sha256": "5e4d3f8edb19a5ebd357817ee94e428888cb3f158221be61b027801fb53e473b", + "bytes": 1701 + }, + "logs/run_evaluation/patch-37827800765-0-0/maintainer-gold-sanity-control/psf__requests-3362/eval.sh": { + "sha256": "e1472d70f6ac96791588cd4b8c9c487179d0af95bc4d568f395317bf968c1343", + "bytes": 1427 + }, + "logs/run_evaluation/patch-37827800765-0-0/maintainer-gold-sanity-control/psf__requests-3362/patch.diff": { + "sha256": "23e64f2da841d5d49874221e915a084e9bb1def2fcd6d6a24fd8e7dce71fba8d", + "bytes": 1012 + }, + "logs/run_evaluation/patch-37827800765-0-0/maintainer-gold-sanity-control/psf__requests-3362/report.json": { + "sha256": "1d919282ca3f14c67ab7b3875389329934d19f9906d2c80c3babfdaea21e9a2e", + "bytes": 8010 + }, + "logs/run_evaluation/patch-37827800765-0-0/maintainer-gold-sanity-control/psf__requests-3362/run_instance.log": { + "sha256": "1129b9fab350bb327faefb572c3d57795695698c1b588998bff02ae7515edf67", + "bytes": 10127 + }, + "logs/run_evaluation/patch-37827800765-0-0/maintainer-gold-sanity-control/psf__requests-3362/test_output.txt": { + "sha256": "6e78397832f4aea061592e89d4d302e19c3d770fc14751167d033ca38f2b8e9a", + "bytes": 143383 + }, + "logs/run_evaluation/patch-37827800765-0-0/run.json": { + "sha256": "4e94e78d916d11eb2765cc9fa082c62552cac601cd4389d91a8fe9e24c155f61", + "bytes": 212 + }, + "predictions.jsonl": { + "sha256": "8d12d67f45b6a12e4896d2a7f3dbc38e5938ca580f5d6092f17c6bac357d37f7", + "bytes": 1162 + }, + "summary/maintainer-gold-sanity-control.patch-37827800765-0-0.json": { + "sha256": "d0859214de939735e371b1171f5fdbc00cdbc1e6784e9029fb76f33155a7d5d5", + "bytes": 830 + } + }, + "original": "GitHub Actions artifacts and ignored local runs/maintainer-controls-artifacts" +} diff --git a/reports/evaluation-controls/psf__requests-3362/report.json b/reports/evaluation-controls/psf__requests-3362/report.json new file mode 100644 index 0000000..4a509dd --- /dev/null +++ b/reports/evaluation-controls/psf__requests-3362/report.json @@ -0,0 +1,105 @@ +{ + "psf__requests-3362": { + "patch_is_None": false, + "patch_exists": true, + "patch_successfully_applied": true, + "resolved": true, + "infra_failure": false, + "tests_status": { + "FAIL_TO_PASS": { + "success": [ + "tests/test_requests.py::TestRequests::test_response_decode_unicode" + ], + "failure": [] + }, + "PASS_TO_PASS": { + "success": [ + "tests/test_requests.py::TestRequests::test_entry_points", + "tests/test_requests.py::TestRequests::test_invalid_url[MissingSchema-hiwpefhipowhefopw]", + "tests/test_requests.py::TestRequests::test_invalid_url[InvalidSchema-localhost:3128]", + "tests/test_requests.py::TestRequests::test_invalid_url[InvalidSchema-localhost.localdomain:3128/]", + "tests/test_requests.py::TestRequests::test_invalid_url[InvalidSchema-10.122.1.1:3128/]", + "tests/test_requests.py::TestRequests::test_invalid_url[InvalidURL-http://]", + "tests/test_requests.py::TestRequests::test_basic_building", + "tests/test_requests.py::TestRequests::test_path_is_not_double_encoded", + "tests/test_requests.py::TestRequests::test_params_are_added_before_fragment[http://example.com/path#fragment-http://example.com/path?a=b#fragment]", + "tests/test_requests.py::TestRequests::test_params_are_added_before_fragment[http://example.com/path?key=value#fragment-http://example.com/path?key=value&a=b#fragment]", + "tests/test_requests.py::TestRequests::test_params_original_order_is_preserved_by_default", + "tests/test_requests.py::TestRequests::test_params_bytes_are_encoded", + "tests/test_requests.py::TestRequests::test_binary_put", + "tests/test_requests.py::TestRequests::test_errors[http://doesnotexist.google.com-ConnectionError]", + "tests/test_requests.py::TestRequests::test_errors[http://localhost:1-ConnectionError]", + "tests/test_requests.py::TestRequests::test_errors[http://fe80::5054:ff:fe5a:fc0-InvalidURL]", + "tests/test_requests.py::TestRequests::test_proxy_error", + "tests/test_requests.py::TestRequests::test_non_prepared_request_error", + "tests/test_requests.py::TestRequests::test_prepare_request_with_bytestring_url", + "tests/test_requests.py::TestRequests::test_links", + "tests/test_requests.py::TestRequests::test_cookie_parameters", + "tests/test_requests.py::TestRequests::test_cookie_as_dict_keeps_len", + "tests/test_requests.py::TestRequests::test_cookie_as_dict_keeps_items", + "tests/test_requests.py::TestRequests::test_cookie_as_dict_keys", + "tests/test_requests.py::TestRequests::test_cookie_as_dict_values", + "tests/test_requests.py::TestRequests::test_cookie_as_dict_items", + "tests/test_requests.py::TestRequests::test_cookie_duplicate_names_different_domains", + "tests/test_requests.py::TestRequests::test_cookie_duplicate_names_raises_cookie_conflict_error", + "tests/test_requests.py::TestRequests::test_response_is_iterable", + "tests/test_requests.py::TestRequests::test_response_chunk_size_int", + "tests/test_requests.py::TestRequests::test_http_error", + "tests/test_requests.py::TestRequests::test_transport_adapter_ordering", + "tests/test_requests.py::TestRequests::test_long_authinfo_in_url", + "tests/test_requests.py::TestRequests::test_nonhttp_schemes_dont_check_URLs", + "tests/test_requests.py::TestRequests::test_basic_auth_str_is_always_native", + "tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid0]", + "tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid1]", + "tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid2]", + "tests/test_requests.py::TestCaseInsensitiveDict::test_docstring_example", + "tests/test_requests.py::TestCaseInsensitiveDict::test_len", + "tests/test_requests.py::TestCaseInsensitiveDict::test_getitem", + "tests/test_requests.py::TestCaseInsensitiveDict::test_fixes_649", + "tests/test_requests.py::TestCaseInsensitiveDict::test_delitem", + "tests/test_requests.py::TestCaseInsensitiveDict::test_contains", + "tests/test_requests.py::TestCaseInsensitiveDict::test_get", + "tests/test_requests.py::TestCaseInsensitiveDict::test_update", + "tests/test_requests.py::TestCaseInsensitiveDict::test_update_retains_unchanged", + "tests/test_requests.py::TestCaseInsensitiveDict::test_iter", + "tests/test_requests.py::TestCaseInsensitiveDict::test_equality", + "tests/test_requests.py::TestCaseInsensitiveDict::test_setdefault", + "tests/test_requests.py::TestCaseInsensitiveDict::test_lower_items", + "tests/test_requests.py::TestCaseInsensitiveDict::test_preserve_key_case", + "tests/test_requests.py::TestCaseInsensitiveDict::test_preserve_last_key_case", + "tests/test_requests.py::TestCaseInsensitiveDict::test_copy", + "tests/test_requests.py::TestMorselToCookieExpires::test_expires_valid_str", + "tests/test_requests.py::TestMorselToCookieExpires::test_expires_invalid_int[100-TypeError]", + "tests/test_requests.py::TestMorselToCookieExpires::test_expires_invalid_int[woops-ValueError]", + "tests/test_requests.py::TestMorselToCookieExpires::test_expires_none", + "tests/test_requests.py::TestMorselToCookieMaxAge::test_max_age_valid_int", + "tests/test_requests.py::TestMorselToCookieMaxAge::test_max_age_invalid_str", + "tests/test_requests.py::TestTimeout::test_connect_timeout", + "tests/test_requests.py::TestTimeout::test_total_timeout_connect", + "tests/test_requests.py::test_json_encodes_as_bytes", + "tests/test_requests.py::test_proxy_env_vars_override_default[http_proxy-http://example.com-socks5://proxy.com:9876]", + "tests/test_requests.py::test_proxy_env_vars_override_default[https_proxy-https://example.com-socks5://proxy.com:9876]", + "tests/test_requests.py::test_proxy_env_vars_override_default[all_proxy-http://example.com-socks5://proxy.com:9876]", + "tests/test_requests.py::test_proxy_env_vars_override_default[all_proxy-https://example.com-socks5://proxy.com:9876]", + "tests/test_requests.py::test_data_argument_accepts_tuples[data0]", + "tests/test_requests.py::test_data_argument_accepts_tuples[data1]", + "tests/test_requests.py::test_data_argument_accepts_tuples[data2]", + "tests/test_requests.py::test_prepared_copy[None]", + "tests/test_requests.py::test_prepared_copy[kwargs1]", + "tests/test_requests.py::test_prepared_copy[kwargs2]", + "tests/test_requests.py::test_prepared_copy[kwargs3]", + "tests/test_requests.py::test_vendor_aliases" + ], + "failure": [] + }, + "FAIL_TO_FAIL": { + "success": [], + "failure": [] + }, + "PASS_TO_FAIL": { + "success": [], + "failure": [] + } + } + } +} \ No newline at end of file diff --git a/reports/evaluation-controls/psf__requests-3362/test-output-excerpt.txt b/reports/evaluation-controls/psf__requests-3362/test-output-excerpt.txt new file mode 100644 index 0000000..6f234aa --- /dev/null +++ b/reports/evaluation-controls/psf__requests-3362/test-output-excerpt.txt @@ -0,0 +1,160 @@ +PASSED tests/test_requests.py::TestRequests::test_response_is_iterable +PASSED tests/test_requests.py::TestRequests::test_response_decode_unicode +PASSED tests/test_requests.py::TestRequests::test_response_chunk_size_int +PASSED tests/test_requests.py::TestRequests::test_http_error +PASSED tests/test_requests.py::TestRequests::test_transport_adapter_ordering +PASSED tests/test_requests.py::TestRequests::test_long_authinfo_in_url +PASSED tests/test_requests.py::TestRequests::test_nonhttp_schemes_dont_check_URLs +PASSED tests/test_requests.py::TestRequests::test_basic_auth_str_is_always_native +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid0] +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid1] +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_init[cid2] +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_docstring_example +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_len +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_getitem +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_fixes_649 +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_delitem +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_contains +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_get +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_update +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_update_retains_unchanged +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_iter +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_equality +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_setdefault +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_lower_items +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_preserve_key_case +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_preserve_last_key_case +PASSED tests/test_requests.py::TestCaseInsensitiveDict::test_copy +PASSED tests/test_requests.py::TestMorselToCookieExpires::test_expires_valid_str +PASSED tests/test_requests.py::TestMorselToCookieExpires::test_expires_invalid_int[100-TypeError] +PASSED tests/test_requests.py::TestMorselToCookieExpires::test_expires_invalid_int[woops-ValueError] +PASSED tests/test_requests.py::TestMorselToCookieExpires::test_expires_none +PASSED tests/test_requests.py::TestMorselToCookieMaxAge::test_max_age_valid_int +PASSED tests/test_requests.py::TestMorselToCookieMaxAge::test_max_age_invalid_str +PASSED tests/test_requests.py::TestTimeout::test_connect_timeout +PASSED tests/test_requests.py::TestTimeout::test_total_timeout_connect +PASSED tests/test_requests.py::test_json_encodes_as_bytes +PASSED tests/test_requests.py::test_proxy_env_vars_override_default[http_proxy-http://example.com-socks5://proxy.com:9876] +PASSED tests/test_requests.py::test_proxy_env_vars_override_default[https_proxy-https://example.com-socks5://proxy.com:9876] +PASSED tests/test_requests.py::test_proxy_env_vars_override_default[all_proxy-http://example.com-socks5://proxy.com:9876] +PASSED tests/test_requests.py::test_proxy_env_vars_override_default[all_proxy-https://example.com-socks5://proxy.com:9876] +PASSED tests/test_requests.py::test_data_argument_accepts_tuples[data0] +PASSED tests/test_requests.py::test_data_argument_accepts_tuples[data1] +PASSED tests/test_requests.py::test_data_argument_accepts_tuples[data2] +PASSED tests/test_requests.py::test_prepared_copy[None] +PASSED tests/test_requests.py::test_prepared_copy[kwargs1] +PASSED tests/test_requests.py::test_prepared_copy[kwargs2] +PASSED tests/test_requests.py::test_prepared_copy[kwargs3] +PASSED tests/test_requests.py::test_vendor_aliases +XFAIL tests/test_requests.py::TestRequests::test_response_iter_lines_reentrant +ERROR tests/test_requests.py::TestRequests::test_no_content_length[GET] +ERROR tests/test_requests.py::TestRequests::test_no_content_length[HEAD] +ERROR tests/test_requests.py::TestRequests::test_override_content_length +ERROR tests/test_requests.py::TestRequests::test_mixed_case_scheme_acceptable[http://] +ERROR tests/test_requests.py::TestRequests::test_mixed_case_scheme_acceptable[HTTP://] +ERROR tests/test_requests.py::TestRequests::test_mixed_case_scheme_acceptable[hTTp://] +ERROR tests/test_requests.py::TestRequests::test_mixed_case_scheme_acceptable[HttP://] +ERROR tests/test_requests.py::TestRequests::test_HTTP_200_OK_GET_ALTERNATIVE +ERROR tests/test_requests.py::TestRequests::test_HTTP_302_ALLOW_REDIRECT_GET +ERROR tests/test_requests.py::TestRequests::test_HTTP_302_TOO_MANY_REDIRECTS +ERROR tests/test_requests.py::TestRequests::test_HTTP_302_TOO_MANY_REDIRECTS_WITH_PARAMS +ERROR tests/test_requests.py::TestRequests::test_http_301_changes_post_to_get +ERROR tests/test_requests.py::TestRequests::test_http_301_doesnt_change_head_to_get +ERROR tests/test_requests.py::TestRequests::test_http_302_changes_post_to_get +ERROR tests/test_requests.py::TestRequests::test_http_302_doesnt_change_head_to_get +ERROR tests/test_requests.py::TestRequests::test_http_303_changes_post_to_get +ERROR tests/test_requests.py::TestRequests::test_http_303_doesnt_change_head_to_get +ERROR tests/test_requests.py::TestRequests::test_HTTP_200_OK_GET_WITH_PARAMS +ERROR tests/test_requests.py::TestRequests::test_HTTP_200_OK_GET_WITH_MIXED_PARAMS +ERROR tests/test_requests.py::TestRequests::test_set_cookie_on_301 +ERROR tests/test_requests.py::TestRequests::test_cookie_sent_on_redirect +ERROR tests/test_requests.py::TestRequests::test_cookie_removed_on_expire +ERROR tests/test_requests.py::TestRequests::test_cookie_quote_wrapped +ERROR tests/test_requests.py::TestRequests::test_cookie_persists_via_api +ERROR tests/test_requests.py::TestRequests::test_request_cookie_overrides_session_cookie +ERROR tests/test_requests.py::TestRequests::test_request_cookies_not_persisted +ERROR tests/test_requests.py::TestRequests::test_generic_cookiejar_works +ERROR tests/test_requests.py::TestRequests::test_param_cookiejar_works +ERROR tests/test_requests.py::TestRequests::test_requests_in_history_are_not_overridden +ERROR tests/test_requests.py::TestRequests::test_history_is_always_a_list +ERROR tests/test_requests.py::TestRequests::test_headers_on_session_with_None_are_not_sent +ERROR tests/test_requests.py::TestRequests::test_headers_preserve_order +ERROR tests/test_requests.py::TestRequests::test_user_agent_transfers[User-agent] +ERROR tests/test_requests.py::TestRequests::test_user_agent_transfers[user-agent] +ERROR tests/test_requests.py::TestRequests::test_HTTP_200_OK_HEAD +ERROR tests/test_requests.py::TestRequests::test_HTTP_200_OK_PUT +ERROR tests/test_requests.py::TestRequests::test_BASICAUTH_TUPLE_HTTP_200_OK_GET +ERROR tests/test_requests.py::TestRequests::test_basicauth_with_netrc +ERROR tests/test_requests.py::TestRequests::test_DIGEST_HTTP_200_OK_GET +ERROR tests/test_requests.py::TestRequests::test_DIGEST_AUTH_RETURNS_COOKIE +ERROR tests/test_requests.py::TestRequests::test_DIGEST_AUTH_SETS_SESSION_COOKIES +ERROR tests/test_requests.py::TestRequests::test_DIGEST_STREAM +ERROR tests/test_requests.py::TestRequests::test_DIGESTAUTH_WRONG_HTTP_401_GET +ERROR tests/test_requests.py::TestRequests::test_DIGESTAUTH_QUOTES_QOP_VALUE +ERROR tests/test_requests.py::TestRequests::test_POSTBIN_GET_POST_FILES +ERROR tests/test_requests.py::TestRequests::test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER +ERROR tests/test_requests.py::TestRequests::test_POSTBIN_GET_POST_FILES_WITH_DATA +ERROR tests/test_requests.py::TestRequests::test_conflicting_post_params +ERROR tests/test_requests.py::TestRequests::test_request_ok_set +ERROR tests/test_requests.py::TestRequests::test_status_raising +ERROR tests/test_requests.py::TestRequests::test_decompress_gzip +ERROR tests/test_requests.py::TestRequests::test_unicode_get[/get-params0] +ERROR tests/test_requests.py::TestRequests::test_unicode_get[/get-params1] +ERROR tests/test_requests.py::TestRequests::test_unicode_get[/get-params2] +ERROR tests/test_requests.py::TestRequests::test_unicode_get[/get-params3] +ERROR tests/test_requests.py::TestRequests::test_unicode_get[\xf8-params4] +ERROR tests/test_requests.py::TestRequests::test_unicode_header_name +ERROR tests/test_requests.py::TestRequests::test_pyopenssl_redirect +ERROR tests/test_requests.py::TestRequests::test_https_warnings +ERROR tests/test_requests.py::TestRequests::test_urlencoded_get_query_multivalued_param +ERROR tests/test_requests.py::TestRequests::test_different_encodings_dont_break_post +ERROR tests/test_requests.py::TestRequests::test_unicode_multipart_post[data0] +ERROR tests/test_requests.py::TestRequests::test_unicode_multipart_post[data1] +ERROR tests/test_requests.py::TestRequests::test_unicode_multipart_post[data2] +ERROR tests/test_requests.py::TestRequests::test_unicode_multipart_post[data3] +ERROR tests/test_requests.py::TestRequests::test_unicode_multipart_post_fieldnames +ERROR tests/test_requests.py::TestRequests::test_unicode_method_name +ERROR tests/test_requests.py::TestRequests::test_unicode_method_name_with_request_object +ERROR tests/test_requests.py::TestRequests::test_custom_content_type +ERROR tests/test_requests.py::TestRequests::test_hook_receives_request_arguments +ERROR tests/test_requests.py::TestRequests::test_session_hooks_are_used_with_no_request_hooks +ERROR tests/test_requests.py::TestRequests::test_session_hooks_are_overridden_by_request_hooks +ERROR tests/test_requests.py::TestRequests::test_prepared_request_hook +ERROR tests/test_requests.py::TestRequests::test_prepared_from_session +ERROR tests/test_requests.py::TestRequests::test_time_elapsed_blank +ERROR tests/test_requests.py::TestRequests::test_request_and_response_are_pickleable +ERROR tests/test_requests.py::TestRequests::test_cannot_send_unprepared_requests +ERROR tests/test_requests.py::TestRequests::test_session_pickling +ERROR tests/test_requests.py::TestRequests::test_fixes_1329 +ERROR tests/test_requests.py::TestRequests::test_uppercase_scheme_redirect +ERROR tests/test_requests.py::TestRequests::test_header_remove_is_case_insensitive +ERROR tests/test_requests.py::TestRequests::test_params_are_merged_case_sensitive +ERROR tests/test_requests.py::TestRequests::test_header_keys_are_native +ERROR tests/test_requests.py::TestRequests::test_can_send_objects_with_files[foo0] +ERROR tests/test_requests.py::TestRequests::test_can_send_objects_with_files[foo1] +ERROR tests/test_requests.py::TestRequests::test_can_send_objects_with_files[files2] +ERROR tests/test_requests.py::TestRequests::test_can_send_file_object_with_non_string_filename +ERROR tests/test_requests.py::TestRequests::test_autoset_header_values_are_native +ERROR tests/test_requests.py::TestRequests::test_auth_is_stripped_on_redirect_off_host +ERROR tests/test_requests.py::TestRequests::test_auth_is_retained_for_redirect_on_host +ERROR tests/test_requests.py::TestRequests::test_manual_redirect_with_partial_body_read +ERROR tests/test_requests.py::TestRequests::test_redirect_with_wrong_gzipped_header +ERROR tests/test_requests.py::TestRequests::test_requests_history_is_saved +ERROR tests/test_requests.py::TestRequests::test_json_param_post_content_type_works +ERROR tests/test_requests.py::TestRequests::test_json_param_post_should_not_override_data_param +ERROR tests/test_requests.py::TestRequests::test_response_iter_lines +ERROR tests/test_requests.py::TestRequests::test_unconsumed_session_response_closes_connection +ERROR tests/test_requests.py::TestRequests::test_session_close_proxy_clear +ERROR tests/test_requests.py::TestRequests::test_response_json_when_content_is_None +ERROR tests/test_requests.py::TestTimeout::test_stream_timeout +ERROR tests/test_requests.py::TestTimeout::test_invalid_timeout[timeout0-(connect, read)] +ERROR tests/test_requests.py::TestTimeout::test_invalid_timeout[foo-must be an int or float] +ERROR tests/test_requests.py::TestTimeout::test_none_timeout +ERROR tests/test_requests.py::TestTimeout::test_read_timeout +ERROR tests/test_requests.py::TestTimeout::test_encoded_methods +ERROR tests/test_requests.py::test_requests_are_updated_each_time +ERROR tests/test_requests.py::test_urllib3_retries +ERROR tests/test_requests.py::test_urllib3_pool_connection_closed +============ 76 passed, 1 xfailed, 22 warnings, 108 errors in 0.61s ============ ++ SWEBENCH_TEST_EXIT_CODE=1 ++ : '>>>>> End Test Output' diff --git a/reports/evaluation-controls/pydata__xarray-4493/harness-summary.json b/reports/evaluation-controls/pydata__xarray-4493/harness-summary.json new file mode 100644 index 0000000..6e0e21d --- /dev/null +++ b/reports/evaluation-controls/pydata__xarray-4493/harness-summary.json @@ -0,0 +1,33 @@ +{ + "total_instances": 1, + "submitted_instances": 1, + "completed_instances": 1, + "resolved_instances": 1, + "unresolved_instances": 0, + "infra_failure_instances": 0, + "ambiguous_failure_instances": 0, + "empty_patch_instances": 0, + "error_instances": 0, + "completed_ids": [ + "pydata__xarray-4493" + ], + "incomplete_ids": [], + "empty_patch_ids": [], + "submitted_ids": [ + "pydata__xarray-4493" + ], + "resolved_ids": [ + "pydata__xarray-4493" + ], + "unresolved_ids": [], + "infra_failure_ids": [], + "ambiguous_failure_ids": [], + "failure_reasons": {}, + "error_ids": [], + "schema_version": 2, + "unstopped_instances": 0, + "unstopped_containers": [], + "unremoved_images": [ + "swebench/sweb.eval.x86_64.pydata_1776_xarray-4493:latest" + ] +} diff --git a/reports/evaluation-controls/pydata__xarray-4493/outcome.json b/reports/evaluation-controls/pydata__xarray-4493/outcome.json new file mode 100644 index 0000000..4fc0233 --- /dev/null +++ b/reports/evaluation-controls/pydata__xarray-4493/outcome.json @@ -0,0 +1,14 @@ +{ + "instance_id": "pydata__xarray-4493", + "status": "resolved", + "resolved": true, + "image": "swebench/sweb.eval.x86_64.pydata_1776_xarray-4493:latest", + "patch_sha256": "22bc8533c9a98fcafe60dac9502e8196f2b7fd50cfd1e6225bb6f4be43522a47", + "image_id": "sha256:0a179c47d0f46a4fd8695c1f433cdaa129501cca2b4a0bd43b035daba0514550", + "image_digests": [ + "swebench/sweb.eval.x86_64.pydata_1776_xarray-4493@sha256:5c94544db403737d9f88cfb75afeb9444226072860af86e830ebbc7478287c20" + ], + "harness_exit_code": 0, + "failure_reason": null, + "infra_failure": false +} diff --git a/reports/evaluation-controls/pydata__xarray-4493/raw-log-manifest.json b/reports/evaluation-controls/pydata__xarray-4493/raw-log-manifest.json new file mode 100644 index 0000000..f6e6fea --- /dev/null +++ b/reports/evaluation-controls/pydata__xarray-4493/raw-log-manifest.json @@ -0,0 +1,53 @@ +{ + "workflow_url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827800765", + "artifact_name": "patch-shard-1", + "test_output_sha256": "0e6576af348976cc9d8abf9fce209a1ea9d5594da63736815b223f70ca113f3a", + "raw_lines": 7762, + "excerpt_start_line": 7600, + "excerpt_stop_line": 7759, + "trailing_whitespace_removed_for_display": true, + "display_annotations": [], + "files": { + "harness.log": { + "sha256": "7c65547d9b9a8c27963b63577797440bf295ac58d6e390c0c16572879de44562", + "bytes": 842 + }, + "image-pull.log": { + "sha256": "435a7f8546b7554cc732e624e7760343db6ec8003c4e42359ecc40a34c166596", + "bytes": 1671 + }, + "logs/run_evaluation/patch-37827800765-1-1/maintainer-gold-sanity-control/pydata__xarray-4493/eval.sh": { + "sha256": "b7b5b22031a9e482c6bc84c31fe00d4935bdbdbb579dfe4af3eeb071c5c5415a", + "bytes": 3748 + }, + "logs/run_evaluation/patch-37827800765-1-1/maintainer-gold-sanity-control/pydata__xarray-4493/patch.diff": { + "sha256": "22bc8533c9a98fcafe60dac9502e8196f2b7fd50cfd1e6225bb6f4be43522a47", + "bytes": 844 + }, + "logs/run_evaluation/patch-37827800765-1-1/maintainer-gold-sanity-control/pydata__xarray-4493/report.json": { + "sha256": "1a5da320ad588d10b8a39aa74992a6d365a991319351cbf5a6d70247d4023195", + "bytes": 158537 + }, + "logs/run_evaluation/patch-37827800765-1-1/maintainer-gold-sanity-control/pydata__xarray-4493/run_instance.log": { + "sha256": "a0a0aabd059f5a5f4ab8a617018a21133d0e9469ee819aca6462c50f0f5cae8e", + "bytes": 128066 + }, + "logs/run_evaluation/patch-37827800765-1-1/maintainer-gold-sanity-control/pydata__xarray-4493/test_output.txt": { + "sha256": "0e6576af348976cc9d8abf9fce209a1ea9d5594da63736815b223f70ca113f3a", + "bytes": 386866 + }, + "logs/run_evaluation/patch-37827800765-1-1/run.json": { + "sha256": "bd3a527fff6f30ab438e0b4e183587c1eb4fd0288db72268f0f48c5ee4cc6fdd", + "bytes": 213 + }, + "predictions.jsonl": { + "sha256": "d2b8221810830406c0f4e63369a76a17919727e90e93482886291714beb99828", + "bytes": 986 + }, + "summary/maintainer-gold-sanity-control.patch-37827800765-1-1.json": { + "sha256": "4721d491a157f1aacb62e16d6ec1d96573c2bcb40cc3abab5edecbba66689cd3", + "bytes": 834 + } + }, + "original": "GitHub Actions artifacts and ignored local runs/maintainer-controls-artifacts" +} diff --git a/reports/evaluation-controls/pydata__xarray-4493/report.json b/reports/evaluation-controls/pydata__xarray-4493/report.json new file mode 100644 index 0000000..442d134 --- /dev/null +++ b/reports/evaluation-controls/pydata__xarray-4493/report.json @@ -0,0 +1,1719 @@ +{ + "pydata__xarray-4493": { + "patch_is_None": false, + "patch_exists": true, + "patch_successfully_applied": true, + "resolved": true, + "infra_failure": false, + "tests_status": { + "FAIL_TO_PASS": { + "success": [ + "xarray/tests/test_variable.py::TestVariable::test_as_variable" + ], + "failure": [] + }, + "PASS_TO_PASS": { + "success": [ + "xarray/tests/test_dask.py::test_raise_if_dask_computes", + "xarray/tests/test_dask.py::TestVariable::test_basics", + "xarray/tests/test_dask.py::TestVariable::test_copy", + "xarray/tests/test_dask.py::TestVariable::test_chunk", + "xarray/tests/test_dask.py::TestVariable::test_indexing", + "xarray/tests/test_dask.py::TestVariable::test_squeeze", + "xarray/tests/test_dask.py::TestVariable::test_equals", + "xarray/tests/test_dask.py::TestVariable::test_transpose", + "xarray/tests/test_dask.py::TestVariable::test_shift", + "xarray/tests/test_dask.py::TestVariable::test_roll", + "xarray/tests/test_dask.py::TestVariable::test_unary_op", + "xarray/tests/test_dask.py::TestVariable::test_binary_op", + "xarray/tests/test_dask.py::TestVariable::test_repr", + "xarray/tests/test_dask.py::TestVariable::test_pickle", + "xarray/tests/test_dask.py::TestVariable::test_reduce", + "xarray/tests/test_dask.py::TestVariable::test_missing_values", + "xarray/tests/test_dask.py::TestVariable::test_concat", + "xarray/tests/test_dask.py::TestVariable::test_missing_methods", + "xarray/tests/test_dask.py::TestVariable::test_univariate_ufunc", + "xarray/tests/test_dask.py::TestVariable::test_bivariate_ufunc", + "xarray/tests/test_dask.py::TestVariable::test_compute", + "xarray/tests/test_dask.py::TestVariable::test_persist", + "xarray/tests/test_dask.py::TestVariable::test_tokenize_duck_dask_array", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_rechunk", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_new_chunk", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_lazy_dataset", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_lazy_array", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_compute", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_persist", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_concat_loads_variables", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_groupby", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_rolling", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_groupby_first", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_reindex", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_to_dataset_roundtrip", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_merge", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_ufuncs", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_where_dispatching", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_simultaneous_compute", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_stack", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dot", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataarray_repr", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataset_repr", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataarray_pickle", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataset_pickle", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataarray_getattr", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_dataset_getattr", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_values", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_from_dask_variable", + "xarray/tests/test_dask.py::TestDataArrayAndDataset::test_tokenize_duck_dask_array", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_2D", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_coordinates", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_not_daskarray", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_no_coordinate", + "xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_dim_order", + "xarray/tests/test_dask.py::test_dask_kwargs_variable[load]", + "xarray/tests/test_dask.py::test_dask_kwargs_variable[compute]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataarray[load]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataarray[compute]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataarray[persist]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataset[load]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataset[compute]", + "xarray/tests/test_dask.py::test_dask_kwargs_dataset[persist]", + "xarray/tests/test_dask.py::test_persist_Dataset[0]", + "xarray/tests/test_dask.py::test_persist_DataArray[0]", + "xarray/tests/test_dask.py::test_persist_DataArray[1]", + "xarray/tests/test_dask.py::test_dataarray_with_dask_coords", + "xarray/tests/test_dask.py::test_basic_compute", + "xarray/tests/test_dask.py::test_dask_layers_and_dependencies", + "xarray/tests/test_dask.py::test_unify_chunks", + "xarray/tests/test_dask.py::test_unify_chunks_shallow_copy[0-obj0]", + "xarray/tests/test_dask.py::test_unify_chunks_shallow_copy[0-obj1]", + "xarray/tests/test_dask.py::test_unify_chunks_shallow_copy[1-obj0]", + "xarray/tests/test_dask.py::test_unify_chunks_shallow_copy[1-obj1]", + "xarray/tests/test_dask.py::test_auto_chunk_da[obj0]", + "xarray/tests/test_dask.py::test_make_meta", + "xarray/tests/test_dask.py::test_identical_coords_no_computes", + "xarray/tests/test_dask.py::test_token_changes_on_transform[0-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[0-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[0-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[0-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[1-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[1-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[1-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[1-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[2-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[2-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[2-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[2-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[3-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[3-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[3-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[3-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[4-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[4-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[4-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[4-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[5-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[5-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[5-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[5-obj3]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[6-obj0]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[6-obj1]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[6-obj2]", + "xarray/tests/test_dask.py::test_token_changes_on_transform[6-obj3]", + "xarray/tests/test_dask.py::test_token_changes_when_data_changes[obj0]", + "xarray/tests/test_dask.py::test_token_changes_when_data_changes[obj1]", + "xarray/tests/test_dask.py::test_token_changes_when_data_changes[obj2]", + "xarray/tests/test_dask.py::test_token_changes_when_data_changes[obj3]", + "xarray/tests/test_dask.py::test_token_changes_when_buffer_changes[obj0]", + "xarray/tests/test_dask.py::test_token_changes_when_buffer_changes[obj1]", + "xarray/tests/test_dask.py::test_token_identical[obj0-0]", + "xarray/tests/test_dask.py::test_token_identical[obj0-1]", + "xarray/tests/test_dask.py::test_token_identical[obj0-2]", + "xarray/tests/test_dask.py::test_token_identical[obj1-0]", + "xarray/tests/test_dask.py::test_token_identical[obj1-1]", + "xarray/tests/test_dask.py::test_token_identical[obj1-2]", + "xarray/tests/test_dask.py::test_token_identical[obj2-0]", + "xarray/tests/test_dask.py::test_token_identical[obj2-1]", + "xarray/tests/test_dask.py::test_token_identical[obj2-2]", + "xarray/tests/test_dask.py::test_recursive_token", + "xarray/tests/test_dask.py::test_normalize_token_with_backend", + "xarray/tests/test_dask.py::test_lazy_array_equiv_variables[broadcast_equals]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_variables[equals]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_variables[identical]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_variables[no_conflicts]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_merge[broadcast_equals]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_merge[equals]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_merge[identical]", + "xarray/tests/test_dask.py::test_lazy_array_equiv_merge[no_conflicts]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[0-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[0-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[1-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[1-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[2-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[2-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[3-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[3-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[4-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[4-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[5-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[5-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[6-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[6-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[7-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[7-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[8-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[8-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[9-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[9-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[10-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[10-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[11-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[11-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[12-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[12-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[13-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[13-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[14-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[14-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[15-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[15-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[16-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[16-obj1]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[17-obj0]", + "xarray/tests/test_dask.py::test_transforms_pass_lazy_array_equiv[17-obj1]", + "xarray/tests/test_dask.py::test_more_transforms_pass_lazy_array_equiv", + "xarray/tests/test_dask.py::test_optimize", + "xarray/tests/test_dataset.py::TestDataset::test_repr", + "xarray/tests/test_dataset.py::TestDataset::test_repr_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_repr_period_index", + "xarray/tests/test_dataset.py::TestDataset::test_unicode_data", + "xarray/tests/test_dataset.py::TestDataset::test_repr_nep18", + "xarray/tests/test_dataset.py::TestDataset::test_info", + "xarray/tests/test_dataset.py::TestDataset::test_constructor", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_invalid_dims", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_1d", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_0d", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_deprecated", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_auto_align", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_pandas_sequence", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_pandas_single", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_compat", + "xarray/tests/test_dataset.py::TestDataset::test_constructor_with_coords", + "xarray/tests/test_dataset.py::TestDataset::test_properties", + "xarray/tests/test_dataset.py::TestDataset::test_asarray", + "xarray/tests/test_dataset.py::TestDataset::test_get_index", + "xarray/tests/test_dataset.py::TestDataset::test_attr_access", + "xarray/tests/test_dataset.py::TestDataset::test_variable", + "xarray/tests/test_dataset.py::TestDataset::test_modify_inplace", + "xarray/tests/test_dataset.py::TestDataset::test_coords_properties", + "xarray/tests/test_dataset.py::TestDataset::test_coords_modify", + "xarray/tests/test_dataset.py::TestDataset::test_update_index", + "xarray/tests/test_dataset.py::TestDataset::test_coords_setitem_with_new_dimension", + "xarray/tests/test_dataset.py::TestDataset::test_coords_setitem_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_coords_set", + "xarray/tests/test_dataset.py::TestDataset::test_coords_to_dataset", + "xarray/tests/test_dataset.py::TestDataset::test_coords_merge", + "xarray/tests/test_dataset.py::TestDataset::test_coords_merge_mismatched_shape", + "xarray/tests/test_dataset.py::TestDataset::test_data_vars_properties", + "xarray/tests/test_dataset.py::TestDataset::test_equals_and_identical", + "xarray/tests/test_dataset.py::TestDataset::test_equals_failures", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast_equals", + "xarray/tests/test_dataset.py::TestDataset::test_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_chunk", + "xarray/tests/test_dataset.py::TestDataset::test_dask_is_lazy", + "xarray/tests/test_dataset.py::TestDataset::test_isel", + "xarray/tests/test_dataset.py::TestDataset::test_isel_fancy", + "xarray/tests/test_dataset.py::TestDataset::test_isel_dataarray", + "xarray/tests/test_dataset.py::TestDataset::test_sel", + "xarray/tests/test_dataset.py::TestDataset::test_sel_dataarray", + "xarray/tests/test_dataset.py::TestDataset::test_sel_dataarray_mindex", + "xarray/tests/test_dataset.py::TestDataset::test_categorical_index", + "xarray/tests/test_dataset.py::TestDataset::test_categorical_reindex", + "xarray/tests/test_dataset.py::TestDataset::test_sel_drop", + "xarray/tests/test_dataset.py::TestDataset::test_isel_drop", + "xarray/tests/test_dataset.py::TestDataset::test_head", + "xarray/tests/test_dataset.py::TestDataset::test_tail", + "xarray/tests/test_dataset.py::TestDataset::test_thin", + "xarray/tests/test_dataset.py::TestDataset::test_sel_fancy", + "xarray/tests/test_dataset.py::TestDataset::test_sel_method", + "xarray/tests/test_dataset.py::TestDataset::test_loc", + "xarray/tests/test_dataset.py::TestDataset::test_selection_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast_like", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_like", + "xarray/tests/test_dataset.py::TestDataset::test_reindex", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_warning", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_variables_copied", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_method", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_fill_value[fill_value0]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_fill_value[2]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_fill_value[2.0]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_fill_value[fill_value3]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_like_fill_value[fill_value0]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_like_fill_value[2]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_like_fill_value[2.0]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_like_fill_value[fill_value3]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_str_dtype[str]", + "xarray/tests/test_dataset.py::TestDataset::test_reindex_str_dtype[bytes]", + "xarray/tests/test_dataset.py::TestDataset::test_align_fill_value[fill_value0]", + "xarray/tests/test_dataset.py::TestDataset::test_align_fill_value[2]", + "xarray/tests/test_dataset.py::TestDataset::test_align_fill_value[2.0]", + "xarray/tests/test_dataset.py::TestDataset::test_align_fill_value[fill_value3]", + "xarray/tests/test_dataset.py::TestDataset::test_align", + "xarray/tests/test_dataset.py::TestDataset::test_align_exact", + "xarray/tests/test_dataset.py::TestDataset::test_align_override", + "xarray/tests/test_dataset.py::TestDataset::test_align_exclude", + "xarray/tests/test_dataset.py::TestDataset::test_align_nocopy", + "xarray/tests/test_dataset.py::TestDataset::test_align_indexes", + "xarray/tests/test_dataset.py::TestDataset::test_align_non_unique", + "xarray/tests/test_dataset.py::TestDataset::test_align_str_dtype", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast_nocopy", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast_exclude", + "xarray/tests/test_dataset.py::TestDataset::test_broadcast_misaligned", + "xarray/tests/test_dataset.py::TestDataset::test_variable_indexing", + "xarray/tests/test_dataset.py::TestDataset::test_drop_variables", + "xarray/tests/test_dataset.py::TestDataset::test_drop_index_labels", + "xarray/tests/test_dataset.py::TestDataset::test_drop_labels_by_keyword", + "xarray/tests/test_dataset.py::TestDataset::test_drop_labels_by_position", + "xarray/tests/test_dataset.py::TestDataset::test_drop_dims", + "xarray/tests/test_dataset.py::TestDataset::test_copy", + "xarray/tests/test_dataset.py::TestDataset::test_copy_with_data", + "xarray/tests/test_dataset.py::TestDataset::test_copy_with_data_errors", + "xarray/tests/test_dataset.py::TestDataset::test_rename", + "xarray/tests/test_dataset.py::TestDataset::test_rename_old_name", + "xarray/tests/test_dataset.py::TestDataset::test_rename_same_name", + "xarray/tests/test_dataset.py::TestDataset::test_rename_dims", + "xarray/tests/test_dataset.py::TestDataset::test_rename_vars", + "xarray/tests/test_dataset.py::TestDataset::test_rename_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_rename_does_not_change_CFTimeIndex_type", + "xarray/tests/test_dataset.py::TestDataset::test_rename_does_not_change_DatetimeIndex_type", + "xarray/tests/test_dataset.py::TestDataset::test_swap_dims", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_error", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_int", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_coords", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_existing_scalar_coord", + "xarray/tests/test_dataset.py::TestDataset::test_isel_expand_dims_roundtrip", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_mixed_int_and_coords", + "xarray/tests/test_dataset.py::TestDataset::test_expand_dims_kwargs_python36plus", + "xarray/tests/test_dataset.py::TestDataset::test_set_index", + "xarray/tests/test_dataset.py::TestDataset::test_reset_index", + "xarray/tests/test_dataset.py::TestDataset::test_reset_index_keep_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_reorder_levels", + "xarray/tests/test_dataset.py::TestDataset::test_stack", + "xarray/tests/test_dataset.py::TestDataset::test_unstack", + "xarray/tests/test_dataset.py::TestDataset::test_unstack_errors", + "xarray/tests/test_dataset.py::TestDataset::test_unstack_fill_value", + "xarray/tests/test_dataset.py::TestDataset::test_unstack_sparse", + "xarray/tests/test_dataset.py::TestDataset::test_stack_unstack_fast", + "xarray/tests/test_dataset.py::TestDataset::test_stack_unstack_slow", + "xarray/tests/test_dataset.py::TestDataset::test_to_stacked_array_invalid_sample_dims", + "xarray/tests/test_dataset.py::TestDataset::test_to_stacked_array_name", + "xarray/tests/test_dataset.py::TestDataset::test_to_stacked_array_dtype_dims", + "xarray/tests/test_dataset.py::TestDataset::test_to_stacked_array_to_unstacked_dataset", + "xarray/tests/test_dataset.py::TestDataset::test_to_stacked_array_to_unstacked_dataset_different_dimension", + "xarray/tests/test_dataset.py::TestDataset::test_update", + "xarray/tests/test_dataset.py::TestDataset::test_update_overwrite_coords", + "xarray/tests/test_dataset.py::TestDataset::test_update_auto_align", + "xarray/tests/test_dataset.py::TestDataset::test_getitem", + "xarray/tests/test_dataset.py::TestDataset::test_getitem_hashable", + "xarray/tests/test_dataset.py::TestDataset::test_virtual_variables_default_coords", + "xarray/tests/test_dataset.py::TestDataset::test_virtual_variables_time", + "xarray/tests/test_dataset.py::TestDataset::test_virtual_variable_same_name", + "xarray/tests/test_dataset.py::TestDataset::test_virtual_variable_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_time_season", + "xarray/tests/test_dataset.py::TestDataset::test_slice_virtual_variable", + "xarray/tests/test_dataset.py::TestDataset::test_setitem", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_pandas", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_auto_align", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_dimension_override", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_with_coords", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_align_new_indexes", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_str_dtype[str]", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_str_dtype[bytes]", + "xarray/tests/test_dataset.py::TestDataset::test_assign", + "xarray/tests/test_dataset.py::TestDataset::test_assign_coords", + "xarray/tests/test_dataset.py::TestDataset::test_assign_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_assign_multiindex_level", + "xarray/tests/test_dataset.py::TestDataset::test_merge_multiindex_level", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_original_non_unique_index", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_both_non_unique_index", + "xarray/tests/test_dataset.py::TestDataset::test_setitem_multiindex_level", + "xarray/tests/test_dataset.py::TestDataset::test_delitem", + "xarray/tests/test_dataset.py::TestDataset::test_squeeze", + "xarray/tests/test_dataset.py::TestDataset::test_squeeze_drop", + "xarray/tests/test_dataset.py::TestDataset::test_groupby", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_returns_new_type", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_iter", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_errors", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_reduce", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_math", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_math_virtual", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_nan", + "xarray/tests/test_dataset.py::TestDataset::test_groupby_order", + "xarray/tests/test_dataset.py::TestDataset::test_resample_and_first", + "xarray/tests/test_dataset.py::TestDataset::test_resample_min_count", + "xarray/tests/test_dataset.py::TestDataset::test_resample_by_mean_with_keep_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_resample_loffset", + "xarray/tests/test_dataset.py::TestDataset::test_resample_by_mean_discarding_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_resample_by_last_discarding_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_resample_drop_nondim_coords", + "xarray/tests/test_dataset.py::TestDataset::test_resample_old_api", + "xarray/tests/test_dataset.py::TestDataset::test_resample_ds_da_are_the_same", + "xarray/tests/test_dataset.py::TestDataset::test_ds_resample_apply_func_args", + "xarray/tests/test_dataset.py::TestDataset::test_to_array", + "xarray/tests/test_dataset.py::TestDataset::test_to_and_from_dataframe", + "xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_sparse", + "xarray/tests/test_dataset.py::TestDataset::test_to_and_from_empty_dataframe", + "xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_unsorted_levels", + "xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_non_unique_columns", + "xarray/tests/test_dataset.py::TestDataset::test_convert_dataframe_with_many_types_and_multiindex", + "xarray/tests/test_dataset.py::TestDataset::test_to_and_from_dict", + "xarray/tests/test_dataset.py::TestDataset::test_to_and_from_dict_with_time_dim", + "xarray/tests/test_dataset.py::TestDataset::test_to_and_from_dict_with_nan_nat", + "xarray/tests/test_dataset.py::TestDataset::test_to_dict_with_numpy_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_pickle", + "xarray/tests/test_dataset.py::TestDataset::test_lazy_load", + "xarray/tests/test_dataset.py::TestDataset::test_dropna", + "xarray/tests/test_dataset.py::TestDataset::test_fillna", + "xarray/tests/test_dataset.py::TestDataset::test_propagate_attrs[0]", + "xarray/tests/test_dataset.py::TestDataset::test_propagate_attrs[1]", + "xarray/tests/test_dataset.py::TestDataset::test_propagate_attrs[absolute]", + "xarray/tests/test_dataset.py::TestDataset::test_propagate_attrs[abs]", + "xarray/tests/test_dataset.py::TestDataset::test_where", + "xarray/tests/test_dataset.py::TestDataset::test_where_other", + "xarray/tests/test_dataset.py::TestDataset::test_where_drop", + "xarray/tests/test_dataset.py::TestDataset::test_where_drop_empty", + "xarray/tests/test_dataset.py::TestDataset::test_where_drop_no_indexes", + "xarray/tests/test_dataset.py::TestDataset::test_reduce", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_coords", + "xarray/tests/test_dataset.py::TestDataset::test_mean_uint_dtype", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_bad_dim", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_cumsum", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_cumsum_test_dims", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_non_numeric", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_strings", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_dtypes", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_keep_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_argmin", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_scalars", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_only_one_axis", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_no_axis", + "xarray/tests/test_dataset.py::TestDataset::test_reduce_keepdims", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[0.25-True]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[0.25-False]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[q1-True]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[q1-False]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[q2-True]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile[q2-False]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile_skipna[True]", + "xarray/tests/test_dataset.py::TestDataset::test_quantile_skipna[False]", + "xarray/tests/test_dataset.py::TestDataset::test_rank", + "xarray/tests/test_dataset.py::TestDataset::test_count", + "xarray/tests/test_dataset.py::TestDataset::test_map", + "xarray/tests/test_dataset.py::TestDataset::test_apply_pending_deprecated_map", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_number_math", + "xarray/tests/test_dataset.py::TestDataset::test_unary_ops", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_array_math", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_dataset_math", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_math_auto_align", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_math_errors", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_transpose", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_ellipsis_transpose_different_ordered_vars", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_retains_period_index_on_transpose", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_n1_simple", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_n1_label", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_n1", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_n2", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_exception_n_neg", + "xarray/tests/test_dataset.py::TestDataset::test_dataset_diff_exception_label_str", + "xarray/tests/test_dataset.py::TestDataset::test_shift[fill_value0]", + "xarray/tests/test_dataset.py::TestDataset::test_shift[2]", + "xarray/tests/test_dataset.py::TestDataset::test_shift[2.0]", + "xarray/tests/test_dataset.py::TestDataset::test_shift[fill_value3]", + "xarray/tests/test_dataset.py::TestDataset::test_roll_coords", + "xarray/tests/test_dataset.py::TestDataset::test_roll_no_coords", + "xarray/tests/test_dataset.py::TestDataset::test_roll_coords_none", + "xarray/tests/test_dataset.py::TestDataset::test_roll_multidim", + "xarray/tests/test_dataset.py::TestDataset::test_real_and_imag", + "xarray/tests/test_dataset.py::TestDataset::test_setattr_raises", + "xarray/tests/test_dataset.py::TestDataset::test_filter_by_attrs", + "xarray/tests/test_dataset.py::TestDataset::test_binary_op_propagate_indexes", + "xarray/tests/test_dataset.py::TestDataset::test_binary_op_join_setting", + "xarray/tests/test_dataset.py::TestDataset::test_full_like", + "xarray/tests/test_dataset.py::TestDataset::test_combine_first", + "xarray/tests/test_dataset.py::TestDataset::test_sortby", + "xarray/tests/test_dataset.py::TestDataset::test_attribute_access", + "xarray/tests/test_dataset.py::TestDataset::test_ipython_key_completion", + "xarray/tests/test_dataset.py::TestDataset::test_polyfit_output", + "xarray/tests/test_dataset.py::TestDataset::test_pad", + "xarray/tests/test_dataset.py::TestDataset::test_astype_attrs", + "xarray/tests/test_dataset.py::test_isin[test_elements0]", + "xarray/tests/test_dataset.py::test_isin[test_elements1]", + "xarray/tests/test_dataset.py::test_isin[test_elements2]", + "xarray/tests/test_dataset.py::test_isin_dask[test_elements0]", + "xarray/tests/test_dataset.py::test_isin_dask[test_elements1]", + "xarray/tests/test_dataset.py::test_isin_dask[test_elements2]", + "xarray/tests/test_dataset.py::test_isin_dataset", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords0]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords1]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords2]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords3]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords4]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords5]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords6]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords7]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords8]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords0-unaligned_coords9]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords0]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords1]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords2]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords3]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords4]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords5]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords6]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords7]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords8]", + "xarray/tests/test_dataset.py::test_dataset_constructor_aligns_to_explicit_coords[coords1-unaligned_coords9]", + "xarray/tests/test_dataset.py::test_error_message_on_set_supplied", + "xarray/tests/test_dataset.py::test_constructor_raises_with_invalid_coords[unaligned_coords0]", + "xarray/tests/test_dataset.py::test_dir_expected_attrs[None]", + "xarray/tests/test_dataset.py::test_dir_non_string[None]", + "xarray/tests/test_dataset.py::test_dir_unicode[None]", + "xarray/tests/test_dataset.py::test_coarsen_absent_dims_error[1]", + "xarray/tests/test_dataset.py::test_coarsen[1-trim-left-True]", + "xarray/tests/test_dataset.py::test_coarsen[1-trim-left-False]", + "xarray/tests/test_dataset.py::test_coarsen[1-pad-right-True]", + "xarray/tests/test_dataset.py::test_coarsen[1-pad-right-False]", + "xarray/tests/test_dataset.py::test_coarsen_coords[1-True]", + "xarray/tests/test_dataset.py::test_coarsen_coords[1-False]", + "xarray/tests/test_dataset.py::test_coarsen_coords_cftime", + "xarray/tests/test_dataset.py::test_coarsen_keep_attrs", + "xarray/tests/test_dataset.py::test_rolling_keep_attrs[reduce-argument0]", + "xarray/tests/test_dataset.py::test_rolling_keep_attrs[mean-argument1]", + "xarray/tests/test_dataset.py::test_rolling_keep_attrs[construct-argument2]", + "xarray/tests/test_dataset.py::test_rolling_keep_attrs[count-argument3]", + "xarray/tests/test_dataset.py::test_rolling_keep_attrs_deprecated", + "xarray/tests/test_dataset.py::test_rolling_properties[1]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-True-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-False-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-1-None-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-True-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-False-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z1-None-None-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-True-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-False-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-1-None-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-True-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-False-median]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-sum]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-mean]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-std]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-var]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-min]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-max]", + "xarray/tests/test_dataset.py::test_rolling_wrapped_bottleneck[1-z2-None-None-median]", + "xarray/tests/test_dataset.py::test_rolling_exp[1]", + "xarray/tests/test_dataset.py::test_rolling_exp_keep_attrs[1]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-None-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-None-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-1-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-1-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-2-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-2-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-3-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[1-3-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-None-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-None-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-1-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-1-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-2-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-2-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-3-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[2-3-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-None-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-None-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-1-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-1-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-2-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-2-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-3-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[3-3-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-None-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-None-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-1-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-1-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-2-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-2-False]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-3-True]", + "xarray/tests/test_dataset.py::test_rolling_pandas_compat[4-3-False]", + "xarray/tests/test_dataset.py::test_rolling_construct[1-True]", + "xarray/tests/test_dataset.py::test_rolling_construct[1-False]", + "xarray/tests/test_dataset.py::test_rolling_construct[2-True]", + "xarray/tests/test_dataset.py::test_rolling_construct[2-False]", + "xarray/tests/test_dataset.py::test_rolling_construct[3-True]", + "xarray/tests/test_dataset.py::test_rolling_construct[3-False]", + "xarray/tests/test_dataset.py::test_rolling_construct[4-True]", + "xarray/tests/test_dataset.py::test_rolling_construct[4-False]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[sum-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[mean-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[std-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[var-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[min-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[max-4-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-1-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-2-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-3-3-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-None-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-None-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-None-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-None-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-1-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-1-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-1-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-1-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-2-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-2-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-2-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-2-False-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-3-True-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-3-True-2]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-3-False-1]", + "xarray/tests/test_dataset.py::test_rolling_reduce[median-4-3-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-sum-None-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-sum-None-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-sum-1-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-sum-1-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-max-None-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-max-None-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-max-1-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[True-max-1-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-sum-None-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-sum-None-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-sum-1-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-sum-1-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-max-None-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-max-None-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-max-1-True-2]", + "xarray/tests/test_dataset.py::test_ndrolling_reduce[False-max-1-False-2]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-nan-True]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-nan-False]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-nan-center2]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-0.0-True]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-0.0-False]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[True-0.0-center2]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-nan-True]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-nan-False]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-nan-center2]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-0.0-True]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-0.0-False]", + "xarray/tests/test_dataset.py::test_ndrolling_construct[False-0.0-center2]", + "xarray/tests/test_dataset.py::test_raise_no_warning_for_nan_in_binary_ops", + "xarray/tests/test_dataset.py::test_raise_no_warning_assert_close[2]", + "xarray/tests/test_dataset.py::test_differentiate[1-False]", + "xarray/tests/test_dataset.py::test_differentiate[2-False]", + "xarray/tests/test_dataset.py::test_differentiate_datetime[False]", + "xarray/tests/test_dataset.py::test_differentiate_cftime[False]", + "xarray/tests/test_dataset.py::test_integrate[True]", + "xarray/tests/test_dataset.py::test_integrate[False]", + "xarray/tests/test_dataset.py::test_trapz_datetime[np-True]", + "xarray/tests/test_dataset.py::test_trapz_datetime[np-False]", + "xarray/tests/test_dataset.py::test_trapz_datetime[cftime-True]", + "xarray/tests/test_dataset.py::test_trapz_datetime[cftime-False]", + "xarray/tests/test_dataset.py::test_no_dict", + "xarray/tests/test_dataset.py::test_subclass_slots", + "xarray/tests/test_dataset.py::test_weakref", + "xarray/tests/test_dataset.py::test_deepcopy_obj_array", + "xarray/tests/test_interp.py::test_keywargs", + "xarray/tests/test_interp.py::test_interpolate_1d[0-x-linear]", + "xarray/tests/test_interp.py::test_interpolate_1d[0-x-cubic]", + "xarray/tests/test_interp.py::test_interpolate_1d[0-y-linear]", + "xarray/tests/test_interp.py::test_interpolate_1d[0-y-cubic]", + "xarray/tests/test_interp.py::test_interpolate_1d[1-x-linear]", + "xarray/tests/test_interp.py::test_interpolate_1d[1-x-cubic]", + "xarray/tests/test_interp.py::test_interpolate_1d[1-y-linear]", + "xarray/tests/test_interp.py::test_interpolate_1d[1-y-cubic]", + "xarray/tests/test_interp.py::test_interpolate_1d_methods[cubic]", + "xarray/tests/test_interp.py::test_interpolate_1d_methods[zero]", + "xarray/tests/test_interp.py::test_interpolate_vectorize[False]", + "xarray/tests/test_interp.py::test_interpolate_vectorize[True]", + "xarray/tests/test_interp.py::test_interpolate_nd[3]", + "xarray/tests/test_interp.py::test_interpolate_nd[4]", + "xarray/tests/test_interp.py::test_interpolate_nd_nd", + "xarray/tests/test_interp.py::test_interpolate_nd_with_nan", + "xarray/tests/test_interp.py::test_interpolate_scalar[0-linear]", + "xarray/tests/test_interp.py::test_interpolate_scalar[1-linear]", + "xarray/tests/test_interp.py::test_interpolate_nd_scalar[3-linear]", + "xarray/tests/test_interp.py::test_interpolate_nd_scalar[4-linear]", + "xarray/tests/test_interp.py::test_nans[True]", + "xarray/tests/test_interp.py::test_nans[False]", + "xarray/tests/test_interp.py::test_errors[True]", + "xarray/tests/test_interp.py::test_errors[False]", + "xarray/tests/test_interp.py::test_dtype", + "xarray/tests/test_interp.py::test_sorted", + "xarray/tests/test_interp.py::test_dimension_wo_coords", + "xarray/tests/test_interp.py::test_dataset", + "xarray/tests/test_interp.py::test_interpolate_dimorder[0]", + "xarray/tests/test_interp.py::test_interpolate_dimorder[3]", + "xarray/tests/test_interp.py::test_interp_like", + "xarray/tests/test_interp.py::test_datetime[x_new0-expected0]", + "xarray/tests/test_interp.py::test_datetime[x_new1-expected1]", + "xarray/tests/test_interp.py::test_datetime[x_new2-expected2]", + "xarray/tests/test_interp.py::test_datetime[x_new3-expected3]", + "xarray/tests/test_interp.py::test_datetime[x_new4-0.5]", + "xarray/tests/test_interp.py::test_datetime_single_string", + "xarray/tests/test_interp.py::test_cftime", + "xarray/tests/test_interp.py::test_cftime_type_error", + "xarray/tests/test_interp.py::test_cftime_list_of_strings", + "xarray/tests/test_interp.py::test_cftime_single_string", + "xarray/tests/test_interp.py::test_datetime_to_non_datetime_error", + "xarray/tests/test_interp.py::test_cftime_to_non_cftime_error", + "xarray/tests/test_interp.py::test_datetime_interp_noerror", + "xarray/tests/test_interp.py::test_3641", + "xarray/tests/test_interp.py::test_decompose[nearest]", + "xarray/tests/test_interp.py::test_decompose[linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[1-1-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-1-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[2-2-2-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-1-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-2-2-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-0-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-1-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-2-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-True-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-nearest]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-zero]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-slinear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-quadratic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_1d[3-3-3-False-cubic]", + "xarray/tests/test_interp.py::test_interpolate_chunk_advanced[linear]", + "xarray/tests/test_interp.py::test_interpolate_chunk_advanced[nearest]", + "xarray/tests/test_variable.py::TestVariable::test_properties", + "xarray/tests/test_variable.py::TestVariable::test_attrs", + "xarray/tests/test_variable.py::TestVariable::test_getitem_dict", + "xarray/tests/test_variable.py::TestVariable::test_getitem_1d", + "xarray/tests/test_variable.py::TestVariable::test_getitem_1d_fancy", + "xarray/tests/test_variable.py::TestVariable::test_getitem_with_mask", + "xarray/tests/test_variable.py::TestVariable::test_getitem_with_mask_size_zero", + "xarray/tests/test_variable.py::TestVariable::test_getitem_with_mask_nd_indexer", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_int", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_float", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_string", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_datetime", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_timedelta64", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_not_a_time", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_object", + "xarray/tests/test_variable.py::TestVariable::test_0d_object_array_with_list", + "xarray/tests/test_variable.py::TestVariable::test_index_and_concat_datetime", + "xarray/tests/test_variable.py::TestVariable::test_0d_time_data", + "xarray/tests/test_variable.py::TestVariable::test_datetime64_conversion", + "xarray/tests/test_variable.py::TestVariable::test_timedelta64_conversion", + "xarray/tests/test_variable.py::TestVariable::test_object_conversion", + "xarray/tests/test_variable.py::TestVariable::test_datetime64_valid_range", + "xarray/tests/test_variable.py::TestVariable::test_pandas_data", + "xarray/tests/test_variable.py::TestVariable::test_pandas_period_index", + "xarray/tests/test_variable.py::TestVariable::test_1d_math", + "xarray/tests/test_variable.py::TestVariable::test_1d_reduce", + "xarray/tests/test_variable.py::TestVariable::test_array_interface", + "xarray/tests/test_variable.py::TestVariable::test___array__", + "xarray/tests/test_variable.py::TestVariable::test_equals_all_dtypes", + "xarray/tests/test_variable.py::TestVariable::test_eq_all_dtypes", + "xarray/tests/test_variable.py::TestVariable::test_encoding_preserved", + "xarray/tests/test_variable.py::TestVariable::test_concat", + "xarray/tests/test_variable.py::TestVariable::test_concat_attrs", + "xarray/tests/test_variable.py::TestVariable::test_concat_fixed_len_str", + "xarray/tests/test_variable.py::TestVariable::test_concat_number_strings", + "xarray/tests/test_variable.py::TestVariable::test_concat_mixed_dtypes", + "xarray/tests/test_variable.py::TestVariable::test_copy[float-True]", + "xarray/tests/test_variable.py::TestVariable::test_copy[float-False]", + "xarray/tests/test_variable.py::TestVariable::test_copy[int-True]", + "xarray/tests/test_variable.py::TestVariable::test_copy[int-False]", + "xarray/tests/test_variable.py::TestVariable::test_copy[str-True]", + "xarray/tests/test_variable.py::TestVariable::test_copy[str-False]", + "xarray/tests/test_variable.py::TestVariable::test_copy_index", + "xarray/tests/test_variable.py::TestVariable::test_copy_with_data", + "xarray/tests/test_variable.py::TestVariable::test_copy_with_data_errors", + "xarray/tests/test_variable.py::TestVariable::test_copy_index_with_data", + "xarray/tests/test_variable.py::TestVariable::test_copy_index_with_data_errors", + "xarray/tests/test_variable.py::TestVariable::test_replace", + "xarray/tests/test_variable.py::TestVariable::test_real_and_imag", + "xarray/tests/test_variable.py::TestVariable::test_aggregate_complex", + "xarray/tests/test_variable.py::TestVariable::test_pandas_cateogrical_dtype", + "xarray/tests/test_variable.py::TestVariable::test_pandas_datetime64_with_tz", + "xarray/tests/test_variable.py::TestVariable::test_multiindex", + "xarray/tests/test_variable.py::TestVariable::test_load", + "xarray/tests/test_variable.py::TestVariable::test_getitem_advanced", + "xarray/tests/test_variable.py::TestVariable::test_getitem_uint_1d", + "xarray/tests/test_variable.py::TestVariable::test_getitem_uint", + "xarray/tests/test_variable.py::TestVariable::test_getitem_0d_array", + "xarray/tests/test_variable.py::TestVariable::test_getitem_fancy", + "xarray/tests/test_variable.py::TestVariable::test_getitem_error", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-mean]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-edge]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-maximum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-minimum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-symmetric]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-wrap]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-mean]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-edge]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-maximum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-minimum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-symmetric]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-wrap]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-mean]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-edge]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-maximum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-minimum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-symmetric]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-wrap]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-mean]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-edge]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-maximum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-minimum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-symmetric]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-wrap]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-mean]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-edge]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-maximum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-minimum]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-symmetric]", + "xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-wrap]", + "xarray/tests/test_variable.py::TestVariable::test_pad_constant_values[xr_arg0-np_arg0]", + "xarray/tests/test_variable.py::TestVariable::test_pad_constant_values[xr_arg1-np_arg1]", + "xarray/tests/test_variable.py::TestVariable::test_pad_constant_values[xr_arg2-np_arg2]", + "xarray/tests/test_variable.py::TestVariable::test_pad_constant_values[xr_arg3-np_arg3]", + "xarray/tests/test_variable.py::TestVariable::test_pad_constant_values[xr_arg4-np_arg4]", + "xarray/tests/test_variable.py::TestVariable::test_rolling_window", + "xarray/tests/test_variable.py::TestVariable::test_data_and_values", + "xarray/tests/test_variable.py::TestVariable::test_numpy_same_methods", + "xarray/tests/test_variable.py::TestVariable::test_datetime64_conversion_scalar", + "xarray/tests/test_variable.py::TestVariable::test_timedelta64_conversion_scalar", + "xarray/tests/test_variable.py::TestVariable::test_0d_str", + "xarray/tests/test_variable.py::TestVariable::test_0d_datetime", + "xarray/tests/test_variable.py::TestVariable::test_0d_timedelta", + "xarray/tests/test_variable.py::TestVariable::test_equals_and_identical", + "xarray/tests/test_variable.py::TestVariable::test_broadcast_equals", + "xarray/tests/test_variable.py::TestVariable::test_no_conflicts", + "xarray/tests/test_variable.py::TestVariable::test_repr", + "xarray/tests/test_variable.py::TestVariable::test_repr_lazy_data", + "xarray/tests/test_variable.py::TestVariable::test_detect_indexer_type", + "xarray/tests/test_variable.py::TestVariable::test_indexer_type", + "xarray/tests/test_variable.py::TestVariable::test_items", + "xarray/tests/test_variable.py::TestVariable::test_getitem_basic", + "xarray/tests/test_variable.py::TestVariable::test_getitem_with_mask_2d_input", + "xarray/tests/test_variable.py::TestVariable::test_isel", + "xarray/tests/test_variable.py::TestVariable::test_index_0d_numpy_string", + "xarray/tests/test_variable.py::TestVariable::test_indexing_0d_unicode", + "xarray/tests/test_variable.py::TestVariable::test_shift[fill_value0]", + "xarray/tests/test_variable.py::TestVariable::test_shift[2]", + "xarray/tests/test_variable.py::TestVariable::test_shift[2.0]", + "xarray/tests/test_variable.py::TestVariable::test_shift2d", + "xarray/tests/test_variable.py::TestVariable::test_roll", + "xarray/tests/test_variable.py::TestVariable::test_roll_consistency", + "xarray/tests/test_variable.py::TestVariable::test_transpose", + "xarray/tests/test_variable.py::TestVariable::test_transpose_0d", + "xarray/tests/test_variable.py::TestVariable::test_squeeze", + "xarray/tests/test_variable.py::TestVariable::test_get_axis_num", + "xarray/tests/test_variable.py::TestVariable::test_set_dims", + "xarray/tests/test_variable.py::TestVariable::test_set_dims_object_dtype", + "xarray/tests/test_variable.py::TestVariable::test_stack", + "xarray/tests/test_variable.py::TestVariable::test_stack_errors", + "xarray/tests/test_variable.py::TestVariable::test_unstack", + "xarray/tests/test_variable.py::TestVariable::test_unstack_errors", + "xarray/tests/test_variable.py::TestVariable::test_unstack_2d", + "xarray/tests/test_variable.py::TestVariable::test_stack_unstack_consistency", + "xarray/tests/test_variable.py::TestVariable::test_broadcasting_math", + "xarray/tests/test_variable.py::TestVariable::test_broadcasting_failures", + "xarray/tests/test_variable.py::TestVariable::test_inplace_math", + "xarray/tests/test_variable.py::TestVariable::test_reduce", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-0.25-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-0.25-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-q1-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-q1-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-q2-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[None-None-q2-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-0.25-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-0.25-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-q1-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-q1-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-q2-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[0-x-q2-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-0.25-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-0.25-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-q1-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-q1-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-q2-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis2-dim2-q2-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-0.25-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-0.25-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-q1-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-q1-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-q2-True]", + "xarray/tests/test_variable.py::TestVariable::test_quantile[axis3-dim3-q2-False]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[1-y-0.25]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[1-y-q1]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[1-y-q2]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[axis1-dim1-0.25]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[axis1-dim1-q1]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_dask[axis1-dim1-q2]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_chunked_dim_error", + "xarray/tests/test_variable.py::TestVariable::test_quantile_out_of_bounds[-0.1]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_out_of_bounds[1.1]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_out_of_bounds[q2]", + "xarray/tests/test_variable.py::TestVariable::test_quantile_out_of_bounds[q3]", + "xarray/tests/test_variable.py::TestVariable::test_rank_dask_raises", + "xarray/tests/test_variable.py::TestVariable::test_rank", + "xarray/tests/test_variable.py::TestVariable::test_big_endian_reduce", + "xarray/tests/test_variable.py::TestVariable::test_reduce_funcs", + "xarray/tests/test_variable.py::TestVariable::test_reduce_keepdims", + "xarray/tests/test_variable.py::TestVariable::test_reduce_keepdims_dask", + "xarray/tests/test_variable.py::TestVariable::test_reduce_keep_attrs", + "xarray/tests/test_variable.py::TestVariable::test_binary_ops_keep_attrs", + "xarray/tests/test_variable.py::TestVariable::test_count", + "xarray/tests/test_variable.py::TestVariable::test_setitem", + "xarray/tests/test_variable.py::TestVariable::test_setitem_fancy", + "xarray/tests/test_variable.py::TestVariable::test_coarsen", + "xarray/tests/test_variable.py::TestVariable::test_coarsen_2d", + "xarray/tests/test_variable.py::TestVariable::test_coarsen_keep_attrs", + "xarray/tests/test_variable.py::TestVariableWithDask::test_properties", + "xarray/tests/test_variable.py::TestVariableWithDask::test_attrs", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_dict", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_1d", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_with_mask", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_with_mask_size_zero", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_int", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_float", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_string", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_datetime", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_timedelta64", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_not_a_time", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_0d_object", + "xarray/tests/test_variable.py::TestVariableWithDask::test_index_and_concat_datetime", + "xarray/tests/test_variable.py::TestVariableWithDask::test_0d_time_data", + "xarray/tests/test_variable.py::TestVariableWithDask::test_datetime64_conversion", + "xarray/tests/test_variable.py::TestVariableWithDask::test_timedelta64_conversion", + "xarray/tests/test_variable.py::TestVariableWithDask::test_object_conversion", + "xarray/tests/test_variable.py::TestVariableWithDask::test_datetime64_valid_range", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pandas_data", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pandas_period_index", + "xarray/tests/test_variable.py::TestVariableWithDask::test_1d_math", + "xarray/tests/test_variable.py::TestVariableWithDask::test_1d_reduce", + "xarray/tests/test_variable.py::TestVariableWithDask::test___array__", + "xarray/tests/test_variable.py::TestVariableWithDask::test_equals_all_dtypes", + "xarray/tests/test_variable.py::TestVariableWithDask::test_encoding_preserved", + "xarray/tests/test_variable.py::TestVariableWithDask::test_concat", + "xarray/tests/test_variable.py::TestVariableWithDask::test_concat_attrs", + "xarray/tests/test_variable.py::TestVariableWithDask::test_concat_fixed_len_str", + "xarray/tests/test_variable.py::TestVariableWithDask::test_concat_number_strings", + "xarray/tests/test_variable.py::TestVariableWithDask::test_concat_mixed_dtypes", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[float-True]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[float-False]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[int-True]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[int-False]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[str-True]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy[str-False]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy_with_data", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy_with_data_errors", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy_index_with_data", + "xarray/tests/test_variable.py::TestVariableWithDask::test_copy_index_with_data_errors", + "xarray/tests/test_variable.py::TestVariableWithDask::test_replace", + "xarray/tests/test_variable.py::TestVariableWithDask::test_real_and_imag", + "xarray/tests/test_variable.py::TestVariableWithDask::test_aggregate_complex", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pandas_cateogrical_dtype", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pandas_datetime64_with_tz", + "xarray/tests/test_variable.py::TestVariableWithDask::test_multiindex", + "xarray/tests/test_variable.py::TestVariableWithDask::test_load", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_advanced", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_uint_1d", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_uint", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_0d_array", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_error", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-mean]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-edge]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-maximum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-minimum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-symmetric]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-wrap]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-mean]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-edge]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-maximum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-minimum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-symmetric]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-wrap]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-mean]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-edge]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-maximum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-minimum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-symmetric]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-wrap]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-mean]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-edge]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-maximum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-minimum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-symmetric]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-wrap]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-mean]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-edge]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-maximum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-minimum]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-symmetric]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-wrap]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad_constant_values[xr_arg0-np_arg0]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad_constant_values[xr_arg1-np_arg1]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad_constant_values[xr_arg2-np_arg2]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad_constant_values[xr_arg3-np_arg3]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_pad_constant_values[xr_arg4-np_arg4]", + "xarray/tests/test_variable.py::TestVariableWithDask::test_rolling_window", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_fancy", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_1d_fancy", + "xarray/tests/test_variable.py::TestVariableWithDask::test_getitem_with_mask_nd_indexer", + "xarray/tests/test_variable.py::TestVariableWithSparse::test_as_sparse", + "xarray/tests/test_variable.py::TestIndexVariable::test_properties", + "xarray/tests/test_variable.py::TestIndexVariable::test_attrs", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_dict", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_1d", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_1d_fancy", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_with_mask", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_with_mask_size_zero", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_with_mask_nd_indexer", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_int", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_float", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_string", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_datetime", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_timedelta64", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_not_a_time", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_0d_object", + "xarray/tests/test_variable.py::TestIndexVariable::test_0d_object_array_with_list", + "xarray/tests/test_variable.py::TestIndexVariable::test_index_and_concat_datetime", + "xarray/tests/test_variable.py::TestIndexVariable::test_0d_time_data", + "xarray/tests/test_variable.py::TestIndexVariable::test_datetime64_conversion", + "xarray/tests/test_variable.py::TestIndexVariable::test_timedelta64_conversion", + "xarray/tests/test_variable.py::TestIndexVariable::test_object_conversion", + "xarray/tests/test_variable.py::TestIndexVariable::test_datetime64_valid_range", + "xarray/tests/test_variable.py::TestIndexVariable::test_pandas_data", + "xarray/tests/test_variable.py::TestIndexVariable::test_pandas_period_index", + "xarray/tests/test_variable.py::TestIndexVariable::test_1d_math", + "xarray/tests/test_variable.py::TestIndexVariable::test_1d_reduce", + "xarray/tests/test_variable.py::TestIndexVariable::test_array_interface", + "xarray/tests/test_variable.py::TestIndexVariable::test___array__", + "xarray/tests/test_variable.py::TestIndexVariable::test_equals_all_dtypes", + "xarray/tests/test_variable.py::TestIndexVariable::test_eq_all_dtypes", + "xarray/tests/test_variable.py::TestIndexVariable::test_encoding_preserved", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_attrs", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_fixed_len_str", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_number_strings", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_mixed_dtypes", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[float-True]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[float-False]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[int-True]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[int-False]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[str-True]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy[str-False]", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy_index", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy_with_data", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy_with_data_errors", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy_index_with_data", + "xarray/tests/test_variable.py::TestIndexVariable::test_copy_index_with_data_errors", + "xarray/tests/test_variable.py::TestIndexVariable::test_replace", + "xarray/tests/test_variable.py::TestIndexVariable::test_real_and_imag", + "xarray/tests/test_variable.py::TestIndexVariable::test_aggregate_complex", + "xarray/tests/test_variable.py::TestIndexVariable::test_pandas_cateogrical_dtype", + "xarray/tests/test_variable.py::TestIndexVariable::test_pandas_datetime64_with_tz", + "xarray/tests/test_variable.py::TestIndexVariable::test_multiindex", + "xarray/tests/test_variable.py::TestIndexVariable::test_load", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_uint_1d", + "xarray/tests/test_variable.py::TestIndexVariable::test_getitem_0d_array", + "xarray/tests/test_variable.py::TestIndexVariable::test_init", + "xarray/tests/test_variable.py::TestIndexVariable::test_to_index", + "xarray/tests/test_variable.py::TestIndexVariable::test_multiindex_default_level_names", + "xarray/tests/test_variable.py::TestIndexVariable::test_data", + "xarray/tests/test_variable.py::TestIndexVariable::test_name", + "xarray/tests/test_variable.py::TestIndexVariable::test_level_names", + "xarray/tests/test_variable.py::TestIndexVariable::test_get_level_variable", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_periods", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_multiindex", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_str_dtype[str]", + "xarray/tests/test_variable.py::TestIndexVariable::test_concat_str_dtype[bytes]", + "xarray/tests/test_variable.py::TestIndexVariable::test_coordinate_alias", + "xarray/tests/test_variable.py::TestIndexVariable::test_datetime64", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_unchanged_types", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_converted_types", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_masked_array", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_datetime", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_full_like", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_full_like_dask", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_zeros_like", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_ones_like", + "xarray/tests/test_variable.py::TestAsCompatibleData::test_unsupported_type", + "xarray/tests/test_variable.py::test_raise_no_warning_for_nan_in_binary_ops", + "xarray/tests/test_variable.py::TestBackendIndexing::test_NumpyIndexingAdapter", + "xarray/tests/test_variable.py::TestBackendIndexing::test_LazilyOuterIndexedArray", + "xarray/tests/test_variable.py::TestBackendIndexing::test_CopyOnWriteArray", + "xarray/tests/test_variable.py::TestBackendIndexing::test_MemoryCachedArray", + "xarray/tests/test_variable.py::TestBackendIndexing::test_DaskIndexingAdapter" + ], + "failure": [] + }, + "FAIL_TO_FAIL": { + "success": [], + "failure": [] + }, + "PASS_TO_FAIL": { + "success": [], + "failure": [] + } + } + } +} \ No newline at end of file diff --git a/reports/evaluation-controls/pydata__xarray-4493/test-output-excerpt.txt b/reports/evaluation-controls/pydata__xarray-4493/test-output-excerpt.txt new file mode 100644 index 0000000..1df8ed1 --- /dev/null +++ b/reports/evaluation-controls/pydata__xarray-4493/test-output-excerpt.txt @@ -0,0 +1,160 @@ +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_datetime +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_full_like +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_full_like_dask +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_zeros_like +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_ones_like +PASSED xarray/tests/test_variable.py::TestAsCompatibleData::test_unsupported_type +PASSED xarray/tests/test_variable.py::test_raise_no_warning_for_nan_in_binary_ops +PASSED xarray/tests/test_variable.py::TestBackendIndexing::test_NumpyIndexingAdapter +PASSED xarray/tests/test_variable.py::TestBackendIndexing::test_LazilyOuterIndexedArray +PASSED xarray/tests/test_variable.py::TestBackendIndexing::test_CopyOnWriteArray +PASSED xarray/tests/test_variable.py::TestBackendIndexing::test_MemoryCachedArray +PASSED xarray/tests/test_variable.py::TestBackendIndexing::test_DaskIndexingAdapter +SKIPPED [1] xarray/tests/test_dask.py:587: no meta +SKIPPED [16] xarray/tests/test_dataset.py:6317: std with window == 1 is unstable in bottleneck +XFAIL xarray/tests/test_dask.py::TestToDaskDataFrame::test_to_dask_dataframe_2D_set_index +XFAIL xarray/tests/test_dataset.py::TestDataset::test_copy_coords[True-expected_orig0] +XFAIL xarray/tests/test_interp.py::test_datetime[2000-01-01T12:00-0.5] +XFAIL xarray/tests/test_variable.py::TestVariable::test_timedelta64_valid_range - pandas issue 36615 +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_timedelta64_valid_range - pandas issue 36615 +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-median] - median is not implemented by Dask +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-median] - median is not implemented by Dask +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-median] - median is not implemented by Dask +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-reflect] - dask.array.pad bug +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-median] - median is not implemented by Dask +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-reflect] - dask.array.pad bug +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-median] - median is not implemented by Dask +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-reflect] - dask.array.pad bug +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_0d_object_array_with_list +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_array_interface +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_copy_index +XFAIL xarray/tests/test_variable.py::TestVariableWithDask::test_eq_all_dtypes +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_timedelta64_valid_range - pandas issue 36615 +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_getitem_error +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_getitem_advanced +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_getitem_fancy +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_getitem_uint +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-mean] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-median] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-reflect] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-edge] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-linear_ramp] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-maximum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-minimum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-symmetric] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg0-np_arg0-wrap] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-mean] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-median] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-reflect] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-edge] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-linear_ramp] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-maximum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-minimum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-symmetric] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg1-np_arg1-wrap] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-mean] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-median] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-reflect] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-edge] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-linear_ramp] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-maximum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-minimum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-symmetric] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg2-np_arg2-wrap] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-mean] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-median] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-reflect] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-edge] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-linear_ramp] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-maximum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-minimum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-symmetric] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg3-np_arg3-wrap] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-mean] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-median] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-reflect] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-edge] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-linear_ramp] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-maximum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-minimum] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-symmetric] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad[xr_arg4-np_arg4-wrap] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad_constant_values[xr_arg0-np_arg0] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad_constant_values[xr_arg1-np_arg1] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad_constant_values[xr_arg2-np_arg2] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad_constant_values[xr_arg3-np_arg3] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_pad_constant_values[xr_arg4-np_arg4] +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_rolling_window +XFAIL xarray/tests/test_variable.py::TestIndexVariable::test_coarsen_2d +XPASS xarray/tests/test_dataset.py::TestDataset::test_copy_coords[False-expected_orig1] +XPASS xarray/tests/test_dataset.py::test_raise_no_warning_dask_rolling_assert_close[mean-2] See https://github.com/pydata/xarray/pull/4369 or docstring +XPASS xarray/tests/test_dataset.py::test_raise_no_warning_dask_rolling_assert_close[max-2] See https://github.com/pydata/xarray/pull/4369 or docstring +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-median] median is not implemented by Dask +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg0-np_arg0-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-median] median is not implemented by Dask +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg1-np_arg1-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-median] median is not implemented by Dask +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg2-np_arg2-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-median] median is not implemented by Dask +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg3-np_arg3-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-median] median is not implemented by Dask +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariable::test_pad[xr_arg4-np_arg4-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg0-np_arg0-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-reflect] dask.array.pad bug +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg1-np_arg1-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg2-np_arg2-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg3-np_arg3-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +XPASS xarray/tests/test_variable.py::TestVariableWithDask::test_pad[xr_arg4-np_arg4-linear_ramp] pint bug: https://github.com/hgrecco/pint/issues/1026 +FAILED xarray/tests/test_dask.py::test_persist_Dataset[1] - IndexErro... +FAILED xarray/tests/test_dask.py::test_map_blocks_error - AttributeError: 'di... +FAILED xarray/tests/test_dask.py::test_map_blocks[obj0] - AttributeError: 'di... +FAILED xarray/tests/test_dask.py::test_map_blocks[obj1] - AttributeError: 'di... +FAILED xarray/tests/test_dask.py::test_map_blocks_convert_args_to_list[obj0] +FAILED xarray/tests/test_dask.py::test_map_blocks_convert_args_to_list[obj1] +FAILED xarray/tests/test_dask.py::test_map_blocks_dask_args - AttributeError:... +FAILED xarray/tests/test_dask.py::test_map_blocks_add_attrs[obj0] - Attribute... +FAILED xarray/tests/test_dask.py::test_map_blocks_add_attrs[obj1] - Attribute... +FAILED xarray/tests/test_dask.py::test_map_blocks_change_name - AttributeErro... +FAILED xarray/tests/test_dask.py::test_map_blocks_kwargs[obj0] - AttributeErr... +FAILED xarray/tests/test_dask.py::test_map_blocks_kwargs[obj1] - AttributeErr... +FAILED xarray/tests/test_dask.py::test_map_blocks_to_array - AttributeError: ... +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[0] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[1] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[2] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[3] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[4] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[5] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[6] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_transformations[7] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[0] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[1] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[2] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[3] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[4] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[5] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[6] +FAILED xarray/tests/test_dask.py::test_map_blocks_ds_transformations[7] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_ds_with_template[obj0] +FAILED xarray/tests/test_dask.py::test_map_blocks_da_ds_with_template[obj1] +FAILED xarray/tests/test_dask.py::test_map_blocks_template_convert_object - A... +FAILED xarray/tests/test_dask.py::test_map_blocks_errors_bad_template[obj0] +FAILED xarray/tests/test_dask.py::test_map_blocks_errors_bad_template[obj1] +FAILED xarray/tests/test_dask.py::test_map_blocks_errors_bad_template_2 - Att... +FAILED xarray/tests/test_dask.py::test_map_blocks_object_method[obj0] - Attri... +FAILED xarray/tests/test_dask.py::test_map_blocks_object_method[obj1] - Attri... +FAILED xarray/tests/test_dask.py::test_map_blocks_hlg_layers - AttributeError... +FAILED xarray/tests/test_dataset.py::TestDataset::test_sel_categorical - Impo... +FAILED xarray/tests/test_dataset.py::TestDataset::test_sel_categorical_error +FAILED xarray/tests/test_dataset.py::TestDataset::test_categorical_multiindex +FAILED xarray/tests/test_dataset.py::TestDataset::test_from_dataframe_categorical +FAILED xarray/tests/test_dataset.py::TestDataset::test_polyfit_warnings - ass... += 43 failed, 1694 passed, 17 skipped, 74 xfailed, 25 xpassed, 8005 warnings in 51.98s = +>>>>> Test Exit Code: 1 ++ SWEBENCH_TEST_EXIT_CODE=1 ++ : '>>>>> End Test Output' diff --git a/reports/evaluation-controls/results.json b/reports/evaluation-controls/results.json new file mode 100644 index 0000000..b33aa20 --- /dev/null +++ b/reports/evaluation-controls/results.json @@ -0,0 +1,54 @@ +{ + "schema_version": 1, + "harness_version": "5.0.2", + "total_instances": 2, + "submitted_ids": [ + "psf__requests-3362", + "pydata__xarray-4493" + ], + "resolved_ids": [ + "psf__requests-3362", + "pydata__xarray-4493" + ], + "unresolved_ids": [], + "error_ids": [], + "empty_patch_ids": [], + "missing_outcome_ids": [], + "completed_ids": [ + "psf__requests-3362", + "pydata__xarray-4493" + ], + "patch_resolution_rate": 1.0, + "complete": true, + "predictions_sha256": "3a3741c36e1072fc930081d794784c8008e4de2e8d28a708d5e1ce64897e2c68", + "per_issue": [ + { + "instance_id": "psf__requests-3362", + "status": "resolved", + "resolved": true, + "image": "swebench/sweb.eval.x86_64.psf_1776_requests-3362:latest", + "patch_sha256": "23e64f2da841d5d49874221e915a084e9bb1def2fcd6d6a24fd8e7dce71fba8d", + "image_id": "sha256:99e1429866dc72aa1cc58848ae7816ce0ccbcc3b1d77dd71c38c029926cd2c05", + "image_digests": [ + "swebench/sweb.eval.x86_64.psf_1776_requests-3362@sha256:c5dc4ba64a2d97d6cff6b82fe9c0561589df13f23df6883d05e99b630942bbd1" + ], + "harness_exit_code": 0, + "failure_reason": null, + "infra_failure": false + }, + { + "instance_id": "pydata__xarray-4493", + "status": "resolved", + "resolved": true, + "image": "swebench/sweb.eval.x86_64.pydata_1776_xarray-4493:latest", + "patch_sha256": "22bc8533c9a98fcafe60dac9502e8196f2b7fd50cfd1e6225bb6f4be43522a47", + "image_id": "sha256:0a179c47d0f46a4fd8695c1f433cdaa129501cca2b4a0bd43b035daba0514550", + "image_digests": [ + "swebench/sweb.eval.x86_64.pydata_1776_xarray-4493@sha256:5c94544db403737d9f88cfb75afeb9444226072860af86e830ebbc7478287c20" + ], + "harness_exit_code": 0, + "failure_reason": null, + "infra_failure": false + } + ] +} diff --git a/reports/evaluation-controls/swebench-predictions.jsonl b/reports/evaluation-controls/swebench-predictions.jsonl new file mode 100644 index 0000000..f5affca --- /dev/null +++ b/reports/evaluation-controls/swebench-predictions.jsonl @@ -0,0 +1,2 @@ +{"instance_id": "psf__requests-3362", "model_name_or_path": "maintainer-gold-sanity-control", "model_patch": "diff --git a/requests/utils.py b/requests/utils.py\n--- a/requests/utils.py\n+++ b/requests/utils.py\n@@ -358,13 +358,20 @@ def get_encoding_from_headers(headers):\n \n def stream_decode_response_unicode(iterator, r):\n \"\"\"Stream decodes a iterator.\"\"\"\n+ encoding = r.encoding\n \n- if r.encoding is None:\n- for item in iterator:\n- yield item\n- return\n+ if encoding is None:\n+ encoding = r.apparent_encoding\n+\n+ try:\n+ decoder = codecs.getincrementaldecoder(encoding)(errors='replace')\n+ except (LookupError, TypeError):\n+ # A LookupError is raised if the encoding was not found which could\n+ # indicate a misspelling or similar mistake.\n+ #\n+ # A TypeError can be raised if encoding is None\n+ raise UnicodeError(\"Unable to decode contents with encoding %s.\" % encoding)\n \n- decoder = codecs.getincrementaldecoder(r.encoding)(errors='replace')\n for chunk in iterator:\n rv = decoder.decode(chunk)\n if rv:\n"} +{"instance_id": "pydata__xarray-4493", "model_name_or_path": "maintainer-gold-sanity-control", "model_patch": "diff --git a/xarray/core/variable.py b/xarray/core/variable.py\n--- a/xarray/core/variable.py\n+++ b/xarray/core/variable.py\n@@ -120,6 +120,16 @@ def as_variable(obj, name=None) -> \"Union[Variable, IndexVariable]\":\n if isinstance(obj, Variable):\n obj = obj.copy(deep=False)\n elif isinstance(obj, tuple):\n+ if isinstance(obj[1], DataArray):\n+ # TODO: change into TypeError\n+ warnings.warn(\n+ (\n+ \"Using a DataArray object to construct a variable is\"\n+ \" ambiguous, please extract the data using the .data property.\"\n+ \" This will raise a TypeError in 0.19.0.\"\n+ ),\n+ DeprecationWarning,\n+ )\n try:\n obj = Variable(*obj)\n except (TypeError, ValueError) as error:\n"} diff --git a/reports/github-ci.json b/reports/github-ci.json index 54bb1e0..88a53c7 100644 --- a/reports/github-ci.json +++ b/reports/github-ci.json @@ -1,32 +1,32 @@ { - "status": "completed", "conclusion": "success", - "headSha": "58736e5068c6cb51021e3c945a404f6ac5e29e68", - "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547", + "headSha": "8d65c4355ad350ef660a3e870bb89999fedb14ed", "jobs": [ { - "name": "docker", - "status": "completed", "conclusion": "success", - "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547/job/113452997547" + "name": "test (3.13)", + "status": "completed", + "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827436311/job/113483792958" }, { - "name": "test (3.11)", - "status": "completed", "conclusion": "success", - "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547/job/113452997722" + "name": "test (3.12)", + "status": "completed", + "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827436311/job/113483793288" }, { - "name": "test (3.13)", - "status": "completed", "conclusion": "success", - "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547/job/113452997856" + "name": "test (3.11)", + "status": "completed", + "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827436311/job/113483793350" }, { - "name": "test (3.12)", - "status": "completed", "conclusion": "success", - "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37818447547/job/113452998014" + "name": "docker", + "status": "completed", + "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827436311/job/113483793504" } - ] + ], + "status": "completed", + "url": "https://github.com/YeDonS/agentic-code-search/actions/runs/37827436311" } diff --git a/reports/model-100/automated-review/manifest.json b/reports/model-100/automated-review/manifest.json new file mode 100644 index 0000000..e488ea8 --- /dev/null +++ b/reports/model-100/automated-review/manifest.json @@ -0,0 +1,70 @@ +{ + "predictions_sha256": "79185a1be9804ebe7eaedd7191ebfc069f1d7f227c7fa1872c2c02744817f4c2", + "batch_manifests": [ + { + "kind": "automated_root_cause_comparison", + "reviewer_model": "codex-cli:gpt-6.1-sol", + "reasoning_effort": "medium", + "dataset_revision": "b0dde1093fe417d83b7184254edf8199c1f0dff5", + "dataset_sha256": "438e281d80587aa7be470896ce410557002fde02d2ceee3e099331d308f62dd3", + "predictions_sha256": "0347de1a434264eb5ed67729ac0d39185d7385e1637d581ea8298d48807dc4c1", + "prompt_sha256": "9a73191a16e0cbba1b24f7a3c29b6bdb7ecce51d14b97eddbe9ec970cdda004d", + "human_review": false, + "workers": 4, + "limitations": [ + "Automated judgment can be wrong.", + "Using the same model family for diagnosis and review can inflate agreement.", + "Not a substitute for human adjudication or official patch tests." + ] + }, + { + "kind": "automated_root_cause_comparison", + "reviewer_model": "codex-cli:gpt-6.1-sol", + "reasoning_effort": "medium", + "dataset_revision": "b0dde1093fe417d83b7184254edf8199c1f0dff5", + "dataset_sha256": "438e281d80587aa7be470896ce410557002fde02d2ceee3e099331d308f62dd3", + "predictions_sha256": "3e3e3741403ad4b82f806bb9169c142b4a37de98874d352486b10a0a8d7be4d6", + "prompt_sha256": "9a73191a16e0cbba1b24f7a3c29b6bdb7ecce51d14b97eddbe9ec970cdda004d", + "human_review": false, + "workers": 4, + "limitations": [ + "Automated judgment can be wrong.", + "Using the same model family for diagnosis and review can inflate agreement.", + "Not a substitute for human adjudication or official patch tests." + ] + }, + { + "kind": "automated_root_cause_comparison", + "reviewer_model": "codex-cli:gpt-6.1-sol", + "reasoning_effort": "medium", + "dataset_revision": "b0dde1093fe417d83b7184254edf8199c1f0dff5", + "dataset_sha256": "438e281d80587aa7be470896ce410557002fde02d2ceee3e099331d308f62dd3", + "predictions_sha256": "1e22d20ab26e6bd0ec61ae40b6f89c296fd8c4c582f21cfc4d4d85a740bda734", + "prompt_sha256": "9a73191a16e0cbba1b24f7a3c29b6bdb7ecce51d14b97eddbe9ec970cdda004d", + "human_review": false, + "workers": 4, + "limitations": [ + "Automated judgment can be wrong.", + "Using the same model family for diagnosis and review can inflate agreement.", + "Not a substitute for human adjudication or official patch tests." + ] + }, + { + "kind": "automated_root_cause_comparison", + "reviewer_model": "codex-cli:gpt-6.1-sol", + "reasoning_effort": "medium", + "dataset_revision": "b0dde1093fe417d83b7184254edf8199c1f0dff5", + "dataset_sha256": "438e281d80587aa7be470896ce410557002fde02d2ceee3e099331d308f62dd3", + "predictions_sha256": "fde8afb031da5f130f026f917ef35af9b8b455764ac0787e78a2f9bd8c037843", + "prompt_sha256": "9a73191a16e0cbba1b24f7a3c29b6bdb7ecce51d14b97eddbe9ec970cdda004d", + "human_review": false, + "workers": 4, + "limitations": [ + "Automated judgment can be wrong.", + "Using the same model family for diagnosis and review can inflate agreement.", + "Not a substitute for human adjudication or official patch tests." + ] + } + ], + "human_review": false +} diff --git a/reports/model-100/automated-review/reviews.jsonl b/reports/model-100/automated-review/reviews.jsonl new file mode 100644 index 0000000..fce3b82 --- /dev/null +++ b/reports/model-100/automated-review/reviews.jsonl @@ -0,0 +1,100 @@ +{"instance_id": "astropy__astropy-12907", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism fixed by the maintainer: _cstack replaces a right-hand dependency matrix with an all-ones block, losing nested separability. Copying the actual right matrix preserves its independent dependencies.", "usage": {"input_tokens": 5359, "output_tokens": 63, "total_tokens": 5422, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "astropy__astropy-14182", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the fix’s causal mechanism: RST rejected header_rows and hard-coded single-header-row offsets for the separator and data start. The maintainer accepts and forwards header_rows and derives both offsets from its length. Setting the read offset in read() rather than __init__ does not change the root-cause match.", "usage": {"input_tokens": 6245, "output_tokens": 85, "total_tokens": 6330, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "astropy__astropy-14365", "status": "reviewed", "verdict": "correct", "rationale": "The maintainer’s use of re.IGNORECASE confirms that case-sensitive line classification caused lowercase READ SERR/TERR commands to be rejected. The prediction identifies this mechanism correctly; the additional NO normalization extends case-insensitive handling to missing-value tokens.", "usage": {"input_tokens": 5673, "output_tokens": 128, "total_tokens": 5801, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "astropy__astropy-14995", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the same missing operand.mask-is-None check corrected by the maintainer. Without it, a masked left operand and maskless right operand reach handle_mask with None, causing bitwise_or to fail instead of copying the existing mask. The predicted patch equivalently handles this case.", "usage": {"input_tokens": 5946, "output_tokens": 78, "total_tokens": 6024, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "astropy__astropy-6938", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "astropy__astropy-7746", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies missing empty-input handling in both _array_converter branches, allowing zero-sized coordinates to reach the backend and trigger the wcslib error. The maintainer fix confirms this mechanism by returning empty axes or arrays before transformation.", "usage": {"input_tokens": 5900, "output_tokens": 100, "total_tokens": 6000, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-10914", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the unset permission default as allowing upload-path-dependent modes to persist. The maintainer changes FILE_UPLOAD_PERMISSIONS from None to 0o644, enforcing a consistent final mode and directly addressing that mechanism.", "usage": {"input_tokens": 5008, "output_tokens": 63, "total_tokens": 5071, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-11001", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that the regex fails to capture preceding lines of multiline SQL, causing distinct orderings with identical final lines and parameters to be deduplicated. The maintainer fix adds DOTALL to capture across newlines, directly addressing this mechanism; its additional anchoring and MULTILINE flag do not contradict the diagnosis.", "usage": {"input_tokens": 5557, "output_tokens": 85, "total_tokens": 5642, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-11742", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the missing comparison between string choice values and max_length in Field._check_choices(). The maintainer fix computes the longest value across grouped and ungrouped choices and raises fields.E009 when it exceeds max_length, confirming the predicted causal mechanism.", "usage": {"input_tokens": 5617, "output_tokens": 72, "total_tokens": 5689, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-12184", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism fixed: filtering None-valued named groups prematurely empties kwargs, triggering positional fallback with both captures. The maintainer patch determines positional arguments from the unfiltered group dictionary, then removes None values, preventing the extra arguments and preserving the view’s default.", "usage": {"input_tokens": 5270, "output_tokens": 76, "total_tokens": 5346, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-12497", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the incorrect hardcoded hints: ForeignKey is recommended with many-to-many arguments, including an unnecessary symmetrical=False. The maintainer fix corrects both hints to ManyToManyField(\"self\", through=...), matching the predicted causal mechanism.", "usage": {"input_tokens": 5519, "output_tokens": 70, "total_tokens": 5589, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-12983", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that whitespace-only stripping preserves boundary underscores and that dash collapsing leaves boundary dashes. The maintainer fix strips '-_' after collapsing whitespace and dashes, directly addressing that mechanism.", "usage": {"input_tokens": 5096, "output_tokens": 59, "total_tokens": 5155, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-13401", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: inherited field copies share creation_counter, and counter-only equality collapses fields owned by different models. The maintainer fix adds model-aware equality and ordering, confirming that mechanism. Differences in ordering tie-breakers and hashing do not invalidate the root-cause explanation.", "usage": {"input_tokens": 5706, "output_tokens": 78, "total_tokens": 5784, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-13447", "status": "reviewed", "verdict": "correct", "rationale": "The patch adds 'model': model to model_dict in AdminSite._build_app_dict(), directly confirming the predicted omission of the available model class. The method’s private visibility is noted in the request but is not changed by this patch.", "usage": {"input_tokens": 4831, "output_tokens": 67, "total_tokens": 4898, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-13448", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the fix’s causal mechanism: MIGRATE=False skipped the migrate command and its run_syncdb table creation, so serialization queried nonexistent tables. The maintainer instead disables migrations for all apps while still running migrate with run_syncdb=True, then restores MIGRATION_MODULES.", "usage": {"input_tokens": 7065, "output_tokens": 76, "total_tokens": 7141, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-13757", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism fixed by the patch: generic IsNull on extracted values conflates missing keys with present JSON null. SQLite switches to JSON_TYPE-based existence checking; Oracle negates HasKey while preserving SQL-NULL column matches.", "usage": {"input_tokens": 5334, "output_tokens": 94, "total_tokens": 5428, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-14997", "status": "reviewed", "verdict": "correct", "rationale": "The maintainer fix replaces unconditional column alias assignment with relabeled_clone({old_table: new_table}), preserving unqualified expressions while renaming matching aliases. This confirms the predicted mechanism: SQLite table remaking incorrectly introduced table qualifiers into unique-index expressions, which SQLite rejects.", "usage": {"input_tokens": 7079, "output_tokens": 73, "total_tokens": 7152, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "django__django-16255", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies max() on an empty sequence in the callable-lastmod branch as the source of the uncaught ValueError. The maintainer’s default=None prevents that same failure and returns None for empty sitemaps; catching ValueError is an alternative fix for this case.", "usage": {"input_tokens": 5380, "output_tokens": 76, "total_tokens": 5456, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-18869", "status": "reviewed", "verdict": "correct", "rationale": "The patch confirms that the lazy resolver previously handled only __version__. It adds __version_info__ and derives numeric, release-aware tuple metadata using the existing version parser, matching the predicted cause and remedy.", "usage": {"input_tokens": 6126, "output_tokens": 90, "total_tokens": 6216, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-23314", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "matplotlib__matplotlib-23563", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the failed zs broadcast before _verts3d initialization as the cause of the later drawing error. The patch converts and flattens zs before that broadcast, preventing the dimensionality failure and allowing _verts3d to be initialized.", "usage": {"input_tokens": 6513, "output_tokens": 194, "total_tokens": 6707, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-23964", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism addressed by the maintainer fix: empty text produces no glyphs, leaving curr_stream as None, which is appended and then fails during unpacking. The maintainer’s guard prevents appending that nonexistent stream.", "usage": {"input_tokens": 6457, "output_tokens": 67, "total_tokens": 6524, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-24149", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the uncaught StopIteration from selecting a finite element in all-NaN positions, including both original and converted position lookups. The maintainer patch catches that exception at both lookups and falls back to the first element, directly confirming the predicted mechanism.", "usage": {"input_tokens": 6073, "output_tokens": 74, "total_tokens": 6147, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-24265", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that deprecated Seaborn names were remapped only in style.use(), while direct library lookup lacked that compatibility mapping. The maintainer fix adds deprecated-name translation to _StyleLibrary.__getitem__, resolving the same causal mechanism.", "usage": {"input_tokens": 6868, "output_tokens": 68, "total_tokens": 6936, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-24334", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the same mechanism addressed by the maintainer fix: set_ticks silently discards kwargs when labels is None because only set_ticklabels receives them. Both fixes reject kwargs in that case before setting tick locations.", "usage": {"input_tokens": 5234, "output_tokens": 63, "total_tokens": 5297, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-25079", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies callbacks firing during intermediate limit resets in Normalize.autoscale(), allowing the existing colorbar to interfere before autoscaling completes. The maintainer fix blocks callbacks throughout reset and recomputation, then emits one final change notification—exactly the mechanism and fix predicted.", "usage": {"input_tokens": 6548, "output_tokens": 74, "total_tokens": 6622, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-25332", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism demonstrated by the maintainer fix: populated Grouper mappings contain unpicklable weak references. The fix adds serialization hooks that convert weak references to strong references when pickling and restore weak references when unpickling, matching the predicted cause.", "usage": {"input_tokens": 5578, "output_tokens": 73, "total_tokens": 5651, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-25498", "status": "reviewed", "verdict": "correct", "rationale": "The maintainer fix moves mappable.autoscale_None() from construction into _process_values(), before the 0–1 fallback. This confirms the prediction that replacement norms were not autoscaled during updates, causing LogNorm to receive invalid default limits.", "usage": {"input_tokens": 5591, "output_tokens": 89, "total_tokens": 5680, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-26011", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated mechanism: shared siblings receive limit updates with emit=False, suppressing their callbacks. The maintainer fix explicitly dispatches each sibling’s limit-change callback after that update while retaining emit=False to avoid recursive propagation, matching the predicted fix.", "usage": {"input_tokens": 5463, "output_tokens": 71, "total_tokens": 5534, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "matplotlib__matplotlib-26020", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact failing assumption: _tick_only treats ax.axis as a subscriptable toolkit mapping, but custom axes expose a bound method. The maintainer fix detects MethodType and uses SimpleAxisArtist wrappers instead of subscripting that method.", "usage": {"input_tokens": 11451, "output_tokens": 70, "total_tokens": 11521, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "mwaskom__seaborn-2848", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the demonstrated mechanism: excluded hue levels remain in scatterplot data but are absent from the categorical lookup table, triggering an inappropriate numeric-interpolation fallback with norm=None. The maintainer fix adds the same guard to return a transparent color for those values.", "usage": {"input_tokens": 5319, "output_tokens": 72, "total_tokens": 5391, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "mwaskom__seaborn-3010", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies missing x/y rows reaching np.polyfit as the cause. The maintainer fix drops those rows before GroupBy.apply; the predicted fix performs the equivalent filtering inside _fit_predict before fitting.", "usage": {"input_tokens": 6390, "output_tokens": 62, "total_tokens": 6452, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "mwaskom__seaborn-3190", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies boolean normalization bounds being subtracted without numeric coercion. The maintainer fix casts the converted bounds to float before subtraction, exactly matching the predicted mechanism and fix.", "usage": {"input_tokens": 5452, "output_tokens": 55, "total_tokens": 5507, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "mwaskom__seaborn-3407", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism addressed by the fix: NumPy conversion expands tuple column labels into array rows, so pandas receives list-like selectors rather than tuple keys. Keeping diag_vars as a list preserves valid MultiIndex keys. The additional diag_axes change does not alter this root cause.", "usage": {"input_tokens": 6041, "output_tokens": 76, "total_tokens": 6117, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pallets__flask-4045", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies missing dot validation in Blueprint.__init__, where names are assigned despite dots serving as nested namespace separators. The maintainer adds the same ValueError check. The additional endpoint and view-function validation changes do not contradict this root cause.", "usage": {"input_tokens": 5389, "output_tokens": 69, "total_tokens": 5458, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pallets__flask-4992", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism: from_file always opens a text stream, incompatible with tomllib.load’s binary-stream requirement. The maintainer fix adds a text parameter and selects \"rb\" when false, directly resolving that mismatch.", "usage": {"input_tokens": 5463, "output_tokens": 66, "total_tokens": 5529, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pallets__flask-5063", "status": "reviewed", "verdict": "correct", "rationale": "The patch confirms a presentation gap: routes_command already reads registered URL rules but omitted their domain metadata. It adds a conditional Subdomain or Host column using rule.subdomain or rule.host, matching the predicted cause rather than changing blueprint registration or routing.", "usage": {"input_tokens": 6299, "output_tokens": 110, "total_tokens": 6409, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-1963", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the stale original request as the cause: each redirect recopies the POST rather than preserving the GET produced by the 303. The maintainer fix updates req to prepared_request, exactly as predicted, so subsequent redirects inherit the updated method and request state.", "usage": {"input_tokens": 5041, "output_tokens": 73, "total_tokens": 5114, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-2148", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies an unwrapped socket error escaping during response-body streaming and surfacing through .content/.text. The maintainer catches socket.error in iter_content and raises ConnectionError; the predicted two-layer translation is an alternative fix for the same causal gap.", "usage": {"input_tokens": 6070, "output_tokens": 144, "total_tokens": 6214, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-2317", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: Python 3's builtin_str converts a bytes method into its literal representation rather than decoding it. The maintainer fix replaces that conversion with to_native_string, exactly as predicted, preserving GET as the valid method.", "usage": {"input_tokens": 5169, "output_tokens": 69, "total_tokens": 5238, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-2674", "status": "reviewed", "verdict": "incorrect", "rationale": "The maintainer fix translates urllib3 ClosedPoolError into requests.ConnectionError. The prediction instead identifies a directly raised ConnectTimeoutError and adds timeout translation, which does not address the closed-pool exception leakage demonstrated by the fix.", "usage": {"input_tokens": 5111, "output_tokens": 93, "total_tokens": 5204, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-3362", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated mechanism: when r.encoding is None, streaming decoding passes through bytes, while r.text uses apparent_encoding. The maintainer fix removes that pass-through and adds the same fallback to the streaming decoder, confirming the causal explanation.", "usage": {"input_tokens": 5127, "output_tokens": 99, "total_tokens": 5226, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "psf__requests-863", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism fixed by the maintainer: register_hook appends a callback list as one element, creating a nested list that cannot be called during dispatch. The fix extends the hook collection for sequence values instead. Supporting tuples and sets additionally does not change the root cause.", "usage": {"input_tokens": 5091, "output_tokens": 76, "total_tokens": 5167, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pydata__xarray-3364", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the strict rejection of missing variables during merging, which is exactly what the maintainer removes. The fix collects a variable only from datasets containing it. The prediction discusses broader concatenation changes, but its core causal explanation matches the demonstrated failure.", "usage": {"input_tokens": 6000, "output_tokens": 192, "total_tokens": 6192, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pydata__xarray-4094", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the conflicting scalar stacked coordinate retained after variable selection. The maintainer fix adds drop=True to sel, removing that coordinate before Dataset construction—exactly the mechanism and fix described.", "usage": {"input_tokens": 5921, "output_tokens": 58, "total_tokens": 5979, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pydata__xarray-4248", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "pydata__xarray-4493", "status": "reviewed", "verdict": "correct", "rationale": "The maintainer patch targets DataArrays inside tuple inputs immediately before Variable(*obj) and recommends extracting .data. This matches the prediction that tuple-wrapped DataArrays bypass normal unwrapping and undergo eager conversion, affecting both construction and update. The maintainer deprecates the ambiguous input rather than changing conversion behavior.", "usage": {"input_tokens": 6106, "output_tokens": 170, "total_tokens": 6276, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pydata__xarray-5131", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the literal space immediately before the newline in GroupBy.__repr__ as the cause. The maintainer fix removes exactly that space, confirming the predicted causal mechanism.", "usage": {"input_tokens": 5813, "output_tokens": 55, "total_tokens": 5868, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pylint-dev__pylint-5859", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the trailing \\b as the cause: '?' and ':' are both non-word characters, so punctuation-only tags fail to match. The maintainer fix replaces that boundary with a lookahead for a colon, whitespace, or end of input, matching the predicted mechanism.", "usage": {"input_tokens": 5470, "output_tokens": 76, "total_tokens": 5546, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pylint-dev__pylint-6506", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the uncaught _UnrecognizedOptionError as the source of the traceback. The maintainer fix replaces the diagnostic-plus-raise path with argparse’s error handling, producing a controlled usage error rather than allowing that exception to escape.", "usage": {"input_tokens": 5433, "output_tokens": 69, "total_tokens": 5502, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pylint-dev__pylint-7080", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "pylint-dev__pylint-7114", "status": "reviewed", "verdict": "partial", "rationale": "The prediction identifies the namespace-directory/same-named-module collision and nonexistent __init__.py parsing, but attributes the primary cause to get_python_path(). The maintainer instead fixes expand_modules() treating every existing directory as an explicit package, routing directories without __init__.py through module resolution; get_python_path() remains unchanged.", "usage": {"input_tokens": 5993, "output_tokens": 191, "total_tokens": 6184, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pylint-dev__pylint-7228", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the fix’s causal mechanism: unsupported \\p{Han} causes re.compile to raise re.error, which escapes argument parsing instead of becoming argparse.ArgumentTypeError. The maintainer adds that conversion and also applies it to regex lists; this broader coverage does not undermine the predicted root cause.", "usage": {"input_tokens": 7038, "output_tokens": 80, "total_tokens": 7118, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pylint-dev__pylint-7993", "status": "reviewed", "verdict": "correct", "rationale": "The fix restricts placeholder matching from arbitrary text (`.+?`) to word characters (`\\w+?`), preventing the literal JSON opening inside escaped braces from being mistaken for an unsupported field. This matches the predicted validation-and-removal mechanism.", "usage": {"input_tokens": 5668, "output_tokens": 108, "total_tokens": 5776, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-11143", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the demonstrated mechanism: an initial non-string ast.Constant is mistaken for a docstring, causing the substring check to raise TypeError on an integer. The maintainer fix adds exactly the predicted string-type guard.", "usage": {"input_tokens": 6910, "output_tokens": 64, "total_tokens": 6974, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-11148", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "pytest-dev__pytest-5103", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "pytest-dev__pytest-5227", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the default format’s omission of the logger name and filename-first ordering. The maintainer fix changes that format to level-first output with logger name, filename, and line number, exactly matching the predicted mechanism.", "usage": {"input_tokens": 5404, "output_tokens": 64, "total_tokens": 5468, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-5413", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the causal mechanism: ExceptionInfo.__str__ renders the wrapped exception through ReprFileLocation rather than returning its message. The maintainer removes exactly that formatting override. Although the proposed fix delegates to str(self.value) instead, the root-cause explanation matches.", "usage": {"input_tokens": 6497, "output_tokens": 110, "total_tokens": 6607, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-5495", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: sequence comparison indexes bytes, yielding integers that appear as ASCII ordinals. The maintainer fix uses one-byte slices for readable mismatch values and suppresses extra-item explanations for bytes. The predicted patch suppresses more detail, but the root-cause explanation is correct.", "usage": {"input_tokens": 5493, "output_tokens": 79, "total_tokens": 5572, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-5692", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies omitted testsuite attributes in LogXML.pytest_sessionfinish. The maintainer fix adds timestamp from suite_start_time and hostname at that exact construction point, matching the predicted mechanism; the different hostname API does not change the root cause.", "usage": {"input_tokens": 5538, "output_tokens": 70, "total_tokens": 5608, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-7168", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated mechanism: the repr-error fallback accesses obj.__class__, triggering the failing __getattribute__ and letting another exception escape saferepr. The maintainer fix uses type(obj).__name__ to bypass that instance attribute lookup, exactly as predicted.", "usage": {"input_tokens": 7874, "output_tokens": 73, "total_tokens": 7947, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-7373", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism: condition results were cached by expression string alone despite depending on item-specific globals. The maintainer fix removes that shared result cache and evaluates each expression with the current globals, matching the predicted cause and remedy.", "usage": {"input_tokens": 5760, "output_tokens": 67, "total_tokens": 5827, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-7490", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the demonstrated mechanism: xfail evaluation remains cached as None when a marker is added during the test body, so reporting misses it. The maintainer fix reevaluates xfail marks after the test runs when the cached value is None.", "usage": {"input_tokens": 10531, "output_tokens": 70, "total_tokens": 10601, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-8365", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the unsanitized username becoming part of the temporary-directory path, with a Windows backslash creating nested components whose missing parent causes mkdir to fail. The maintainer fix handles that same failure by falling back to pytest-of-unknown on OSError rather than sanitizing the username.", "usage": {"input_tokens": 5609, "output_tokens": 79, "total_tokens": 5688, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "pytest-dev__pytest-8906", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "scikit-learn__scikit-learn-11040", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: fit checks positivity but not integer type, and kneighbors lacks validation of explicit overrides, allowing floats to reach integer-only operations. The maintainer adds integer checks in both paths and positivity validation for overrides. The prediction’s broader validation placement and different exception type do not change the core causal match.", "usage": {"input_tokens": 5647, "output_tokens": 85, "total_tokens": 5732, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-13142", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact ordering bug: the final E-step used the last initialization before best_params was restored. The maintainer fix moves that E-step after restoring the best parameters, making fit_predict labels consistent with predict.", "usage": {"input_tokens": 6468, "output_tokens": 64, "total_tokens": 6532, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-13497", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the unguarded array/string comparison as the root cause. The maintainer fix checks the type before comparing with 'auto', preventing index arrays and boolean masks from undergoing that comparison. It additionally validates other strings and array inputs.", "usage": {"input_tokens": 5248, "output_tokens": 69, "total_tokens": 5317, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-13584", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the direct array-to-default comparison in `_changed_params` as producing a boolean array whose truth evaluation raises ValueError. The maintainer fix replaces that comparison with string-representation comparison, avoiding precisely this failure mechanism.", "usage": {"input_tokens": 5038, "output_tokens": 65, "total_tokens": 5103, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-14087", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the IndexError mechanism: checking unresolved self.multi_class selects four-dimensional multinomial indexing for a three-dimensional OvR coefficient path. The maintainer fix uses resolved multi_class exactly as predicted. Its additional l1_ratio_ guard addresses a separate issue.", "usage": {"input_tokens": 6001, "output_tokens": 73, "total_tokens": 6074, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-14092", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the overly restrictive built-in numeric type checks. The maintainer fix replaces int with numbers.Integral and float with numbers.Real, accepting NumPy integers and integer tol values while preserving the existing bounds checks.", "usage": {"input_tokens": 5997, "output_tokens": 64, "total_tokens": 6061, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-14894", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that zero support vectors make dual_coef_indices empty, producing a zero step for np.arange when constructing CSR row pointers. The maintainer fix bypasses that construction when n_SV is zero, confirming the mechanism rather than a zero class count.", "usage": {"input_tokens": 5888, "output_tokens": 72, "total_tokens": 5960, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-14983", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies both mechanisms addressed by the maintainer fix: _RepeatedSplits lacks __repr__, causing the default object representation, and n_splits is stored in cvargs, requiring _build_repr to retrieve it there. The maintainer patch adds both the representation method and the cvargs fallback.", "usage": {"input_tokens": 5984, "output_tokens": 80, "total_tokens": 6064, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-15512", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the mechanism fixed by the maintainer: iteration exhaustion still allowed final exemplars to produce ordinary centers and labels whenever K > 0. Both fixes track convergence and gate clustering on it. The maintainer’s additional predict input validation is unrelated to this root cause.", "usage": {"input_tokens": 6040, "output_tokens": 75, "total_tokens": 6115, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-25500", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism: predict calls the output-wrapped transform, producing a pandas DataFrame incompatible with calibration’s 1D probability slice. The maintainer fix routes both methods through an unwrapped _transform helper, preserving ndarray predictions.", "usage": {"input_tokens": 7190, "output_tokens": 69, "total_tokens": 7259, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-25638", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the causal chain: nullable pandas numeric/boolean inputs become object arrays through xp.asarray, causing type_of_target to return 'unknown' and unique_labels to reject mixed target types. The maintainer fix replaces that conversion with check_array, preserving appropriate numeric conversion, and also applies it in is_multilabel.", "usage": {"input_tokens": 6455, "output_tokens": 84, "total_tokens": 6539, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "scikit-learn__scikit-learn-25747", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism fixed: pandas output wrapping overwrites an existing aggregated DataFrame’s four-row index with the original 96-row input index. The maintainer patch removes that index assignment, preserving existing DataFrame indexes.", "usage": {"input_tokens": 7064, "output_tokens": 66, "total_tokens": 7130, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-7686", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that the module template’s members list came directly from dir(obj), bypassing imported_members filtering. The maintainer replaces that assignment with a scanner that checks module provenance and honors imported_members, confirming the predicted causal mechanism.", "usage": {"input_tokens": 6197, "output_tokens": 67, "total_tokens": 6264, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-7738", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the causal mechanism: Napoleon escapes a trailing underscore and passes that escaped name into an attribute signature, exposing the backslash. The maintainer fix confirms this by making underscore escaping conditional on strip_signature_backslash. The proposed patch addresses the same mechanism at the directive-output stage.", "usage": {"input_tokens": 5360, "output_tokens": 129, "total_tokens": 5489, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-7975", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies that the chr(127) prefix places letters between low- and high-codepoint symbols, splitting Symbols into nonadjacent groups. The maintainer fix replaces that ordering with explicit symbol/non-symbol buckets, keeping all symbols together. The additional subentry-sorter claim is not demonstrated by the patch.", "usage": {"input_tokens": 5252, "output_tokens": 124, "total_tokens": 5376, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8273", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: write() includes the section only in the filename and writes to the flat output directory. The fix adds optional section-directory creation and routes output into it, retaining the flat layout by default. The claim about existing tests is not established by the supplied patch, but does not affect the root-cause match.", "usage": {"input_tokens": 5258, "output_tokens": 87, "total_tokens": 5345, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8282", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the causal mechanism: overload-specific signature rendering bypasses the normal annotation suppression controlled by autodoc_typehints. The maintainer fixes this by selecting overload signatures only in 'signature' mode across functions, classes, and methods, confirming that the overload path ignored the setting.", "usage": {"input_tokens": 5619, "output_tokens": 256, "total_tokens": 5875, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8435", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the missing alias namespace in get_type_hints calls for data and attributes. The maintainer fix passes autodoc_type_aliases to both calls, matching the predicted mechanism: unresolved aliases otherwise trigger the NameError fallback and leave raw annotations unchanged.", "usage": {"input_tokens": 5582, "output_tokens": 71, "total_tokens": 5653, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8506", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the rejection mechanism: the option-name regex excludes '[', preventing '[enable=]PATTERN' from matching. The maintainer removes that exclusion, confirming the cause, and additionally adjusts parsing of bracketed optional values.", "usage": {"input_tokens": 5355, "output_tokens": 126, "total_tokens": 5481, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8595", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact mechanism fixed: a truthiness check conflates empty __all__ with absent __all__, causing all module members to be selected. The maintainer’s explicit None check preserves empty export lists and matches the predicted fix.", "usage": {"input_tokens": 5261, "output_tokens": 68, "total_tokens": 5329, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8713", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: Other Parameters unconditionally used _format_fields and ignored napoleon_use_param. The maintainer fix adds the predicted configuration branch, using _format_docutils_params with multiple-field consumption when enabled and preserving the existing formatting otherwise.", "usage": {"input_tokens": 5630, "output_tokens": 70, "total_tokens": 5700, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8721", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the missing EPUB eligibility guard in collect_pages(), allowing cached module data from an HTML build to generate EPUB source pages despite viewcode_enable_epub=False. The maintainer adds that exact guard; its additional singlehtml exclusion does not change the reported EPUB mechanism.", "usage": {"input_tokens": 5165, "output_tokens": 74, "total_tokens": 5239, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sphinx-doc__sphinx-8801", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated mechanism: annotation-only members are created without docstrings, then the existing-member guard prevents analyzer documentation from being attached. The maintainer fix loads analyzer data first and supplies the docstring when creating each annotation-only member, addressing the same cause.", "usage": {"input_tokens": 5753, "output_tokens": 110, "total_tokens": 5863, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-11870", "status": "reviewed", "verdict": "incorrect", "rationale": "The prediction attributes the issue to trigsimp skipping exponential-only expressions. The maintainer fix instead adds sin-to-sinc rewriting and makes sinc-to-sin rewriting preserve the value at zero using Piecewise. It does not change trigsimp’s exponential handling; the generic observation about missing sinc conversion does not identify the demonstrated mechanism.", "usage": {"input_tokens": 5263, "output_tokens": 243, "total_tokens": 5506, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-12419", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the demonstrated cause: structural equality treats distinct symbolic indices as unequal, prematurely making identity entries zero. The maintainer fix checks mathematical equality and retains a KroneckerDelta when equality is undecidable, matching the predicted mechanism.", "usage": {"input_tokens": 5609, "output_tokens": 67, "total_tokens": 5676, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-13437", "status": "reviewed", "verdict": "correct", "rationale": "The prediction correctly identifies the missing positive-infinity case in bell.eval, which leaves bell(oo) unevaluated. The maintainer adds that case and returns S.Infinity for Bell numbers. Additional polynomial and invalid-index validation does not change the reported root cause.", "usage": {"input_tokens": 5258, "output_tokens": 73, "total_tokens": 5331, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-13480", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact causal typo: coth.eval assigns cothm but checks undefined cotm in the imaginary-period reduction branch, causing NameError. The maintainer patch fixes that check to use cothm, exactly as predicted.", "usage": {"input_tokens": 5063, "output_tokens": 65, "total_tokens": 5128, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-13647", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the exact indexing error fixed by the maintainer: trailing columns incorrectly subtract both pos and other.cols, copying earlier source columns. Subtracting only other.cols preserves the original trailing columns and explains the misplaced identity entries.", "usage": {"input_tokens": 5822, "output_tokens": 66, "total_tokens": 5888, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-13895", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "sympy__sympy-14308", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the global upper-hook replacement that duplicates basis labels at nested parentheses and the loss of vertical alignment during string assembly. The maintainer fix inserts the label at a selected lower or extension row and uses row flags to align terms and separators, supporting both diagnosed mechanisms.", "usage": {"input_tokens": 6599, "output_tokens": 112, "total_tokens": 6711, "input_token_details": {"cache_read": 2816}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-18087", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} +{"instance_id": "sympy__sympy-19487", "status": "reviewed", "verdict": "correct", "rationale": "The prediction identifies the missing _eval_rewrite_as_Abs hook and the need to preserve sign(0) = 0 rather than introduce 0/Abs(0). The maintainer adds that hook with the same zero-guarded Piecewise quotient; the predicted nonzero shortcut is an equivalent optimization.", "usage": {"input_tokens": 5442, "output_tokens": 82, "total_tokens": 5524, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-20154", "status": "reviewed", "verdict": "correct", "rationale": "The prediction matches the fix’s causal mechanism: yielding the mutable working dictionary causes retained results to alias state changed by later iterations. The maintainer replaces direct yields with ms.copy() at both locations, including size=True tuples.", "usage": {"input_tokens": 5335, "output_tokens": 64, "total_tokens": 5399, "input_token_details": {"cache_read": 0}}, "provider_metadata": {"provider": "codex-cli", "model": "gpt-6.1-sol", "reasoning_effort": "medium", "builtin_tool_calls": 0, "transport_reconnects": 0}} +{"instance_id": "sympy__sympy-20590", "status": "reviewed", "verdict": "unscorable", "rationale": "No root-cause diagnosis was submitted."} diff --git a/reports/model-100/automated-review/summary.json b/reports/model-100/automated-review/summary.json new file mode 100644 index 0000000..ae718f4 --- /dev/null +++ b/reports/model-100/automated-review/summary.json @@ -0,0 +1,15 @@ +{ + "expected": 100, + "reviewed": 100, + "llm_review_calls": 90, + "verdict_counts": { + "correct": 87, + "unscorable": 10, + "incorrect": 2, + "partial": 1 + }, + "automated_root_cause_match_rate": 0.87, + "root_cause_accuracy": null, + "human_review": false, + "metric_scope": "Automated comparison with maintainer patches; same-model bias; not human-validated accuracy." +} diff --git a/reports/model-100/completion.json b/reports/model-100/completion.json new file mode 100644 index 0000000..e50da49 --- /dev/null +++ b/reports/model-100/completion.json @@ -0,0 +1,5 @@ +{ + "completed_at": "2026-10-08T18:28:08.555358+00:00", + "count": 100, + "predictions_sha256": "79185a1be9804ebe7eaedd7191ebfc069f1d7f227c7fa1872c2c02744817f4c2" +} diff --git a/reports/model-100/diagnoses.jsonl b/reports/model-100/diagnoses.jsonl new file mode 100644 index 0000000..f48f1cd --- /dev/null +++ b/reports/model-100/diagnoses.jsonl @@ -0,0 +1,100 @@ +{"instance_id": "astropy__astropy-12907", "diagnosis": {"conclusion": "identified", "root_cause": "_separable recursively computes dependency matrices for compound children and passes them to _cstack for '&'. When the right operand is a matrix, _cstack fills its entire block with ones instead of copying that matrix, destroying the nested model's independent dependencies.", "affected_files": ["astropy/modeling/separable.py"], "evidence_ids": ["e0006", "e0008", "e0009", "e0007"], "suggested_fix": "Preserve the right-hand dependency matrix, matching the left-hand branch. Add a regression asserting that Pix2Sky_TAN() & (Linear1D(10) & Linear1D(5)) retains a diagonal lower-right block.", "proposed_patch": "--- a/astropy/modeling/separable.py\n+++ b/astropy/modeling/separable.py\n@@ -242,7 +242,7 @@\n cright = _coord_matrix(right, 'right', noutp)\n else:\n cright = np.zeros((noutp, right.shape[1]))\n- cright[-right.shape[0]:, -right.shape[1]:] = 1\n+ cright[-right.shape[0]:, -right.shape[1]:] = right\n \n return np.hstack([cleft, cright])\n \n", "confidence": "high", "limitations": ["No baseline tests or runtime reproduction were run.", "The proposed patch has not been applied or validated."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/modeling/tests/test_separable.py", "start_line": 11, "end_line": 21}, {"id": "e0002", "kind": "search", "path": "astropy/modeling/separable.py", "start_line": 21, "end_line": 31}, {"id": "e0003", "kind": "search", "path": "astropy/modeling/tests/test_models.py", "start_line": 21, "end_line": 31}, {"id": "e0004", "kind": "search", "path": "astropy/modeling/tests/test_core.py", "start_line": 16, "end_line": 26}, {"id": "e0005", "kind": "search", "path": "astropy/modeling/polynomial.py", "start_line": 451, "end_line": 461}, {"id": "e0006", "kind": "source", "path": "astropy/modeling/separable.py", "start_line": 180, "end_line": 299}, {"id": "e0007", "kind": "source", "path": "astropy/modeling/tests/test_separable.py", "start_line": 1, "end_line": 120}, {"id": "e0008", "kind": "source", "path": "astropy/modeling/separable.py", "start_line": 60, "end_line": 179}, {"id": "e0009", "kind": "source", "path": "astropy/modeling/separable.py", "start_line": 287, "end_line": 317}, {"id": "e0010", "kind": "source", "path": "astropy/modeling/tests/test_separable.py", "start_line": 120, "end_line": 150}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "astropy__astropy-14182", "diagnosis": {"conclusion": "identified", "root_cause": "RST.__init__ rejects header_rows even though FixedWidth supports it. RST also assumes exactly one header row: write() selects lines[1] as the separator, and reading starts data at the fixed offset 3.", "affected_files": ["astropy/io/ascii/rst.py"], "evidence_ids": ["e0006", "e0007", "e0015", "e0008", "e0014"], "suggested_fix": "Accept and forward header_rows, select the separator after all header rows, and derive the data-start offset from their count. Add multi-header RST write and round-trip tests, retaining default single-header coverage.", "proposed_patch": "--- a/astropy/io/ascii/rst.py\n+++ b/astropy/io/ascii/rst.py\n@@ -60,7 +60,11 @@\n- def __init__(self):\n- super().__init__(delimiter_pad=None, bookend=False)\n+ def __init__(self, header_rows=None):\n+ super().__init__(\n+ delimiter_pad=None, bookend=False, header_rows=header_rows\n+ )\n+ self.data.start_line = len(self.header.header_rows) + 2\n \n def write(self, lines):\n lines = super().write(lines)\n- lines = [lines[1]] + lines + [lines[1]]\n+ separator = lines[len(self.header.header_rows)]\n+ lines = [separator] + lines + [separator]\n return lines\n", "confidence": "high", "limitations": ["Baseline tests and independent reproduction were not run; no dependency or setup failure was observed.", "The proposed patch is unapplied and UNVERIFIED."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/io/ascii/fixedwidth.py", "start_line": 56, "end_line": 66}, {"id": "e0002", "kind": "search", "path": "astropy/io/ascii/tests/test_fixedwidth.py", "start_line": 573, "end_line": 583}, {"id": "e0003", "kind": "search", "path": "astropy/io/ascii/rst.py", "start_line": 13, "end_line": 23}, {"id": "e0004", "kind": "search", "path": "astropy/io/ascii/__init__.py", "start_line": 52, "end_line": 62}, {"id": "e0005", "kind": "search", "path": "astropy/io/ascii/daophot.py", "start_line": 199, "end_line": 209}, {"id": "e0006", "kind": "source", "path": "astropy/io/ascii/rst.py", "start_line": 1, "end_line": 66}, {"id": "e0007", "kind": "source", "path": "astropy/io/ascii/fixedwidth.py", "start_line": 250, "end_line": 369}, {"id": "e0008", "kind": "source", "path": "astropy/io/ascii/tests/test_fixedwidth.py", "start_line": 540, "end_line": 604}, {"id": "e0009", "kind": "search", "path": "astropy/io/ascii/tests/test_rst.py", "start_line": 1, "end_line": 8}, {"id": "e0010", "kind": "search", "path": "astropy/tests/runner.py", "start_line": 381, "end_line": 391}, {"id": "e0011", "kind": "search", "path": "pyproject.toml", "start_line": 23, "end_line": 33}, {"id": "e0012", "kind": "search", "path": "astropy/samp/tests/test_errors.py", "start_line": 1, "end_line": 8}, {"id": "e0013", "kind": "search", "path": "astropy/tests/command.py", "start_line": 118, "end_line": 128}, {"id": "e0014", "kind": "source", "path": "astropy/io/ascii/tests/test_rst.py", "start_line": 1, "end_line": 120}, {"id": "e0015", "kind": "source", "path": "astropy/io/ascii/fixedwidth.py", "start_line": 66, "end_line": 185}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "astropy__astropy-14365", "diagnosis": {"conclusion": "identified", "root_cause": "_line_type() matches READ SERR/TERR commands using a case-sensitive regular expression, so lowercase or mixed-case commands raise ValueError before error-column parsing. Downstream parsing already normalizes the error type with .lower().", "affected_files": ["astropy/io/ascii/qdp.py"], "evidence_ids": ["e0011", "e0014", "e0013", "e0015"], "suggested_fix": "Make only the command expression case-insensitive, preserving existing data-token handling. Add lowercase and mixed-case SERR/TERR regression tests checking error-column names and values.", "proposed_patch": "--- a/astropy/io/ascii/qdp.py\n+++ b/astropy/io/ascii/qdp.py\n@@ -62,3 +62,3 @@\n _decimal_re = r\"[+-]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?\"\n- _command_re = r\"READ [TS]ERR(\\s+[0-9]+)+\"\n+ _command_re = r\"(?i:READ [TS]ERR(\\s+[0-9]+)+)\"\n \n", "confidence": "high", "limitations": ["No baseline tests or reproduction were run; runtime behavior is inferred from source evidence.", "The proposed patch is unverified and has not been applied."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/io/ascii/qdp.py", "start_line": 53, "end_line": 63}, {"id": "e0002", "kind": "search", "path": "astropy/io/ascii/tests/test_qdp.py", "start_line": 2, "end_line": 12}, {"id": "e0003", "kind": "search", "path": "astropy/io/ascii/__init__.py", "start_line": 55, "end_line": 65}, {"id": "e0004", "kind": "search", "path": "astropy/io/ascii/tests/test_write.py", "start_line": 314, "end_line": 324}, {"id": "e0005", "kind": "search", "path": "astropy/units/core.py", "start_line": 35, "end_line": 45}, {"id": "e0006", "kind": "search", "path": "astropy/io/ascii/tests/test_qdp.py", "start_line": 2, "end_line": 12}, {"id": "e0007", "kind": "search", "path": "astropy/io/ascii/qdp.py", "start_line": 32, "end_line": 42}, {"id": "e0008", "kind": "search", "path": "astropy/io/ascii/__init__.py", "start_line": 61, "end_line": 67}, {"id": "e0009", "kind": "search", "path": "astropy/io/ascii/tests/test_write.py", "start_line": 467, "end_line": 477}, {"id": "e0010", "kind": "search", "path": "astropy/cosmology/io/tests/test_html.py", "start_line": 17, "end_line": 27}, {"id": "e0011", "kind": "source", "path": "astropy/io/ascii/qdp.py", "start_line": 1, "end_line": 120}, {"id": "e0012", "kind": "source", "path": "astropy/io/ascii/qdp.py", "start_line": 121, "end_line": 240}, {"id": "e0013", "kind": "source", "path": "astropy/io/ascii/tests/test_qdp.py", "start_line": 1, "end_line": 120}, {"id": "e0014", "kind": "source", "path": "astropy/io/ascii/qdp.py", "start_line": 260, "end_line": 379}, {"id": "e0015", "kind": "source", "path": "astropy/io/ascii/tests/test_qdp.py", "start_line": 113, "end_line": 232}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "astropy__astropy-14995", "diagnosis": {"conclusion": "identified", "root_cause": "_arithmetic_mask checks whether operand is None but not whether operand.mask is None when the left operand has a mask. A maskless operand therefore reaches handle_mask(self.mask, None), causing np.bitwise_or to fail. Scalar operands also take this path because they are wrapped as NDData-like objects.", "affected_files": ["astropy/nddata/mixins/ndarithmetic.py"], "evidence_ids": ["e0006", "e0024", "e0025", "e0026"], "suggested_fix": "Deep-copy the existing mask when the other operand has no mask. Add regression tests with integer masks and np.bitwise_or for scalar and maskless operands, both operand orders, and copy independence.", "proposed_patch": "--- a/astropy/nddata/mixins/ndarithmetic.py\n+++ b/astropy/nddata/mixins/ndarithmetic.py\n@@ -522,7 +522,7 @@\n # Make a copy so there is no reference in the result.\n return deepcopy(operand.mask)\n- elif operand is None:\n+ elif operand is None or operand.mask is None:\n return deepcopy(self.mask)\n else:\n # Now lets calculate the resulting mask (operation enforces copy)\n return handle_mask(self.mask, operand.mask, **kwds)\n", "confidence": "high", "limitations": ["No baseline tests or reproduction were run; the proposed patch is unverified and has not been applied.", "The reported v5.2 versus v5.3 regression was not independently verified."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 482, "end_line": 492}, {"id": "e0002", "kind": "search", "path": "astropy/nddata/tests/test_ccddata.py", "start_line": 514, "end_line": 524}, {"id": "e0003", "kind": "search", "path": "astropy/nddata/ccddata.py", "start_line": 56, "end_line": 66}, {"id": "e0004", "kind": "search", "path": "astropy/nddata/mixins/tests/test_ndarithmetic.py", "start_line": 1095, "end_line": 1105}, {"id": "e0005", "kind": "search", "path": "astropy/time/tests/test_delta.py", "start_line": 14, "end_line": 24}, {"id": "e0006", "kind": "source", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 485, "end_line": 560}, {"id": "e0007", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 115, "end_line": 125}, {"id": "e0008", "kind": "search", "path": "astropy/nddata/mixins/tests/test_ndarithmetic.py", "start_line": 1069, "end_line": 1079}, {"id": "e0009", "kind": "search", "path": "astropy/nddata/bitmask.py", "start_line": 518, "end_line": 528}, {"id": "e0010", "kind": "search", "path": "astropy/nddata/compat.py", "start_line": 8, "end_line": 18}, {"id": "e0011", "kind": "search", "path": "astropy/nddata/ccddata.py", "start_line": 48, "end_line": 58}, {"id": "e0012", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 482, "end_line": 492}, {"id": "e0013", "kind": "search", "path": "astropy/nddata/compat.py", "start_line": 8, "end_line": 18}, {"id": "e0014", "kind": "search", "path": "astropy/nddata/mixins/tests/test_ndarithmetic.py", "start_line": 1095, "end_line": 1105}, {"id": "e0015", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 603, "end_line": 613}, {"id": "e0016", "kind": "search", "path": "astropy/nddata/ccddata.py", "start_line": 56, "end_line": 66}, {"id": "e0017", "kind": "search", "path": "astropy/nddata/nduncertainty.py", "start_line": 299, "end_line": 309}, {"id": "e0018", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 332, "end_line": 342}, {"id": "e0019", "kind": "search", "path": "astropy/nddata/ccddata.py", "start_line": 56, "end_line": 66}, {"id": "e0020", "kind": "search", "path": "astropy/nddata/compat.py", "start_line": 19, "end_line": 29}, {"id": "e0021", "kind": "search", "path": "astropy/nddata/mixins/tests/test_ndarithmetic.py", "start_line": 1197, "end_line": 1207}, {"id": "e0022", "kind": "search", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 41, "end_line": 51}, {"id": "e0023", "kind": "search", "path": "astropy/convolution/core.py", "start_line": 31, "end_line": 41}, {"id": "e0024", "kind": "source", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 310, "end_line": 340}, {"id": "e0025", "kind": "source", "path": "astropy/nddata/mixins/ndarithmetic.py", "start_line": 620, "end_line": 739}, {"id": "e0026", "kind": "source", "path": "astropy/nddata/mixins/tests/test_ndarithmetic.py", "start_line": 1200, "end_line": 1275}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "astropy__astropy-6938", "diagnosis": null, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/io/fits/fitsrec.py", "start_line": 1261, "end_line": 1271}, {"id": "e0002", "kind": "search", "path": "astropy/io/fits/hdu/table.py", "start_line": 24, "end_line": 34}, {"id": "e0003", "kind": "search", "path": "astropy/io/fits/column.py", "start_line": 2079, "end_line": 2089}, {"id": "e0004", "kind": "search", "path": "astropy/io/fits/header.py", "start_line": 8, "end_line": 18}, {"id": "e0005", "kind": "search", "path": "astropy/io/fits/tests/test_table.py", "start_line": 1833, "end_line": 1843}, {"id": "e0006", "kind": "source", "path": "astropy/io/fits/fitsrec.py", "start_line": 1155, "end_line": 1274}, {"id": "e0007", "kind": "search", "path": "astropy/io/fits/fitsrec.py", "start_line": 1122, "end_line": 1132}, {"id": "e0008", "kind": "search", "path": "cextern/cfitsio/lib/scalnull.c", "start_line": 34, "end_line": 44}, {"id": "e0009", "kind": "search", "path": "astropy/utils/console.py", "start_line": 177, "end_line": 187}, {"id": "e0010", "kind": "search", "path": "astropy/io/ascii/tests/test_write.py", "start_line": 10, "end_line": 20}, {"id": "e0011", "kind": "search", "path": "cextern/cfitsio/lib/putcolj.c", "start_line": 343, "end_line": 353}, {"id": "e0012", "kind": "search", "path": "astropy/io/ascii/tests/test_c_reader.py", "start_line": 58, "end_line": 68}, {"id": "e0013", "kind": "search", "path": "astropy/io/fits/card.py", "start_line": 320, "end_line": 330}, {"id": "e0014", "kind": "search", "path": "cextern/cfitsio/lib/getcolsb.c", "start_line": 646, "end_line": 656}, {"id": "e0015", "kind": "search", "path": "astropy/io/ascii/src/tokenizer.c", "start_line": 743, "end_line": 753}, {"id": "e0016", "kind": "search", "path": "cextern/cfitsio/lib/getcolb.c", "start_line": 646, "end_line": 656}, {"id": "e0017", "kind": "source", "path": "astropy/io/fits/fitsrec.py", "start_line": 1080, "end_line": 1145}, {"id": "e0018", "kind": "search", "path": "astropy/io/fits/fitsrec.py", "start_line": 12, "end_line": 22}, {"id": "e0019", "kind": "search", "path": "astropy/io/fits/column.py", "start_line": 71, "end_line": 81}, {"id": "e0020", "kind": "search", "path": "astropy/io/misc/asdf/tags/table/tests/test_table.py", "start_line": 9, "end_line": 19}, {"id": "e0021", "kind": "search", "path": "astropy/io/votable/tests/table_test.py", "start_line": 15, "end_line": 25}, {"id": "e0022", "kind": "search", "path": "astropy/io/fits/tests/test_fitsheader.py", "start_line": 57, "end_line": 67}, {"id": "e0023", "kind": "search", "path": "astropy/io/fits/tests/test_table.py", "start_line": 103, "end_line": 113}, {"id": "e0024", "kind": "search", "path": "astropy/io/fits/tests/test_groups.py", "start_line": 7, "end_line": 17}, {"id": "e0025", "kind": "search", "path": "astropy/io/misc/asdf/tags/table/tests/test_table.py", "start_line": 9, "end_line": 19}, {"id": "e0026", "kind": "search", "path": "astropy/io/fits/tests/test_fitsheader.py", "start_line": 57, "end_line": 67}, {"id": "e0027", "kind": "search", "path": "astropy/io/votable/tests/table_test.py", "start_line": 15, "end_line": 25}, {"id": "e0028", "kind": "search", "path": "astropy/table/tests/test_table.py", "start_line": 1909, "end_line": 1919}, {"id": "e0029", "kind": "search", "path": "astropy/io/fits/tests/test_groups.py", "start_line": 7, "end_line": 17}, {"id": "e0030", "kind": "search", "path": "astropy/io/fits/tests/test_table.py", "start_line": 254, "end_line": 264}, {"id": "e0031", "kind": "search", "path": "astropy/io/ascii/tests/test_fixedwidth.py", "start_line": 100, "end_line": 110}, {"id": "e0032", "kind": "search", "path": "astropy/io/ascii/tests/test_read.py", "start_line": 139, "end_line": 149}, {"id": "e0033", "kind": "search", "path": "astropy/io/ascii/tests/test_write.py", "start_line": 397, "end_line": 407}, {"id": "e0034", "kind": "search", "path": "astropy/io/ascii/tests/test_ipac_definitions.py", "start_line": 49, "end_line": 59}, {"id": "e0035", "kind": "search", "path": "astropy/io/fits/tests/test_table.py", "start_line": 2820, "end_line": 2830}, {"id": "e0036", "kind": "source", "path": "astropy/io/fits/tests/test_table.py", "start_line": 257, "end_line": 325}, {"id": "e0037", "kind": "source", "path": "astropy/io/fits/tests/test_table.py", "start_line": 2795, "end_line": 2890}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "astropy__astropy-7746", "diagnosis": {"conclusion": "identified", "root_cause": "The shared _array_converter unconditionally invokes the transformation backend for empty coordinates. Separate empty axes become a zero-row coordinate array passed to self.wcs.p2s, matching the reported wcslib error. The single-array branch also lacks empty-input handling.", "affected_files": ["astropy/wcs/wcs.py"], "evidence_ids": ["e0011", "e0018", "e0017"], "suggested_fix": "Skip backend calls for empty coordinate arrays while retaining broadcasting, shape validation, and coordinate-order handling. Add regression tests for both calling conventions, both transformation directions, and empty broadcast shapes.", "proposed_patch": "--- a/astropy/wcs/wcs.py\n+++ b/astropy/wcs/wcs.py\n@@ -1222,7 +1222,7 @@\n \n if ra_dec_order and sky == 'input':\n xy = self._denormalize_sky(xy)\n- output = func(xy, origin)\n+ output = xy if xy.size == 0 else func(xy, origin)\n if ra_dec_order and sky == 'output':\n output = self._normalize_sky(output)\n return (output[:, 0].reshape(axes[0].shape),\n@@ -1239,7 +1239,7 @@\n \"of shape (N, {0})\".format(self.naxis))\n if ra_dec_order and sky == 'input':\n xy = self._denormalize_sky(xy)\n- result = func(xy, origin)\n+ result = xy if xy.size == 0 else func(xy, origin)\n if ra_dec_order and sky == 'output':\n result = self._normalize_sky(result)\n return result\n", "confidence": "high", "limitations": ["Baseline tests and runtime reproduction were not run; no dependency/setup failure was reported.", "The proposed patch is UNVERIFIED and has not been applied.", "The backend implementation and sky-normalization helpers were not included in the source observations."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "astropy/wcs/wcs.py", "start_line": 1205, "end_line": 1215}, {"id": "e0002", "kind": "search", "path": "astropy/io/votable/converters.py", "start_line": 430, "end_line": 440}, {"id": "e0003", "kind": "search", "path": "astropy/units/quantity_helper.py", "start_line": 103, "end_line": 113}, {"id": "e0004", "kind": "search", "path": "astropy/io/votable/tree.py", "start_line": 2812, "end_line": 2822}, {"id": "e0005", "kind": "search", "path": "astropy/io/votable/tests/converter_test.py", "start_line": 6, "end_line": 16}, {"id": "e0006", "kind": "search", "path": "astropy/wcs/tests/test_wcs.py", "start_line": 47, "end_line": 57}, {"id": "e0007", "kind": "search", "path": "docs/wcs/examples/programmatic.py", "start_line": 21, "end_line": 31}, {"id": "e0008", "kind": "search", "path": "astropy/nddata/tests/test_utils.py", "start_line": 493, "end_line": 502}, {"id": "e0009", "kind": "search", "path": "astropy/wcs/tests/test_profiling.py", "start_line": 42, "end_line": 52}, {"id": "e0010", "kind": "search", "path": "astropy/wcs/wcs.py", "start_line": 720, "end_line": 730}, {"id": "e0011", "kind": "source", "path": "astropy/wcs/wcs.py", "start_line": 1208, "end_line": 1325}, {"id": "e0012", "kind": "search", "path": "astropy/coordinates/tests/test_representation.py", "start_line": 47, "end_line": 57}, {"id": "e0013", "kind": "search", "path": "astropy/wcs/tests/test_wcs.py", "start_line": 248, "end_line": 258}, {"id": "e0014", "kind": "search", "path": "astropy/modeling/core.py", "start_line": 37, "end_line": 47}, {"id": "e0015", "kind": "search", "path": "astropy/utils/misc.py", "start_line": 27, "end_line": 37}, {"id": "e0016", "kind": "search", "path": "astropy/table/table.py", "start_line": 1281, "end_line": 1291}, {"id": "e0017", "kind": "source", "path": "astropy/wcs/tests/test_wcs.py", "start_line": 210, "end_line": 295}, {"id": "e0018", "kind": "source", "path": "astropy/wcs/wcs.py", "start_line": 1340, "end_line": 1370}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-10914", "diagnosis": {"conclusion": "identified", "root_cause": "FILE_UPLOAD_PERMISSIONS defaults to None, so FileSystemStorage skips its final chmod. Streamed memory uploads are created with 0o666 masked by umask, while temporary uploads are moved by rename or metadata-preserving copy, retaining their temporary-file permissions. Consequently, upload paths can produce different final permissions.", "affected_files": ["django/conf/global_settings.py", "docs/howto/deployment/checklist.txt"], "evidence_ids": ["e0018", "e0012", "e0027", "e0028", "e0019", "e0020", "e0032"], "suggested_fix": "Default FILE_UPLOAD_PERMISSIONS to 0o644 so the existing chmod normalizes saved files. Preserve explicitly configured None behavior and update the deployment warning. Add regression tests for default permissions on both upload paths; retain explicit-None coverage.", "proposed_patch": "", "confidence": "high", "limitations": ["No baseline tests or runtime reproduction were run; no setup failure was reported.", "The proposed patch is unapplied and UNVERIFIED.", "Existing permission tests explicitly override the setting; default-path regression coverage remains to be added.", "The settings reference and release documentation were not supplied as source reads and are not updated here.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "docs/howto/deployment/checklist.txt", "start_line": 154, "end_line": 164}, {"id": "e0002", "kind": "search", "path": "django/core/files/storage.py", "start_line": 190, "end_line": 200}, {"id": "e0003", "kind": "search", "path": "docs/ref/files/storage.txt", "start_line": 50, "end_line": 60}, {"id": "e0004", "kind": "search", "path": "tests/file_storage/tests.py", "start_line": 504, "end_line": 514}, {"id": "e0005", "kind": "search", "path": "tests/staticfiles_tests/test_storage.py", "start_line": 503, "end_line": 513}, {"id": "e0006", "kind": "search", "path": "docs/releases/1.4.14.txt", "start_line": 19, "end_line": 29}, {"id": "e0007", "kind": "search", "path": "django/core/files/storage.py", "start_line": 214, "end_line": 224}, {"id": "e0008", "kind": "search", "path": "django/conf/global_settings.py", "start_line": 304, "end_line": 314}, {"id": "e0009", "kind": "search", "path": "django/conf/__init__.py", "start_line": 2, "end_line": 12}, {"id": "e0010", "kind": "search", "path": "docs/topics/settings.txt", "start_line": 90, "end_line": 100}, {"id": "e0011", "kind": "search", "path": "docs/howto/deployment/checklist.txt", "start_line": 154, "end_line": 164}, {"id": "e0012", "kind": "source", "path": "django/core/files/storage.py", "start_line": 201, "end_line": 320}, {"id": "e0013", "kind": "search", "path": "django/core/files/storage.py", "start_line": 190, "end_line": 200}, {"id": "e0014", "kind": "search", "path": "tests/file_storage/tests.py", "start_line": 886, "end_line": 896}, {"id": "e0015", "kind": "search", "path": "tests/staticfiles_tests/test_storage.py", "start_line": 472, "end_line": 482}, {"id": "e0016", "kind": "search", "path": "docs/ref/files/storage.txt", "start_line": 50, "end_line": 60}, {"id": "e0017", "kind": "search", "path": "docs/howto/deployment/checklist.txt", "start_line": 154, "end_line": 164}, {"id": "e0018", "kind": "source", "path": "django/conf/global_settings.py", "start_line": 290, "end_line": 314}, {"id": "e0019", "kind": "source", "path": "tests/file_storage/tests.py", "start_line": 865, "end_line": 930}, {"id": "e0020", "kind": "source", "path": "tests/staticfiles_tests/test_storage.py", "start_line": 483, "end_line": 550}, {"id": "e0021", "kind": "search", "path": "django/core/files/storage.py", "start_line": 190, "end_line": 200}, {"id": "e0022", "kind": "search", "path": "docs/ref/files/storage.txt", "start_line": 50, "end_line": 60}, {"id": "e0023", "kind": "search", "path": "docs/howto/deployment/checklist.txt", "start_line": 154, "end_line": 164}, {"id": "e0024", "kind": "search", "path": "django/core/files/uploadedfile.py", "start_line": 9, "end_line": 19}, {"id": "e0025", "kind": "search", "path": "tests/files/tests.py", "start_line": 10, "end_line": 20}, {"id": "e0026", "kind": "search", "path": "tests/file_uploads/tests.py", "start_line": 46, "end_line": 56}, {"id": "e0027", "kind": "source", "path": "django/core/files/uploadedfile.py", "start_line": 50, "end_line": 90}, {"id": "e0028", "kind": "source", "path": "django/core/files/move.py", "start_line": 1, "end_line": 87}, {"id": "e0029", "kind": "search", "path": "docs/releases/1.4.14.txt", "start_line": 22, "end_line": 32}, {"id": "e0030", "kind": "search", "path": "docs/releases/1.5.9.txt", "start_line": 22, "end_line": 32}, {"id": "e0031", "kind": "search", "path": "docs/releases/1.6.6.txt", "start_line": 22, "end_line": 32}, {"id": "e0032", "kind": "source", "path": "docs/howto/deployment/checklist.txt", "start_line": 154, "end_line": 170}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-11001", "diagnosis": {"conclusion": "identified", "root_cause": "SQLCompiler.ordering_parts lacks re.DOTALL, so its capture excludes preceding lines of multiline SQL. RawSQL preserves those newlines, and get_order_by() deduplicates using the truncated capture and parameters. Distinct expressions with identical final lines and parameters are therefore incorrectly removed.", "affected_files": ["django/db/models/sql/compiler.py"], "evidence_ids": ["e0016", "e0017", "e0022", "e0023"], "suggested_fix": "Compile ordering_parts with re.DOTALL to capture the complete multiline expression. Add regression coverage for distinct multiline orderings sharing a final line and for genuine duplicates. Check get_extra_select(), which shares this regex.", "proposed_patch": "--- a/django/db/models/sql/compiler.py\n+++ b/django/db/models/sql/compiler.py\n@@ -34,3 +34,3 @@\n self.klass_info = None\n- self.ordering_parts = re.compile(r'(.*)\\s(ASC|DESC)(.*)')\n+ self.ordering_parts = re.compile(r'(.*)\\s(ASC|DESC)(.*)', re.DOTALL)\n self._meta_ordering = None\n", "confidence": "high", "limitations": ["Diagnosis is source-based; no reproduction or baseline tests were run.", "The proposed patch is UNVERIFIED and has not been applied."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/db/models/sql/compiler.py", "start_line": 32, "end_line": 42}, {"id": "e0002", "kind": "search", "path": "django/db/models/indexes.py", "start_line": 105, "end_line": 115}, {"id": "e0003", "kind": "search", "path": "tests/ordering/tests.py", "start_line": 42, "end_line": 52}, {"id": "e0004", "kind": "search", "path": "django/db/models/sql/query.py", "start_line": 4, "end_line": 14}, {"id": "e0005", "kind": "search", "path": "docs/topics/db/optimization.txt", "start_line": 333, "end_line": 343}, {"id": "e0006", "kind": "search", "path": "django/db/models/sql/compiler.py", "start_line": 355, "end_line": 365}, {"id": "e0007", "kind": "search", "path": "django/db/models/sql/query.py", "start_line": 4, "end_line": 14}, {"id": "e0008", "kind": "search", "path": "django/db/models/options.py", "start_line": 27, "end_line": 37}, {"id": "e0009", "kind": "search", "path": "django/core/management/commands/showmigrations.py", "start_line": 31, "end_line": 41}, {"id": "e0010", "kind": "search", "path": "django/contrib/admin/checks.py", "start_line": 3, "end_line": 13}, {"id": "e0011", "kind": "search", "path": "tests/model_inheritance_regress/tests.py", "start_line": 248, "end_line": 258}, {"id": "e0012", "kind": "search", "path": "tests/ordering/tests.py", "start_line": 42, "end_line": 52}, {"id": "e0013", "kind": "search", "path": "docs/ref/models/querysets.txt", "start_line": 139, "end_line": 149}, {"id": "e0014", "kind": "search", "path": "django/db/models/sql/compiler.py", "start_line": 5, "end_line": 15}, {"id": "e0015", "kind": "search", "path": "tests/queries/tests.py", "start_line": 1447, "end_line": 1457}, {"id": "e0016", "kind": "source", "path": "django/db/models/sql/compiler.py", "start_line": 20, "end_line": 42}, {"id": "e0017", "kind": "source", "path": "django/db/models/sql/compiler.py", "start_line": 250, "end_line": 369}, {"id": "e0018", "kind": "source", "path": "tests/ordering/tests.py", "start_line": 1, "end_line": 120}, {"id": "e0019", "kind": "search", "path": "docs/ref/models/expressions.txt", "start_line": 675, "end_line": 685}, {"id": "e0020", "kind": "search", "path": "django/db/models/expressions.py", "start_line": 673, "end_line": 683}, {"id": "e0021", "kind": "search", "path": "django/db/models/sql/compiler.py", "start_line": 5, "end_line": 15}, {"id": "e0022", "kind": "source", "path": "django/db/models/expressions.py", "start_line": 676, "end_line": 704}, {"id": "e0023", "kind": "source", "path": "django/db/models/sql/compiler.py", "start_line": 364, "end_line": 380}, {"id": "e0024", "kind": "search", "path": "django/db/models/expressions.py", "start_line": 593, "end_line": 603}, {"id": "e0025", "kind": "search", "path": "docs/ref/models/expressions.txt", "start_line": 291, "end_line": 301}, {"id": "e0026", "kind": "source", "path": "tests/model_inheritance_regress/tests.py", "start_line": 240, "end_line": 260}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-11742", "diagnosis": {"conclusion": "identified", "root_cause": "Field._check_choices() validates choice structure but never compares stored choice values with max_length. Consequently, structurally valid choices pass checks even when their string values exceed the field's capacity.", "affected_files": ["django/db/models/fields/__init__.py"], "evidence_ids": ["e0010", "e0009", "e0011"], "suggested_fix": "Track the longest string value across flat and grouped choices, then report an error when it exceeds a valid max_length. Preserve malformed-choice errors and ignore display-label lengths. Add regression tests for oversized flat/grouped values, exact-length values, long labels, and invalid max_length settings. The proposed patch is UNVERIFIED.", "proposed_patch": "--- a/django/db/models/fields/__init__.py\n+++ b/django/db/models/fields/__init__.py\n@@ -260,6 +260,7 @@\n # Expect [group_name, [value, display]]\n+ choice_max_length = 0\n for choices_group in self.choices:\n try:\n group_name, group_choices = choices_group\n except (TypeError, ValueError):\n # Containing non-pairs\n@@ -267,12 +268,18 @@\n try:\n- if not all(\n- is_value(value) and is_value(human_name)\n- for value, human_name in group_choices\n- ):\n+ valid_group = True\n+ for value, human_name in group_choices:\n+ if not is_value(value) or not is_value(human_name):\n+ valid_group = False\n+ break\n+ if isinstance(value, str):\n+ choice_max_length = max(choice_max_length, len(value))\n+ if not valid_group:\n break\n except (TypeError, ValueError):\n # No groups, choices in the form [value, display]\n value, human_name = group_name, group_choices\n if not is_value(value) or not is_value(human_name):\n break\n+ if isinstance(value, str):\n+ choice_max_length = max(choice_max_length, len(value))\n \n@@ -279,6 +286,15 @@\n # Special case: choices=['ab']\n if isinstance(choices_group, str):\n break\n else:\n+ if type(self.max_length) is int and self.max_length > 0 and choice_max_length > self.max_length:\n+ return [\n+ checks.Error(\n+ \"'max_length' is too small to fit the longest value \"\n+ \"in 'choices' (%s characters).\" % choice_max_length,\n+ obj=self,\n+ id='fields.E009',\n+ )\n+ ]\n return []\n \n", "confidence": "high", "limitations": ["Baseline tests were not run; runtime behavior has not been reproduced.", "The patch has not been applied or validated, and regression tests are not included.", "The supplied evidence does not establish whether fields.E009 is available repository-wide.", "The patch measures concrete string values; lazy string choice values require additional consideration."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/db/models/fields/__init__.py", "start_line": 996, "end_line": 1006}, {"id": "e0002", "kind": "search", "path": "tests/invalid_models_tests/test_ordinary_fields.py", "start_line": 165, "end_line": 175}, {"id": "e0003", "kind": "search", "path": "django/forms/fields.py", "start_line": 206, "end_line": 216}, {"id": "e0004", "kind": "search", "path": "tests/model_fields/test_charfield.py", "start_line": 59, "end_line": 69}, {"id": "e0005", "kind": "search", "path": "tests/admin_views/models.py", "start_line": 240, "end_line": 250}, {"id": "e0006", "kind": "search", "path": "django/db/models/fields/__init__.py", "start_line": 241, "end_line": 251}, {"id": "e0007", "kind": "search", "path": "tests/forms_tests/widget_tests/test_select.py", "start_line": 16, "end_line": 26}, {"id": "e0008", "kind": "search", "path": "tests/forms_tests/widget_tests/test_selectmultiple.py", "start_line": 14, "end_line": 24}, {"id": "e0009", "kind": "source", "path": "tests/invalid_models_tests/test_ordinary_fields.py", "start_line": 130, "end_line": 249}, {"id": "e0010", "kind": "source", "path": "django/db/models/fields/__init__.py", "start_line": 185, "end_line": 304}, {"id": "e0011", "kind": "source", "path": "tests/invalid_models_tests/test_ordinary_fields.py", "start_line": 246, "end_line": 345}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-12184", "diagnosis": {"conclusion": "identified", "root_cause": "RegexPattern.match() removes None-valued named groups before deciding whether to pass positional arguments. For /module/, {'format': None} becomes {}, causing match.groups() to supply (None, None), including the nested capture. The handler passes these alongside request, producing the reported three-argument TypeError.", "affected_files": ["django/urls/resolvers.py"], "evidence_ids": ["e0006", "e0015", "e0024"], "suggested_fix": "Decide whether to use positional arguments from the unfiltered groupdict(), then omit None-valued keyword arguments. Add regression coverage for an absent optional named group containing a nested capture, asserting args == () and kwargs == {} so the view's default remains effective.", "proposed_patch": "--- a/django/urls/resolvers.py\n+++ b/django/urls/resolvers.py\n@@ -158,6 +158,7 @@\n # If there are any named groups, use those as kwargs, ignoring\n # non-named groups. Otherwise, pass all non-named arguments as\n # positional arguments.\n- kwargs = {k: v for k, v in match.groupdict().items() if v is not None}\n+ kwargs = match.groupdict()\n args = () if kwargs else match.groups()\n+ kwargs = {k: v for k, v in kwargs.items() if v is not None}\n return path[match.end():], args, kwargs\n", "confidence": "high", "limitations": ["Baseline tests were not run; runtime reproduction was not performed.", "The proposed patch is UNVERIFIED and has not been applied.", "The supplied optional-parameter test always matches arg1 and does not cover all named groups being absent."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/urls/resolvers.py", "start_line": 158, "end_line": 168}, {"id": "e0002", "kind": "search", "path": "django/utils/dateparse.py", "start_line": 74, "end_line": 84}, {"id": "e0003", "kind": "search", "path": "docs/ref/urls.txt", "start_line": 139, "end_line": 149}, {"id": "e0004", "kind": "search", "path": "django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js", "start_line": 58, "end_line": 68}, {"id": "e0005", "kind": "search", "path": "tests/urlpatterns_reverse/tests.py", "start_line": 20, "end_line": 30}, {"id": "e0006", "kind": "source", "path": "django/urls/resolvers.py", "start_line": 130, "end_line": 168}, {"id": "e0007", "kind": "search", "path": "docs/topics/http/urls.txt", "start_line": 53, "end_line": 63}, {"id": "e0008", "kind": "search", "path": "tests/urlpatterns_reverse/tests.py", "start_line": 176, "end_line": 186}, {"id": "e0009", "kind": "search", "path": "django/urls/resolvers.py", "start_line": 155, "end_line": 165}, {"id": "e0010", "kind": "search", "path": "tests/urlpatterns/tests.py", "start_line": 3, "end_line": 13}, {"id": "e0011", "kind": "search", "path": "tests/urlpatterns_reverse/urls.py", "start_line": 25, "end_line": 35}, {"id": "e0012", "kind": "search", "path": "django/core/handlers/base.py", "start_line": 110, "end_line": 120}, {"id": "e0013", "kind": "search", "path": "django/views/decorators/csrf.py", "start_line": 31, "end_line": 41}, {"id": "e0014", "kind": "search", "path": "tests/decorators/tests.py", "start_line": 32, "end_line": 42}, {"id": "e0015", "kind": "source", "path": "django/core/handlers/base.py", "start_line": 85, "end_line": 116}, {"id": "e0016", "kind": "source", "path": "tests/urlpatterns_reverse/urls.py", "start_line": 20, "end_line": 38}, {"id": "e0017", "kind": "search", "path": "tests/urlpatterns_reverse/tests.py", "start_line": 176, "end_line": 186}, {"id": "e0018", "kind": "search", "path": "tests/urlpatterns_reverse/urls.py", "start_line": 25, "end_line": 35}, {"id": "e0019", "kind": "search", "path": "tests/urlpatterns/tests.py", "start_line": 61, "end_line": 71}, {"id": "e0020", "kind": "search", "path": "docs/topics/http/urls.txt", "start_line": 234, "end_line": 244}, {"id": "e0021", "kind": "search", "path": "tests/template_tests/test_parser.py", "start_line": 24, "end_line": 34}, {"id": "e0022", "kind": "search", "path": "django/urls/resolvers.py", "start_line": 58, "end_line": 68}, {"id": "e0023", "kind": "search", "path": "tests/urlpatterns_reverse/tests.py", "start_line": 1101, "end_line": 1111}, {"id": "e0024", "kind": "source", "path": "tests/urlpatterns/tests.py", "start_line": 40, "end_line": 71}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-12497", "diagnosis": {"conclusion": "identified", "root_cause": "ManyToManyField._check_relationship_model() hardcodes incorrect hints for fields.E334 and fields.E335: they recommend ForeignKey with many-to-many arguments. The hints should recommend ManyToManyField and omit the unnecessary symmetrical=False. These branches handle non-self-referential ambiguity; self-referential ambiguity uses E333.", "affected_files": ["django/db/models/fields/related.py", "tests/invalid_models_tests/test_relative_fields.py"], "evidence_ids": ["e0006", "e0022", "e0023"], "suggested_fix": "Correct both hints and update the existing E335 test expectation. Run the relevant invalid-model tests, including coverage for E334.", "proposed_patch": "--- a/django/db/models/fields/related.py\n+++ b/django/db/models/fields/related.py\n@@ -1310,5 +1310,5 @@\n hint=(\n 'If you want to create a recursive relationship, '\n- 'use ForeignKey(\"%s\", symmetrical=False, through=\"%s\").'\n+ 'use ManyToManyField(\"%s\", through=\"%s\").'\n ) % (\n RECURSIVE_RELATIONSHIP_CONSTANT,\n@@ -1330,5 +1330,5 @@\n hint=(\n 'If you want to create a recursive relationship, '\n- 'use ForeignKey(\"%s\", symmetrical=False, through=\"%s\").'\n+ 'use ManyToManyField(\"%s\", through=\"%s\").'\n ) % (\n RECURSIVE_RELATIONSHIP_CONSTANT,\n--- a/tests/invalid_models_tests/test_relative_fields.py\n+++ b/tests/invalid_models_tests/test_relative_fields.py\n@@ -153,4 +153,4 @@\n hint=(\n 'If you want to create a recursive relationship, use '\n- 'ForeignKey(\"self\", symmetrical=False, through=\"AmbiguousRelationship\").'\n+ 'ManyToManyField(\"self\", through=\"AmbiguousRelationship\").'\n ),\n", "confidence": "high", "limitations": ["Baseline tests were not run; no reproduction or dependency/setup result is available.", "The proposed patch is UNVERIFIED and has not been applied.", "Provided test source covers E335 but does not establish E334 test coverage."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "tests/m2m_recursive/models.py", "start_line": 2, "end_line": 12}, {"id": "e0002", "kind": "search", "path": "django/db/models/fields/related.py", "start_line": 1308, "end_line": 1318}, {"id": "e0003", "kind": "search", "path": "docs/ref/models/fields.txt", "start_line": 1347, "end_line": 1357}, {"id": "e0004", "kind": "search", "path": "tests/schema/fields.py", "start_line": 25, "end_line": 35}, {"id": "e0005", "kind": "search", "path": "tests/m2m_through/models.py", "start_line": 32, "end_line": 42}, {"id": "e0006", "kind": "source", "path": "django/db/models/fields/related.py", "start_line": 1240, "end_line": 1359}, {"id": "e0007", "kind": "search", "path": "django/db/models/fields/related.py", "start_line": 825, "end_line": 835}, {"id": "e0008", "kind": "search", "path": "tests/m2m_recursive/models.py", "start_line": 8, "end_line": 18}, {"id": "e0009", "kind": "search", "path": "django/db/migrations/operations/utils.py", "start_line": 1, "end_line": 10}, {"id": "e0010", "kind": "search", "path": "tests/schema/fields.py", "start_line": 2, "end_line": 12}, {"id": "e0011", "kind": "search", "path": "docs/ref/models/fields.txt", "start_line": 1325, "end_line": 1335}, {"id": "e0012", "kind": "search", "path": "docs/ref/checks.txt", "start_line": 236, "end_line": 246}, {"id": "e0013", "kind": "search", "path": "django/db/models/fields/related.py", "start_line": 1315, "end_line": 1325}, {"id": "e0014", "kind": "search", "path": "docs/ref/models/meta.txt", "start_line": 37, "end_line": 47}, {"id": "e0015", "kind": "search", "path": "tests/model_fields/test_field_flags.py", "start_line": 1, "end_line": 9}, {"id": "e0016", "kind": "search", "path": "tests/model_indexes/tests.py", "start_line": 14, "end_line": 24}, {"id": "e0017", "kind": "search", "path": "docs/ref/checks.txt", "start_line": 240, "end_line": 250}, {"id": "e0018", "kind": "search", "path": "tests/invalid_models_tests/test_relative_fields.py", "start_line": 155, "end_line": 165}, {"id": "e0019", "kind": "search", "path": "django/db/models/fields/related.py", "start_line": 1335, "end_line": 1345}, {"id": "e0020", "kind": "search", "path": "docs/ref/models/meta.txt", "start_line": 37, "end_line": 47}, {"id": "e0021", "kind": "search", "path": "tests/model_fields/test_field_flags.py", "start_line": 1, "end_line": 9}, {"id": "e0022", "kind": "source", "path": "django/db/models/fields/related.py", "start_line": 1140, "end_line": 1240}, {"id": "e0023", "kind": "source", "path": "tests/invalid_models_tests/test_relative_fields.py", "start_line": 45, "end_line": 164}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-12983", "diagnosis": {"conclusion": "identified", "root_cause": "slugify() strips only whitespace before collapsing whitespace and dashes. Its character filter preserves underscores, and its final substitution leaves boundary dashes intact, producing ___this-is-a-test- for the reported input.", "affected_files": ["django/utils/text.py", "django/template/defaultfilters.py", "tests/utils_tests/test_text.py"], "evidence_ids": ["e0011", "e0012", "e0013"], "suggested_fix": "Strip boundary dashes and underscores after the final substitution, preserving internal separators. Update both docstrings and add regression cases. Run the utility and template slugify tests; the proposed patch is unverified.", "proposed_patch": "", "confidence": "high", "limitations": ["Baseline tests and runtime reproduction were not run; the diagnosis is based on supplied source evidence.", "The proposed patch has not been applied or validated.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "tests/template_tests/filter_tests/test_slugify.py", "start_line": 25, "end_line": 35}, {"id": "e0002", "kind": "search", "path": "tests/utils_tests/test_text.py", "start_line": 187, "end_line": 197}, {"id": "e0003", "kind": "search", "path": "django/template/defaultfilters.py", "start_line": 209, "end_line": 219}, {"id": "e0004", "kind": "search", "path": "django/utils/text.py", "start_line": 391, "end_line": 401}, {"id": "e0005", "kind": "search", "path": "docs/ref/utils.txt", "start_line": 199, "end_line": 209}, {"id": "e0006", "kind": "search", "path": "tests/template_tests/filter_tests/test_slugify.py", "start_line": 25, "end_line": 35}, {"id": "e0007", "kind": "search", "path": "tests/utils_tests/test_text.py", "start_line": 187, "end_line": 197}, {"id": "e0008", "kind": "search", "path": "django/template/defaultfilters.py", "start_line": 17, "end_line": 27}, {"id": "e0009", "kind": "search", "path": "django/utils/text.py", "start_line": 326, "end_line": 336}, {"id": "e0010", "kind": "search", "path": "docs/ref/utils.txt", "start_line": 347, "end_line": 357}, {"id": "e0011", "kind": "source", "path": "django/utils/text.py", "start_line": 390, "end_line": 415}, {"id": "e0012", "kind": "source", "path": "tests/utils_tests/test_text.py", "start_line": 190, "end_line": 250}, {"id": "e0013", "kind": "source", "path": "django/template/defaultfilters.py", "start_line": 209, "end_line": 220}, {"id": "e0014", "kind": "source", "path": "tests/template_tests/filter_tests/test_slugify.py", "start_line": 1, "end_line": 48}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-13401", "diagnosis": {"conclusion": "identified", "root_cause": "Abstract-model fields are copied without changing creation_counter. Field.__eq__ compares only that counter, so distinct inherited fields compare equal and sets deduplicate them. Field.__lt__ likewise ignores the owning model.", "affected_files": ["django/db/models/fields/__init__.py"], "evidence_ids": ["e0043", "e0044", "e0045"], "suggested_fix": "Include model identity in equality and use it as an ordering tie-breaker, preserving creation_counter as the primary ordering key. Keep the counter-based hash: unequal fields may share hashes, and this avoids changing hashes when fields become attached to models. Add regression coverage for inherited-field equality, set membership, and ordering. The proposed patch is UNVERIFIED.", "proposed_patch": "--- a/django/db/models/fields/__init__.py\n+++ b/django/db/models/fields/__init__.py\n@@ -516,14 +516,22 @@\n def __eq__(self, other):\n # Needed for @total_ordering\n if isinstance(other, Field):\n- return self.creation_counter == other.creation_counter\n+ return (\n+ self.creation_counter == other.creation_counter and\n+ getattr(self, 'model', None) is getattr(other, 'model', None)\n+ )\n return NotImplemented\n \n def __lt__(self, other):\n # This is needed because bisect does not take a comparison function.\n if isinstance(other, Field):\n- return self.creation_counter < other.creation_counter\n+ self_model = getattr(self, 'model', None)\n+ other_model = getattr(other, 'model', None)\n+ return (\n+ (self.creation_counter, self_model is not None, id(self_model)) <\n+ (other.creation_counter, other_model is not None, id(other_model))\n+ )\n return NotImplemented\n \n def __hash__(self):\n return hash(self.creation_counter)\n", "confidence": "high", "limitations": ["Baseline tests were not run; no runtime reproduction or patch validation is available.", "Model-identity ordering is process-local rather than reproducible across processes.", "The registered evidence does not include Field.contribute_to_class(), so model attachment was not independently inspected."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/db/models/manager.py", "start_line": 8, "end_line": 18}, {"id": "e0002", "kind": "search", "path": "django/utils/functional.py", "start_line": 158, "end_line": 168}, {"id": "e0003", "kind": "search", "path": "django/contrib/gis/db/backends/base/adapter.py", "start_line": 6, "end_line": 16}, {"id": "e0004", "kind": "search", "path": "django/db/models/fields/__init__.py", "start_line": 160, "end_line": 170}, {"id": "e0005", "kind": "search", "path": "django/contrib/gis/db/backends/postgis/adapter.py", "start_line": 33, "end_line": 43}, {"id": "e0006", "kind": "source", "path": "django/db/models/fields/__init__.py", "start_line": 170, "end_line": 280}, {"id": "e0007", "kind": "search", "path": "tests/model_meta/models.py", "start_line": 18, "end_line": 28}, {"id": "e0008", "kind": "search", "path": "tests/model_meta/results.py", "start_line": 1, "end_line": 9}, {"id": "e0009", "kind": "search", "path": "tests/managers_regress/models.py", "start_line": 63, "end_line": 73}, {"id": "e0010", "kind": "search", "path": "tests/model_inheritance/models.py", "start_line": 2, "end_line": 12}, {"id": "e0011", "kind": "search", "path": "tests/test_runner/models.py", "start_line": 7, "end_line": 17}, {"id": "e0012", "kind": "search", "path": "tests/foreign_object/models/empty_join.py", "start_line": 6, "end_line": 16}, {"id": "e0013", "kind": "search", "path": "tests/admin_changelist/tests.py", "start_line": 80, "end_line": 90}, {"id": "e0014", "kind": "search", "path": "docs/topics/testing/tools.txt", "start_line": 1472, "end_line": 1482}, {"id": "e0015", "kind": "search", "path": "django/db/models/manager.py", "start_line": 8, "end_line": 18}, {"id": "e0016", "kind": "search", "path": "docs/releases/3.2.txt", "start_line": 115, "end_line": 125}, {"id": "e0017", "kind": "search", "path": "django/db/models/manager.py", "start_line": 8, "end_line": 18}, {"id": "e0018", "kind": "search", "path": "django/db/models/fields/__init__.py", "start_line": 92, "end_line": 102}, {"id": "e0019", "kind": "search", "path": "django/db/migrations/state.py", "start_line": 221, "end_line": 231}, {"id": "e0020", "kind": "search", "path": "tests/template_tests/test_origin.py", "start_line": 13, "end_line": 23}, {"id": "e0021", "kind": "search", "path": "django/db/models/constraints.py", "start_line": 60, "end_line": 70}, {"id": "e0022", "kind": "search", "path": "tests/gis_tests/test_fields.py", "start_line": 9, "end_line": 19}, {"id": "e0023", "kind": "search", "path": "tests/forms_tests/widget_tests/test_multiwidget.py", "start_line": 221, "end_line": 228}, {"id": "e0024", "kind": "search", "path": "tests/utils_tests/test_lazyobject.py", "start_line": 258, "end_line": 268}, {"id": "e0025", "kind": "search", "path": "tests/check_framework/test_templates.py", "start_line": 1, "end_line": 8}, {"id": "e0026", "kind": "search", "path": "django/contrib/postgres/forms/array.py", "start_line": 157, "end_line": 167}, {"id": "e0027", "kind": "search", "path": "tests/auth_tests/test_context_processors.py", "start_line": 3, "end_line": 13}, {"id": "e0028", "kind": "search", "path": "tests/validators/tests.py", "start_line": 355, "end_line": 365}, {"id": "e0029", "kind": "search", "path": "tests/foreign_object/models/empty_join.py", "start_line": 6, "end_line": 16}, {"id": "e0030", "kind": "search", "path": "tests/template_tests/test_context.py", "start_line": 5, "end_line": 15}, {"id": "e0031", "kind": "search", "path": "docs/topics/testing/tools.txt", "start_line": 711, "end_line": 721}, {"id": "e0032", "kind": "search", "path": "django/db/models/manager.py", "start_line": 122, "end_line": 132}, {"id": "e0033", "kind": "search", "path": "django/db/models/fields/__init__.py", "start_line": 516, "end_line": 526}, {"id": "e0034", "kind": "search", "path": "django/db/migrations/state.py", "start_line": 526, "end_line": 536}, {"id": "e0035", "kind": "search", "path": "tests/template_tests/syntax_tests/i18n/test_blocktranslate.py", "start_line": 468, "end_line": 478}, {"id": "e0036", "kind": "search", "path": "tests/utils_tests/test_functional.py", "start_line": 77, "end_line": 87}, {"id": "e0037", "kind": "source", "path": "django/db/models/base.py", "start_line": 280, "end_line": 399}, {"id": "e0038", "kind": "search", "path": "tests/db_functions/text/test_length.py", "start_line": 21, "end_line": 31}, {"id": "e0039", "kind": "search", "path": "tests/model_fields/tests.py", "start_line": 80, "end_line": 90}, {"id": "e0040", "kind": "search", "path": "tests/db_functions/comparison/test_coalesce.py", "start_line": 52, "end_line": 62}, {"id": "e0041", "kind": "search", "path": "tests/invalid_models_tests/test_models.py", "start_line": 983, "end_line": 993}, {"id": "e0042", "kind": "search", "path": "django/contrib/admin/views/main.py", "start_line": 296, "end_line": 306}, {"id": "e0043", "kind": "source", "path": "django/db/models/fields/__init__.py", "start_line": 505, "end_line": 560}, {"id": "e0044", "kind": "source", "path": "django/db/models/base.py", "start_line": 250, "end_line": 286}, {"id": "e0045", "kind": "source", "path": "tests/model_fields/tests.py", "start_line": 55, "end_line": 120}, {"id": "e0046", "kind": "search", "path": "tests/schema/fields.py", "start_line": 36, "end_line": 46}, {"id": "e0047", "kind": "search", "path": "tests/foreign_object/models/article.py", "start_line": 38, "end_line": 48}, {"id": "e0048", "kind": "search", "path": "tests/foreign_object/models/empty_join.py", "start_line": 77, "end_line": 87}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-13447", "diagnosis": {"conclusion": "identified", "root_cause": "AdminSite._build_app_dict() has the model class available but omits it from model_dict, so both admin index contexts expose only model metadata. The dictionary-building method is also private.", "affected_files": ["django/contrib/admin/sites.py", "tests/admin_views/test_adminsite.py"], "evidence_ids": ["e0016", "e0032"], "suggested_fix": "Include the model class under 'model'. Add a public build_app_dict() wrapper and route both callers through it, retaining the private method for compatibility. Add model-identity assertions. This proposed patch is UNVERIFIED; baseline tests were not run.", "proposed_patch": "", "confidence": "high", "limitations": ["Only the registered source excerpts were available; investigation reached its step limit.", "No tests or reproduction were run, and no dependency/setup failure was observed.", "Public API documentation and tests of public-method overrides are not included.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/contrib/admin/sites.py", "start_line": 314, "end_line": 324}, {"id": "e0002", "kind": "search", "path": "django/urls/resolvers.py", "start_line": 504, "end_line": 514}, {"id": "e0003", "kind": "search", "path": "django/db/migrations/loader.py", "start_line": 62, "end_line": 72}, {"id": "e0004", "kind": "search", "path": "django/core/checks/model_checks.py", "start_line": 17, "end_line": 27}, {"id": "e0005", "kind": "search", "path": "tests/migrations/test_loader.py", "start_line": 58, "end_line": 68}, {"id": "e0006", "kind": "search", "path": "django/contrib/admin/sites.py", "start_line": 430, "end_line": 440}, {"id": "e0007", "kind": "search", "path": "django/urls/resolvers.py", "start_line": 529, "end_line": 539}, {"id": "e0008", "kind": "search", "path": "tests/test_runner/test_discover_runner.py", "start_line": 191, "end_line": 201}, {"id": "e0009", "kind": "search", "path": "django/core/checks/model_checks.py", "start_line": 9, "end_line": 19}, {"id": "e0010", "kind": "search", "path": "django/db/migrations/loader.py", "start_line": 53, "end_line": 63}, {"id": "e0011", "kind": "search", "path": "django/contrib/admin/sites.py", "start_line": 314, "end_line": 324}, {"id": "e0012", "kind": "search", "path": "django/contrib/staticfiles/finders.py", "start_line": 153, "end_line": 163}, {"id": "e0013", "kind": "search", "path": "django/core/management/commands/dumpdata.py", "start_line": 100, "end_line": 110}, {"id": "e0014", "kind": "search", "path": "django/core/management/commands/showmigrations.py", "start_line": 49, "end_line": 59}, {"id": "e0015", "kind": "search", "path": "django/db/migrations/autodetector.py", "start_line": 116, "end_line": 126}, {"id": "e0016", "kind": "source", "path": "django/contrib/admin/sites.py", "start_line": 433, "end_line": 552}, {"id": "e0017", "kind": "search", "path": "tests/auth_tests/test_checks.py", "start_line": 17, "end_line": 27}, {"id": "e0018", "kind": "search", "path": "django/db/migrations/optimizer.py", "start_line": 12, "end_line": 22}, {"id": "e0019", "kind": "search", "path": "tests/model_fields/test_manytomanyfield.py", "start_line": 29, "end_line": 39}, {"id": "e0020", "kind": "search", "path": "tests/bash_completion/tests.py", "start_line": 93, "end_line": 103}, {"id": "e0021", "kind": "search", "path": "django/apps/registry.py", "start_line": 118, "end_line": 128}, {"id": "e0022", "kind": "search", "path": "tests/admin_views/test_adminsite.py", "start_line": 53, "end_line": 63}, {"id": "e0023", "kind": "search", "path": "tests/admin_views/test_templatetags.py", "start_line": 1, "end_line": 11}, {"id": "e0024", "kind": "search", "path": "tests/admin_views/customadmin.py", "start_line": 1, "end_line": 9}, {"id": "e0025", "kind": "search", "path": "django/contrib/admin/sites.py", "start_line": 486, "end_line": 496}, {"id": "e0026", "kind": "search", "path": "tests/admin_views/tests.py", "start_line": 1062, "end_line": 1072}, {"id": "e0027", "kind": "search", "path": "django/contrib/admin/sites.py", "start_line": 314, "end_line": 324}, {"id": "e0028", "kind": "search", "path": "tests/admin_views/customadmin.py", "start_line": 1, "end_line": 9}, {"id": "e0029", "kind": "search", "path": "docs/ref/contrib/admin/index.txt", "start_line": 549, "end_line": 559}, {"id": "e0030", "kind": "search", "path": "tests/admin_custom_urls/models.py", "start_line": 37, "end_line": 47}, {"id": "e0031", "kind": "search", "path": "tests/modeladmin/tests.py", "start_line": 303, "end_line": 313}, {"id": "e0032", "kind": "source", "path": "tests/admin_views/test_adminsite.py", "start_line": 1, "end_line": 101}, {"id": "e0033", "kind": "source", "path": "tests/admin_views/tests.py", "start_line": 1064, "end_line": 1095}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-13448", "diagnosis": {"conclusion": "identified", "root_cause": "When TEST['MIGRATE'] is False, create_test_db() skips the entire migrate command, including its run_syncdb phase, leaving model tables uncreated. setup_databases() enables serialization by default, so serialization queries missing tables such as django_admin_log. The existing test disables serialization and incorrectly expects migrate not to run.", "affected_files": ["django/db/backends/base/creation.py", "tests/backends/base/test_creation.py"], "evidence_ids": ["e0011", "e0012", "e0018", "e0019", "e0020"], "suggested_fix": "Always run migrate with run_syncdb=True. When migrations are disabled, temporarily map every installed app's migration module to None, restoring the original setting in finally before serialization. Update the existing test expectation and add integration coverage for table creation and default serialization.", "proposed_patch": "--- a/django/db/backends/base/creation.py\n+++ b/django/db/backends/base/creation.py\n@@ -60,13 +60,21 @@\n \n- if self.connection.settings_dict['TEST']['MIGRATE']:\n+ if not self.connection.settings_dict['TEST']['MIGRATE']:\n+ old_migration_modules = settings.MIGRATION_MODULES\n+ settings.MIGRATION_MODULES = {\n+ app.label: None for app in apps.get_app_configs()\n+ }\n+ try:\n # We report migrate messages at one level lower than that\n # requested. This ensures we don't get flooded with messages during\n # testing (unless you really ask to be flooded).\n call_command(\n 'migrate',\n verbosity=max(verbosity - 1, 0),\n interactive=False,\n database=self.connection.alias,\n run_syncdb=True,\n )\n+ finally:\n+ if not self.connection.settings_dict['TEST']['MIGRATE']:\n+ settings.MIGRATION_MODULES = old_migration_modules\n \n--- a/tests/backends/base/test_creation.py\n+++ b/tests/backends/base/test_creation.py\n@@ -60,7 +60,7 @@\n try:\n with mock.patch.object(creation, '_create_test_db'):\n creation.create_test_db(verbosity=0, autoclobber=True, serialize=False)\n- mocked_migrate.assert_not_called()\n+ mocked_migrate.assert_called_once()\n finally:\n with mock.patch.object(creation, '_destroy_test_db'):\n creation.destroy_test_db(old_database_name, verbosity=0)\n", "confidence": "high", "limitations": ["No baseline tests or reproduction were run; no dependency/setup failure was observed.", "The proposed patch has not been applied or validated.", "The updated mocked test does not verify actual table creation, serialization, or restoration after an exception."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "tests/backends/base/test_creation.py", "start_line": 59, "end_line": 69}, {"id": "e0002", "kind": "search", "path": "django/db/backends/base/creation.py", "start_line": 27, "end_line": 37}, {"id": "e0003", "kind": "search", "path": "docs/topics/testing/advanced.txt", "start_line": 759, "end_line": 769}, {"id": "e0004", "kind": "search", "path": "docs/topics/migrations.txt", "start_line": 617, "end_line": 627}, {"id": "e0005", "kind": "search", "path": "tests/migrations/test_commands.py", "start_line": 22, "end_line": 32}, {"id": "e0006", "kind": "search", "path": "tests/backends/base/test_creation.py", "start_line": 3, "end_line": 13}, {"id": "e0007", "kind": "search", "path": "django/db/backends/base/creation.py", "start_line": 241, "end_line": 251}, {"id": "e0008", "kind": "search", "path": "docs/howto/legacy-databases.txt", "start_line": 67, "end_line": 77}, {"id": "e0009", "kind": "search", "path": "docs/topics/testing/advanced.txt", "start_line": 526, "end_line": 536}, {"id": "e0010", "kind": "search", "path": "docs/releases/1.10.1.txt", "start_line": 31, "end_line": 41}, {"id": "e0011", "kind": "source", "path": "django/db/backends/base/creation.py", "start_line": 30, "end_line": 145}, {"id": "e0012", "kind": "source", "path": "tests/backends/base/test_creation.py", "start_line": 1, "end_line": 110}, {"id": "e0013", "kind": "search", "path": "django/core/management/commands/migrate.py", "start_line": 167, "end_line": 177}, {"id": "e0014", "kind": "search", "path": "tests/migrations/test_commands.py", "start_line": 831, "end_line": 841}, {"id": "e0015", "kind": "search", "path": "django/db/migrations/loader.py", "start_line": 68, "end_line": 78}, {"id": "e0016", "kind": "search", "path": "tests/migrations/test_loader.py", "start_line": 179, "end_line": 189}, {"id": "e0017", "kind": "search", "path": "tests/migrations/migrations_test_apps/unmigrated_app_syncdb/models.py", "start_line": 1, "end_line": 8}, {"id": "e0018", "kind": "source", "path": "django/test/utils.py", "start_line": 145, "end_line": 185}, {"id": "e0019", "kind": "source", "path": "django/db/migrations/loader.py", "start_line": 50, "end_line": 100}, {"id": "e0020", "kind": "source", "path": "django/core/management/commands/migrate.py", "start_line": 195, "end_line": 235}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-13757", "diagnosis": {"conclusion": "identified", "root_cause": "For isnull=True, KeyTransformIsNull delegates to generic IsNull on SQLite and Oracle. This tests whether the extracted value is SQL NULL, conflating an absent key with a present key containing JSON null. The existing regression test uses a non-null-valued key and misses this distinction.", "affected_files": ["django/db/models/fields/json.py", "tests/model_fields/test_jsonfield.py"], "evidence_ids": ["e0011", "e0012", "e0014", "e0015", "e0019", "e0020"], "suggested_fix": "Test key absence instead of extracted-value nullness: use JSON_TYPE IS NULL on SQLite and negated JSON_EXISTS with a SQL-NULL parent guard on Oracle. Change the regression assertion to use key j, whose fixture value is JSON null. The proposed patch is unverified.", "proposed_patch": "", "confidence": "high", "limitations": ["Baseline tests were not run; no runtime reproduction or setup failure was observed.", "The patch has not been applied or validated on SQLite or Oracle.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/db/models/fields/json.py", "start_line": 363, "end_line": 373}, {"id": "e0002", "kind": "search", "path": "tests/model_fields/test_jsonfield.py", "start_line": 16, "end_line": 26}, {"id": "e0003", "kind": "search", "path": "django/contrib/postgres/fields/hstore.py", "start_line": 14, "end_line": 24}, {"id": "e0004", "kind": "search", "path": "tests/lookup/models.py", "start_line": 27, "end_line": 37}, {"id": "e0005", "kind": "search", "path": "tests/null_fk/tests.py", "start_line": 49, "end_line": 59}, {"id": "e0006", "kind": "search", "path": "tests/model_fields/test_jsonfield.py", "start_line": 580, "end_line": 590}, {"id": "e0007", "kind": "search", "path": "tests/queries/test_query.py", "start_line": 91, "end_line": 101}, {"id": "e0008", "kind": "search", "path": "tests/filtered_relation/tests.py", "start_line": 77, "end_line": 87}, {"id": "e0009", "kind": "search", "path": "django/contrib/admin/filters.py", "start_line": 3, "end_line": 13}, {"id": "e0010", "kind": "search", "path": "tests/null_fk/tests.py", "start_line": 45, "end_line": 55}, {"id": "e0011", "kind": "source", "path": "django/db/models/fields/json.py", "start_line": 180, "end_line": 275}, {"id": "e0012", "kind": "source", "path": "django/db/models/fields/json.py", "start_line": 285, "end_line": 385}, {"id": "e0013", "kind": "source", "path": "tests/model_fields/test_jsonfield.py", "start_line": 300, "end_line": 390}, {"id": "e0014", "kind": "source", "path": "tests/model_fields/test_jsonfield.py", "start_line": 583, "end_line": 645}, {"id": "e0015", "kind": "source", "path": "tests/model_fields/test_jsonfield.py", "start_line": 250, "end_line": 303}, {"id": "e0016", "kind": "search", "path": "django/db/models/lookups.py", "start_line": 502, "end_line": 512}, {"id": "e0017", "kind": "search", "path": "docs/ref/checks.txt", "start_line": 17, "end_line": 27}, {"id": "e0018", "kind": "search", "path": "docs/ref/models/lookups.txt", "start_line": 12, "end_line": 22}, {"id": "e0019", "kind": "source", "path": "django/db/models/fields/json.py", "start_line": 160, "end_line": 181}, {"id": "e0020", "kind": "source", "path": "django/db/models/lookups.py", "start_line": 504, "end_line": 530}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-14997", "diagnosis": {"conclusion": "identified", "root_cause": "Expressions.rename_table_references() unconditionally assigns new_table to every column alias. UniqueConstraint expressions are intentionally resolved without table aliases (alias_cols=False). During SQLite table remaking, renaming the temporary table therefore converts unqualified index expressions into table-qualified expressions, which SQLite rejects with the reported error.", "affected_files": ["django/db/backends/ddl_references.py"], "evidence_ids": ["e0019", "e0020", "e0012", "e0029"], "suggested_fix": "Rename only aliases equal to old_table, preserving unqualified columns. Add regression coverage for renaming unqualified expressions and remaking a SQLite table with an expression-based UniqueConstraint. The proposed patch is UNVERIFIED.", "proposed_patch": "--- a/django/db/backends/ddl_references.py\n+++ b/django/db/backends/ddl_references.py\n@@ -215,6 +215,7 @@\n expressions = deepcopy(self.expressions)\n self.columns = []\n for col in self.compiler.query._gen_cols([expressions]):\n- col.alias = new_table\n+ if col.alias == old_table:\n+ col.alias = new_table\n self.expressions = expressions\n super().rename_table_references(old_table, new_table)\n", "confidence": "high", "limitations": ["No baseline tests or reproduction were run; the diagnosis is based on supplied source evidence and the reported traceback.", "The patch has not been applied or validated."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/db/backends/sqlite3/schema.py", "start_line": 14, "end_line": 24}, {"id": "e0002", "kind": "search", "path": "django/contrib/gis/db/backends/spatialite/schema.py", "start_line": 121, "end_line": 131}, {"id": "e0003", "kind": "search", "path": "django/db/backends/sqlite3/features.py", "start_line": 60, "end_line": 70}, {"id": "e0004", "kind": "search", "path": "django/db/backends/base/schema.py", "start_line": 187, "end_line": 197}, {"id": "e0005", "kind": "search", "path": "tests/backends/sqlite/tests.py", "start_line": 122, "end_line": 132}, {"id": "e0006", "kind": "search", "path": "django/db/backends/ddl_references.py", "start_line": 20, "end_line": 30}, {"id": "e0007", "kind": "search", "path": "django/db/backends/base/schema.py", "start_line": 82, "end_line": 92}, {"id": "e0008", "kind": "search", "path": "django/db/backends/sqlite3/schema.py", "start_line": 64, "end_line": 74}, {"id": "e0009", "kind": "search", "path": "django/db/backends/postgresql/schema.py", "start_line": 26, "end_line": 36}, {"id": "e0010", "kind": "search", "path": "django/core/management/commands/inspectdb.py", "start_line": 40, "end_line": 50}, {"id": "e0011", "kind": "source", "path": "django/db/backends/ddl_references.py", "start_line": 220, "end_line": 236}, {"id": "e0012", "kind": "source", "path": "django/db/backends/sqlite3/schema.py", "start_line": 240, "end_line": 320}, {"id": "e0013", "kind": "search", "path": "django/db/models/constraints.py", "start_line": 200, "end_line": 210}, {"id": "e0014", "kind": "search", "path": "django/db/models/indexes.py", "start_line": 81, "end_line": 91}, {"id": "e0015", "kind": "search", "path": "tests/queries/test_query.py", "start_line": 24, "end_line": 34}, {"id": "e0016", "kind": "search", "path": "django/db/backends/base/schema.py", "start_line": 82, "end_line": 92}, {"id": "e0017", "kind": "search", "path": "django/db/backends/postgresql/schema.py", "start_line": 181, "end_line": 191}, {"id": "e0018", "kind": "search", "path": "tests/schema/tests.py", "start_line": 903, "end_line": 913}, {"id": "e0019", "kind": "source", "path": "django/db/backends/ddl_references.py", "start_line": 175, "end_line": 236}, {"id": "e0020", "kind": "source", "path": "django/db/models/constraints.py", "start_line": 155, "end_line": 208}, {"id": "e0021", "kind": "search", "path": "django/db/models/constraints.py", "start_line": 110, "end_line": 120}, {"id": "e0022", "kind": "search", "path": "tests/postgres_tests/test_constraints.py", "start_line": 6, "end_line": 16}, {"id": "e0023", "kind": "search", "path": "django/contrib/postgres/constraints.py", "start_line": 9, "end_line": 19}, {"id": "e0024", "kind": "search", "path": "django/db/backends/postgresql/schema.py", "start_line": 1, "end_line": 10}, {"id": "e0025", "kind": "search", "path": "django/db/backends/base/schema.py", "start_line": 74, "end_line": 84}, {"id": "e0026", "kind": "search", "path": "django/db/backends/ddl_references.py", "start_line": 20, "end_line": 30}, {"id": "e0027", "kind": "search", "path": "django/db/backends/sqlite3/schema.py", "start_line": 83, "end_line": 93}, {"id": "e0028", "kind": "search", "path": "tests/backends/test_ddl_references.py", "start_line": 140, "end_line": 150}, {"id": "e0029", "kind": "source", "path": "tests/backends/test_ddl_references.py", "start_line": 190, "end_line": 252}, {"id": "e0030", "kind": "search", "path": "django/db/backends/sqlite3/schema.py", "start_line": 83, "end_line": 93}, {"id": "e0031", "kind": "search", "path": "django/db/backends/base/schema.py", "start_line": 465, "end_line": 475}, {"id": "e0032", "kind": "search", "path": "django/db/models/constraints.py", "start_line": 200, "end_line": 210}, {"id": "e0033", "kind": "search", "path": "django/db/models/indexes.py", "start_line": 87, "end_line": 97}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "django__django-16255", "diagnosis": {"conclusion": "identified", "root_cause": "Sitemap.get_latest_lastmod() calls max() on an empty list when items() is empty and lastmod is callable. This raises ValueError, but the method only catches TypeError. The exception propagates through the sitemap index view.", "affected_files": ["django/contrib/sitemaps/__init__.py"], "evidence_ids": ["e0006", "e0007", "e0008", "e0009"], "suggested_fix": "Catch ValueError alongside TypeError and return None. Add a regression test for an empty sitemap with callable lastmod, checking that the index succeeds without lastmod metadata or a Last-Modified header.", "proposed_patch": "--- a/django/contrib/sitemaps/__init__.py\n+++ b/django/contrib/sitemaps/__init__.py\n@@ -168,7 +168,7 @@\n if callable(self.lastmod):\n try:\n return max([self.lastmod(item) for item in self.items()])\n- except TypeError:\n+ except (TypeError, ValueError):\n return None\n else:\n return self.lastmod\n", "confidence": "high", "limitations": ["Baseline tests and runtime reproduction were not run.", "The proposed patch has not been applied or validated."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "django/contrib/sitemaps/views.py", "start_line": 38, "end_line": 48}, {"id": "e0002", "kind": "search", "path": "tests/sitemaps_tests/urls/http.py", "start_line": 125, "end_line": 135}, {"id": "e0003", "kind": "search", "path": "django/contrib/sitemaps/__init__.py", "start_line": 162, "end_line": 172}, {"id": "e0004", "kind": "search", "path": "docs/ref/contrib/sitemaps.txt", "start_line": 294, "end_line": 304}, {"id": "e0005", "kind": "search", "path": "tests/sitemaps_tests/test_http.py", "start_line": 226, "end_line": 236}, {"id": "e0006", "kind": "source", "path": "django/contrib/sitemaps/__init__.py", "start_line": 150, "end_line": 185}, {"id": "e0007", "kind": "source", "path": "django/contrib/sitemaps/views.py", "start_line": 55, "end_line": 110}, {"id": "e0008", "kind": "source", "path": "tests/sitemaps_tests/test_http.py", "start_line": 175, "end_line": 270}, {"id": "e0009", "kind": "source", "path": "tests/sitemaps_tests/urls/http.py", "start_line": 70, "end_line": 150}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-18869", "diagnosis": {"conclusion": "identified", "root_cause": "The top-level lazy attribute resolver exposes and caches only the string __version__; requests for comparable version metadata raise AttributeError. The existing packaging.version parser can provide numeric and prerelease-aware comparisons without adding a dependency.", "affected_files": ["lib/matplotlib/__init__.py", "lib/matplotlib/tests/test_matplotlib.py"], "evidence_ids": ["e0006", "e0016"], "suggested_fix": "Expose version_info as a lazily cached packaging version object alongside the unchanged __version__ string. Compare it with other parsed versions, not raw strings. Add consistency and ordering coverage.", "proposed_patch": "", "confidence": "high", "limitations": ["Baseline tests were not run; no runtime reproduction or setup attempt was provided.", "The proposed patch is unapplied and UNVERIFIED.", "The public representation remains a design choice: this proposal uses a packaging version object rather than a tuple or LooseVersion, and does not support direct comparison with strings.", "The proposed tests do not independently exercise both version-source branches.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "doc/conf.py", "start_line": 129, "end_line": 139}, {"id": "e0002", "kind": "search", "path": "lib/matplotlib/__init__.py", "start_line": 139, "end_line": 149}, {"id": "e0003", "kind": "search", "path": "setup.py", "start_line": 11, "end_line": 21}, {"id": "e0004", "kind": "search", "path": "lib/matplotlib/tests/test_backend_pgf.py", "start_line": 90, "end_line": 100}, {"id": "e0005", "kind": "search", "path": "lib/matplotlib/tests/test_backend_pdf.py", "start_line": 145, "end_line": 155}, {"id": "e0006", "kind": "source", "path": "lib/matplotlib/__init__.py", "start_line": 90, "end_line": 180}, {"id": "e0007", "kind": "search", "path": "lib/matplotlib/tests/tinypages/conf.py", "start_line": 16, "end_line": 24}, {"id": "e0008", "kind": "search", "path": "lib/matplotlib/backends/qt_compat.py", "start_line": 15, "end_line": 25}, {"id": "e0009", "kind": "search", "path": "lib/matplotlib/__init__.py", "start_line": 165, "end_line": 175}, {"id": "e0010", "kind": "search", "path": "lib/matplotlib/tests/test_backend_pgf.py", "start_line": 4, "end_line": 14}, {"id": "e0011", "kind": "search", "path": "lib/matplotlib/testing/decorators.py", "start_line": 9, "end_line": 19}, {"id": "e0012", "kind": "search", "path": "lib/matplotlib/tests/test_matplotlib.py", "start_line": 4, "end_line": 14}, {"id": "e0013", "kind": "search", "path": "lib/matplotlib/tests/test_testing.py", "start_line": 2, "end_line": 12}, {"id": "e0014", "kind": "search", "path": "tests.py", "start_line": 14, "end_line": 24}, {"id": "e0015", "kind": "source", "path": "lib/matplotlib/__init__.py", "start_line": 1, "end_line": 89}, {"id": "e0016", "kind": "source", "path": "lib/matplotlib/tests/test_matplotlib.py", "start_line": 1, "end_line": 67}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-23314", "diagnosis": null, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 411, "end_line": 421}, {"id": "e0002", "kind": "search", "path": "examples/mplot3d/rotate_axes3d_sgskip.py", "start_line": 18, "end_line": 28}, {"id": "e0003", "kind": "search", "path": "lib/mpl_toolkits/tests/test_mplot3d.py", "start_line": 116, "end_line": 126}, {"id": "e0004", "kind": "search", "path": "lib/matplotlib/projections/__init__.py", "start_line": 17, "end_line": 27}, {"id": "e0005", "kind": "search", "path": "examples/mplot3d/voxels.py", "start_line": 3, "end_line": 13}, {"id": "e0006", "kind": "search", "path": "lib/mpl_toolkits/tests/test_axisartist_axis_artist.py", "start_line": 10, "end_line": 20}, {"id": "e0007", "kind": "search", "path": "lib/mpl_toolkits/tests/test_axisartist_grid_helper_curvelinear.py", "start_line": 107, "end_line": 117}, {"id": "e0008", "kind": "search", "path": "lib/mpl_toolkits/tests/test_axisartist_floating_axes.py", "start_line": 56, "end_line": 66}, {"id": "e0009", "kind": "search", "path": "lib/matplotlib/tests/test_skew.py", "start_line": 23, "end_line": 33}, {"id": "e0010", "kind": "search", "path": "lib/mpl_toolkits/tests/test_axisartist_axislines.py", "start_line": 17, "end_line": 27}, {"id": "e0011", "kind": "source", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 370, "end_line": 460}, {"id": "e0012", "kind": "search", "path": "lib/mpl_toolkits/axisartist/axis_artist.py", "start_line": 172, "end_line": 182}, {"id": "e0013", "kind": "search", "path": "lib/matplotlib/tests/test_skew.py", "start_line": 19, "end_line": 29}, {"id": "e0014", "kind": "search", "path": "examples/specialty_plots/skewt.py", "start_line": 25, "end_line": 35}, {"id": "e0015", "kind": "search", "path": "lib/matplotlib/offsetbox.py", "start_line": 1472, "end_line": 1482}, {"id": "e0016", "kind": "search", "path": "lib/mpl_toolkits/axes_grid1/parasite_axes.py", "start_line": 28, "end_line": 38}, {"id": "e0017", "kind": "search", "path": "lib/matplotlib/tests/test_lines.py", "start_line": 31, "end_line": 41}, {"id": "e0018", "kind": "search", "path": "examples/subplots_axes_and_figures/shared_axis_demo.py", "start_line": 26, "end_line": 36}, {"id": "e0019", "kind": "search", "path": "lib/mpl_toolkits/tests/test_axes_grid1.py", "start_line": 28, "end_line": 38}, {"id": "e0020", "kind": "search", "path": "tutorials/toolkits/axisartist.py", "start_line": 37, "end_line": 47}, {"id": "e0021", "kind": "search", "path": "lib/matplotlib/tests/test_subplots.py", "start_line": 160, "end_line": 170}, {"id": "e0022", "kind": "search", "path": "lib/mpl_toolkits/axisartist/axis_artist.py", "start_line": 172, "end_line": 182}, {"id": "e0023", "kind": "search", "path": "lib/matplotlib/tests/test_skew.py", "start_line": 19, "end_line": 29}, {"id": "e0024", "kind": "search", "path": "examples/specialty_plots/skewt.py", "start_line": 25, "end_line": 35}, {"id": "e0025", "kind": "search", "path": "lib/matplotlib/axis.py", "start_line": 295, "end_line": 305}, {"id": "e0026", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axis3d.py", "start_line": 210, "end_line": 220}, {"id": "e0027", "kind": "search", "path": "lib/matplotlib/backends/backend_template.py", "start_line": 8, "end_line": 18}, {"id": "e0028", "kind": "search", "path": "lib/matplotlib/patheffects.py", "start_line": 59, "end_line": 69}, {"id": "e0029", "kind": "search", "path": "lib/matplotlib/backends/backend_agg.py", "start_line": 30, "end_line": 40}, {"id": "e0030", "kind": "search", "path": "lib/matplotlib/offsetbox.py", "start_line": 284, "end_line": 294}, {"id": "e0031", "kind": "search", "path": "lib/mpl_toolkits/axisartist/axis_artist.py", "start_line": 510, "end_line": 520}, {"id": "e0032", "kind": "source", "path": "lib/mpl_toolkits/tests/test_mplot3d.py", "start_line": 1, "end_line": 90}, {"id": "e0033", "kind": "search", "path": "lib/matplotlib/tests/test_skew.py", "start_line": 23, "end_line": 33}, {"id": "e0034", "kind": "search", "path": "examples/specialty_plots/skewt.py", "start_line": 27, "end_line": 37}, {"id": "e0035", "kind": "search", "path": "lib/matplotlib/axis.py", "start_line": 296, "end_line": 306}, {"id": "e0036", "kind": "search", "path": "lib/matplotlib/axes/_base.py", "start_line": 782, "end_line": 792}, {"id": "e0037", "kind": "search", "path": "lib/matplotlib/projections/polar.py", "start_line": 915, "end_line": 925}, {"id": "e0038", "kind": "search", "path": "lib/matplotlib/tests/test_agg.py", "start_line": 268, "end_line": 278}, {"id": "e0039", "kind": "search", "path": "lib/matplotlib/table.py", "start_line": 405, "end_line": 415}, {"id": "e0040", "kind": "search", "path": "lib/matplotlib/backends/backend_wx.py", "start_line": 217, "end_line": 227}, {"id": "e0041", "kind": "search", "path": "lib/matplotlib/backends/backend_agg.py", "start_line": 105, "end_line": 115}, {"id": "e0042", "kind": "search", "path": "lib/mpl_toolkits/axisartist/axis_artist.py", "start_line": 997, "end_line": 1007}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-23563", "diagnosis": {"conclusion": "identified", "root_cause": "line_2d_to_3d changes an attached line's class to Line3D before initializing _verts3d. If broadcasting zs fails in set_3d_properties, the artist remains attached without _verts3d, and subsequent drawing raises AttributeError. Changing input variables does not repair that retained artist.", "affected_files": ["lib/mpl_toolkits/mplot3d/art3d.py"], "evidence_ids": ["e0011", "e0012", "e0020", "e0023"], "suggested_fix": "Initialize 3D properties before changing the line's class, so invalid coordinates cannot leave an uninitialized Line3D attached. Add regression coverage for failed conversion followed by drawing and valid plotting. This proposed patch is UNVERIFIED.", "proposed_patch": "", "confidence": "high", "limitations": ["Baseline tests and reproduction were not run; no dependency/setup failure was observed.", "Placeholder input data prevents confirming the user's exact triggering shapes.", "The patch prevents the missing-attribute state but does not remove the retained 2D line after failed conversion.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/art3d.py", "start_line": 218, "end_line": 228}, {"id": "e0002", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 1281, "end_line": 1291}, {"id": "e0003", "kind": "search", "path": "examples/mplot3d/pathpatch3d.py", "start_line": 3, "end_line": 13}, {"id": "e0004", "kind": "search", "path": "lib/mpl_toolkits/tests/test_mplot3d.py", "start_line": 482, "end_line": 492}, {"id": "e0005", "kind": "search", "path": "examples/misc/demo_ribbon_box.py", "start_line": 34, "end_line": 44}, {"id": "e0006", "kind": "search", "path": "lib/mpl_toolkits/tests/test_mplot3d.py", "start_line": 47, "end_line": 57}, {"id": "e0007", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 6, "end_line": 16}, {"id": "e0008", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/art3d.py", "start_line": 161, "end_line": 171}, {"id": "e0009", "kind": "search", "path": "lib/matplotlib/tests/test_collections.py", "start_line": 18, "end_line": 28}, {"id": "e0010", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/proj3d.py", "start_line": 136, "end_line": 146}, {"id": "e0011", "kind": "source", "path": "lib/mpl_toolkits/mplot3d/art3d.py", "start_line": 158, "end_line": 228}, {"id": "e0012", "kind": "source", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 1235, "end_line": 1292}, {"id": "e0013", "kind": "source", "path": "lib/mpl_toolkits/tests/test_mplot3d.py", "start_line": 485, "end_line": 525}, {"id": "e0014", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 581, "end_line": 591}, {"id": "e0015", "kind": "search", "path": "lib/matplotlib/axes/_base.py", "start_line": 2283, "end_line": 2293}, {"id": "e0016", "kind": "search", "path": "lib/matplotlib/axes/_axes.py", "start_line": 1412, "end_line": 1422}, {"id": "e0017", "kind": "search", "path": "examples/text_labels_and_annotations/line_with_text.py", "start_line": 58, "end_line": 68}, {"id": "e0018", "kind": "search", "path": "examples/user_interfaces/toolmanager_sgskip.py", "start_line": 63, "end_line": 73}, {"id": "e0019", "kind": "search", "path": "examples/animation/strip_chart.py", "start_line": 20, "end_line": 30}, {"id": "e0020", "kind": "source", "path": "lib/matplotlib/axes/_base.py", "start_line": 2286, "end_line": 2310}, {"id": "e0021", "kind": "search", "path": "lib/mpl_toolkits/mplot3d/axes3d.py", "start_line": 1398, "end_line": 1408}, {"id": "e0022", "kind": "search", "path": "lib/matplotlib/axes/_base.py", "start_line": 1241, "end_line": 1251}, {"id": "e0023", "kind": "search", "path": "lib/matplotlib/axes/_axes.py", "start_line": 1656, "end_line": 1666}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-23964", "diagnosis": {"conclusion": "identified", "root_cause": "RendererPS.draw_text initializes curr_stream to None. For an empty line, _text_helpers.layout yields no glyphs, but the TrueType branch unconditionally appends curr_stream to stream. The subsequent loop attempts to unpack None, raising TypeError. Text.draw forwards empty lines to the backend.", "affected_files": ["lib/matplotlib/backends/backend_ps.py"], "evidence_ids": ["e0006", "e0016", "e0017"], "suggested_fix": "Guard the final append with if curr_stream, matching the existing guard inside the glyph loop. Add regression coverage for PS/EPS saves with leading, internal, and trailing empty lines.", "proposed_patch": "--- a/lib/matplotlib/backends/backend_ps.py\n+++ b/lib/matplotlib/backends/backend_ps.py\n@@ -668,4 +668,5 @@\n # append the last entry\n- stream.append(curr_stream)\n+ if curr_stream:\n+ stream.append(curr_stream)\n \n self.set_color(*gc.get_rgb())\n", "confidence": "high", "limitations": ["Diagnosis is based on source evidence; reproduction and baseline tests were not run.", "The proposed patch is UNVERIFIED and has not been applied."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "lib/matplotlib/backends/backend_ps.py", "start_line": 647, "end_line": 657}, {"id": "e0002", "kind": "search", "path": "lib/matplotlib/backends/backend_pdf.py", "start_line": 2349, "end_line": 2359}, {"id": "e0003", "kind": "search", "path": "src/ft2font_wrapper.cpp", "start_line": 646, "end_line": 656}, {"id": "e0004", "kind": "search", "path": "extern/ttconv/pprdrv_tt.cpp", "start_line": 358, "end_line": 368}, {"id": "e0005", "kind": "search", "path": "lib/matplotlib/backends/backend_nbagg.py", "start_line": 1, "end_line": 10}, {"id": "e0006", "kind": "source", "path": "lib/matplotlib/backends/backend_ps.py", "start_line": 601, "end_line": 710}, {"id": "e0007", "kind": "search", "path": "lib/matplotlib/text.py", "start_line": 765, "end_line": 775}, {"id": "e0008", "kind": "search", "path": "examples/axes_grid1/simple_anchored_artists.py", "start_line": 12, "end_line": 22}, {"id": "e0009", "kind": "search", "path": "examples/misc/anchored_artists.py", "start_line": 22, "end_line": 32}, {"id": "e0010", "kind": "search", "path": "lib/matplotlib/tests/test_backend_ps.py", "start_line": 25, "end_line": 35}, {"id": "e0011", "kind": "search", "path": "tutorials/provisional/mosaic.py", "start_line": 53, "end_line": 63}, {"id": "e0012", "kind": "search", "path": "tools/boilerplate.py", "start_line": 24, "end_line": 34}, {"id": "e0013", "kind": "search", "path": "lib/matplotlib/_text_helpers.py", "start_line": 35, "end_line": 45}, {"id": "e0014", "kind": "search", "path": "lib/matplotlib/textpath.py", "start_line": 149, "end_line": 159}, {"id": "e0015", "kind": "search", "path": "src/ft2font.cpp", "start_line": 186, "end_line": 196}, {"id": "e0016", "kind": "source", "path": "lib/matplotlib/text.py", "start_line": 700, "end_line": 775}, {"id": "e0017", "kind": "source", "path": "lib/matplotlib/_text_helpers.py", "start_line": 38, "end_line": 74}, {"id": "e0018", "kind": "source", "path": "lib/matplotlib/tests/test_backend_ps.py", "start_line": 1, "end_line": 120}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-24149", "diagnosis": {"conclusion": "identified", "root_cause": "Axes.bar calls _convert_dx to convert widths using x positions. For all-NaN positions, _safe_first_finite exhausts its filtered iterator and raises StopIteration. Neither _convert_dx's local handlers nor its outer fallback catches this exception. Both original and converted position lookups are vulnerable.", "affected_files": ["lib/matplotlib/axes/_axes.py", "lib/matplotlib/tests/test_axes.py"], "evidence_ids": ["e0011", "e0012", "e0013", "e0014"], "suggested_fix": "Catch StopIteration at both finite-element lookups and fall back to the first element without finite filtering. Preserve finite-element selection for mixed inputs. Add regression coverage for all-NaN positions with finite and NaN heights, plus mixed positions. The proposed patch is unverified.", "proposed_patch": "", "confidence": "high", "limitations": ["Baseline tests and reproduction were not run; no setup or dependency failure was observed.", "The patch has not been applied or validated.", "Candidate patch was withheld: applicability check status invalid."]}, "evidence_provenance": [{"id": "e0001", "kind": "search", "path": "lib/matplotlib/units.py", "start_line": 197, "end_line": 207}, {"id": "e0002", "kind": "search", "path": "lib/matplotlib/axes/_axes.py", "start_line": 2179, "end_line": 2189}, {"id": "e0003", "kind": "search", "path": "lib/matplotlib/cbook/__init__.py", "start_line": 1703, "end_line": 1713}, {"id": "e0004", "kind": "search", "path": "lib/matplotlib/tests/test_cbook.py", "start_line": 602, "end_line": 612}, {"id": "e0005", "kind": "search", "path": "examples/lines_bars_and_markers/curve_error_band.py", "start_line": 40, "end_line": 50}, {"id": "e0006", "kind": "search", "path": "lib/matplotlib/tests/test_category.py", "start_line": 39, "end_line": 49}, {"id": "e0007", "kind": "search", "path": "lib/matplotlib/tests/test_axes.py", "start_line": 1712, "end_line": 1722}, {"id": "e0008", "kind": "search", "path": "lib/matplotlib/tests/test_path.py", "start_line": 109, "end_line": 119}, {"id": "e0009", "kind": "search", "path": "lib/matplotlib/tests/test_simplification.py", "start_line": 247, "end_line": 257}, {"id": "e0010", "kind": "search", "path": "lib/matplotlib/tests/test_cbook.py", "start_line": 16, "end_line": 26}, {"id": "e0011", "kind": "source", "path": "lib/matplotlib/axes/_axes.py", "start_line": 2145, "end_line": 2210}, {"id": "e0012", "kind": "source", "path": "lib/matplotlib/axes/_axes.py", "start_line": 2350, "end_line": 2400}, {"id": "e0013", "kind": "source", "path": "lib/matplotlib/cbook/__init__.py", "start_line": 1708, "end_line": 1755}, {"id": "e0014", "kind": "source", "path": "lib/matplotlib/tests/test_axes.py", "start_line": 1685, "end_line": 1730}], "routes": [{"agent": "code_search", "reason": "initial_repository_search"}, {"agent": "synthesis", "reason": "evidence_ready_or_search_budget_reached"}], "test_status": "not_run", "patch_verified": false} +{"instance_id": "matplotlib__matplotlib-24265", "diagnosis": {"conclusion": "identified", "root_cause": "Deprecated Seaborn names are translated to seaborn-v0_8 names only inside style.use(). Direct style.library access bypasses that translation: the library is a plain dictionary keyed by style-file stems, so 'seaborn-colorblind' raises KeyError.", "affected_files": ["lib/matplotlib/style/core.py", "lib/matplotlib/tests/test_style.py"], "evidence_ids": ["e0006", "e0007", "e0008"], "suggested_fix": "Use plt.style.library['seaborn-v0_8-colorblind'] to retrieve settings; retrieval alone does not apply the style. To preserve deprecated direct lookups, the proposed patch adds warning-emitting fallback lookup without adding deprecated names to style.available, plus regression coverage. This patch is UNVERIFIED.", "proposed_patch": "--- a/lib/matplotlib/style/core.py\n+++ b/lib/matplotlib/style/core.py\n@@ -246,6 +246,22 @@\n+class _StyleLibrary(dict):\n+ def __missing__(self, key):\n+ if isinstance(key, str) and (\n+ key == \"seaborn\" or key.startswith(\"seaborn-\")):\n+ replacement = \"seaborn-v0_8\" + key[len(\"seaborn\"):]\n+ if replacement in self:\n+ _api.warn_deprecated(\n+ \"3.6\", message=\"The seaborn styles shipped by Matplotlib \"\n+ \"are deprecated since %(since)s, as they no longer \"\n+ \"correspond to the styles shipped by seaborn. However, \"\n+ \"they will remain available as 'seaborn-v0_8-