diff --git a/README.md b/README.md
index cc4996ae1ca..e6d753adb19 100644
--- a/README.md
+++ b/README.md
@@ -255,6 +255,8 @@ The Dataset column links to publicly available datasets (e.g., on HuggingFace).
| Conversational Tool Use Simulation | agent | Conversational tool-use simulation environment. | - | - | - | - | conversational_tool_use_simulation.yaml | - |
| Critpt | other | Research-level physics problems scored by the Artificial Analysis API | Evaluate model performance on research-level physics reasoning | - | - | - | critpt.yaml | - |
| Deepsearchqa | knowledge | Grade DeepSearchQA single-answer and set-answer responses | Evaluate multi-step web research answers | - | - | - | deepsearchqa.yaml | - |
+| Denovo Swe | | - | - | - | - | - | denovo_swe_example.yaml | - |
+| Denovo Swe | | - | - | ✓ | - | Creative Commons Attribution 4.0 International | denovo_swe_opencode.yaml | - |
| Equivalence Llm Judge | agent | Short bash command generation questions with LLM-as-a-judge | Improve foundational bash and IF capabilities | ✓ | ✓ | GNU General Public License v3.0 | nl2bash-equivalency.yaml | - |
| Equivalence Llm Judge | knowledge | Short answer questions with LLM-as-a-judge | Improve knowledge-related benchmarks like GPQA / HLE | - | - | - | equivalence_llm_judge.yaml | - |
| Equivalence Rule | knowledge | Question - Answering with rule-based reward | Improve retrieval and counting capabilities | - | - | - | lc.yaml | - |
@@ -351,6 +353,8 @@ The Dataset column links to publicly available datasets (e.g., on HuggingFace).
| Rolemrc | rlhf | RoleMRC role-play MRC scored by a 5-aspect LLM-as-judge (knowledge range, style, nested/multi-turn instruction, instruction priority). | Improve role-play instruction following under knowledge-range and instruction-priority constraints. | - | ✓ | - | rolemrc_judge.yaml | - |
| Ruler | other | - | - | - | - | - | ruler.yaml | - |
| Ruler2 | other | Long-context RULER v2 verifier with WER-fallback soft string match across 3 match types plus a multichoice route | Improve long-context retrieval, multi-key/multi-value needle search, and document-grounded QA | - | - | - | ruler2.yaml | - |
+| Scale Swe | | - | - | - | - | - | scale_swe_example.yaml | - |
+| Scale Swe | | - | - | ✓ | - | TBD | scale_swe_opencode.yaml | - |
| Scicode | coding | Multi-step scientific code generation; sub-step solutions executed against SciCode test cases | Improve multi-step scientific code generation | - | - | - | scicode.yaml | - |
| Scicodepile | coding | Verifies model-generated Python against SciCodePile's runnable scientific-code tests. | Improve scientific and research code generation grounded in real computational-science repositories. | - | - | - | scicodepile.yaml | - |
| Simpleqa | knowledge | SimpleQA short-form factual QA with 3-tier LLM judge (CORRECT / INCORRECT / NOT_ATTEMPTED) | Evaluate factual recall and abstention calibration via LLM-graded open-ended QA | - | - | - | simpleqa.yaml | - |
@@ -374,7 +378,15 @@ The Dataset column links to publicly available datasets (e.g., on HuggingFace).
| Swe Agents | | - | - | ✓ | ✓ | Apache 2.0 | swebench_openhands_training.yaml | - |
| Swe Agents | coding | SWE-bench driven by the opencode agent framework for RL training. | Train software engineering capabilities on SWE tasks using opencode rollouts. | ✓ | - | Apache 2.0 | swebench_opencode_training.yaml | - |
| Swe Agents | coding | SWE-bench driven by the opencode agent framework. | Eval software engineering capabilities on SWE-bench using opencode. | ✓ | ✓ | Apache 2.0 | swebench_opencode.yaml | - |
+| Swe Next | | - | - | - | - | - | swe_next_example.yaml | - |
+| Swe Next | | - | - | ✓ | - | MIT | swe_next_opencode.yaml | - |
| Swe Pivot | agent | SWE pivot verifier for PivotRL on coding agent trajectories | Improve coding agent fix-design decisions | ✓ | ✓ | Apache 2.0 | swe_pivot.yaml | - |
+| Swe Rebench | | - | - | - | - | - | swe_rebench_example.yaml | - |
+| Swe Rebench | | - | - | ✓ | - | Creative Commons Attribution 4.0 International | swe_rebench_opencode.yaml | - |
+| Swemer V1 | | - | - | - | - | - | swemer_v1_example.yaml | - |
+| Swemer V1 | | - | - | ✓ | - | NVIDIA Internal Use Only, Do Not Distribute | swemer_v1_opencode.yaml | - |
+| Swemer V2 | | - | - | - | - | - | swemer_v2_example.yaml | - |
+| Swemer V2 | | - | - | ✓ | - | NVIDIA Internal Use Only, Do Not Distribute | swemer_v2_opencode.yaml | - |
| Swerl Gen | coding | Running sandboxed evaluation for SWE-style tasks (either patch generation or reproduction test generation) | Improve SWE capabilities useful for benchmarks like SWE-bench | ✓ | ✓ | Apache 2.0 | swerl_gen.yaml | - |
| Swerl Llm Judge | coding | SWE-style multiple-choice LLM-judge tasks scored via ... choice. | Improve SWE capabilities useful for benchmarks like SWE-bench | ✓ | ✓ | MIT | swerl_llm_judge.yaml | - |
| Tales | games | TALES text-adventure games (textworld, textworld_express, alfworld, scienceworld, jericho) in Gymnasium API style. | Multi-turn reasoning and progress through open-ended, situated text environments. | - | - | - | tales.yaml | - |
diff --git a/benchmarks/nemotron_3.5_super/eval_container_config.yaml b/benchmarks/nemotron_3.5_super/eval_container_config.yaml
index c369e038af5..641b2fec82b 100644
--- a/benchmarks/nemotron_3.5_super/eval_container_config.yaml
+++ b/benchmarks/nemotron_3.5_super/eval_container_config.yaml
@@ -11,6 +11,11 @@ config_paths:
- benchmarks/deepswe/opencode.yaml
- benchmarks/terminal_bench_2_1/terminus_2.yaml
- benchmarks/swebench/pro/opencode.yaml
+- benchmarks/reward_profiling/swe_rebench/opencode.yaml
+- benchmarks/reward_profiling/swemer_v1/opencode.yaml
+- benchmarks/reward_profiling/swemer_v2/opencode.yaml
+- benchmarks/reward_profiling/swe_next/opencode.yaml
+- benchmarks/reward_profiling/scale_swe/opencode.yaml
- responses_api_models/vllm_model/configs/vllm_model.yaml
- benchmarks/nemotron_3.5_super/sandbox_utils.yaml
@@ -116,6 +121,26 @@ swebench_pro_opencode_sandboxed_agent:
responses_api_agents:
opencode_sandboxed_agent:
datasets: []
+swe_rebench_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets: []
+swemer_v1_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets: []
+swemer_v2_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets: []
+swe_next_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets: []
+scale_swe_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets: []
########################################
# END Nvidia-specific configs.
diff --git a/benchmarks/nemotron_3.5_super/eval_container_config_with_staged.yaml b/benchmarks/nemotron_3.5_super/eval_container_config_with_staged.yaml
index 615e14a2f8c..65e5a1d54df 100644
--- a/benchmarks/nemotron_3.5_super/eval_container_config_with_staged.yaml
+++ b/benchmarks/nemotron_3.5_super/eval_container_config_with_staged.yaml
@@ -50,4 +50,54 @@ swebench_pro_opencode_sandboxed_agent:
type: benchmark
jsonl_fpath: benchmarks/swebench/data/swebench_pro_benchmark.jsonl
prepare_script: benchmarks/swebench/pro/prepare.py
- num_repeats: 3
\ No newline at end of file
+ num_repeats: 3
+
+swe_rebench_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets:
+ - name: swe_rebench_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swe_rebench/data/swe_rebench_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swe_rebench/prepare.py
+ num_repeats: 8
+
+swemer_v1_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets:
+ - name: swemer_v1_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swemer_v1/data/swemer_v1_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swemer_v1/prepare.py
+ num_repeats: 8
+
+swemer_v2_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets:
+ - name: swemer_v2_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swemer_v2/data/swemer_v2_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swemer_v2/prepare.py
+ num_repeats: 8
+
+swe_next_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets:
+ - name: swe_next_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swe_next/data/swe_next_training_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swe_next/prepare.py
+ num_repeats: 8
+
+scale_swe_reward_profiling_opencode_sandboxed_agent:
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ datasets:
+ - name: scale_swe_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/scale_swe/data/scale_swe_training_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/scale_swe/prepare.py
+ num_repeats: 8
\ No newline at end of file
diff --git a/benchmarks/reward_profiling/scale_swe/opencode.yaml b/benchmarks/reward_profiling/scale_swe/opencode.yaml
new file mode 100644
index 00000000000..24a9bc8362a
--- /dev/null
+++ b/benchmarks/reward_profiling/scale_swe/opencode.yaml
@@ -0,0 +1,36 @@
+# Reward profiling: run scale_swe's training tasks through the opencode sandboxed agent (not
+# the golden patch) to collect real rollouts + rewards for a policy checkpoint, 8 repeats per
+# task. See resources_servers/scale_swe/configs/scale_swe.yaml for the base resources server.
+config_paths:
+- responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+- resources_servers/scale_swe/configs/scale_swe.yaml
+
+scale_swe_reward_profiling_resources_server:
+ _inherit_from: scale_swe_resources_server
+
+ resources_servers:
+ scale_swe:
+ allowed_agents: [opencode_sandboxed_agent]
+ evaluation_timeout: 1200
+
+scale_swe_reward_profiling_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: scale_swe_reward_profiling_resources_server
+ # 1hr harness execution budget per rollout, not the eval-server's own evaluation_timeout.
+ sandbox_timeout: 3600
+ # Keep every full turn in the rollout for reward profiling -- no OpenCode-side
+ # auto-summarization/pruning of earlier context.
+ opencode_config:
+ compaction:
+ auto: false
+ prune: false
+ datasets:
+ - name: scale_swe_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/scale_swe/data/scale_swe_training_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/scale_swe/prepare.py
+ num_repeats: 8
diff --git a/benchmarks/reward_profiling/scale_swe/prepare.py b/benchmarks/reward_profiling/scale_swe/prepare.py
new file mode 100644
index 00000000000..19f1d54fbf0
--- /dev/null
+++ b/benchmarks/reward_profiling/scale_swe/prepare.py
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""No-op prepare script for reward profiling: the jsonl this benchmark points at is already
+fully prepared (responses_create_params with the prompt template applied). `gym eval prepare`
+still requires an importable `prepare_script` module with a `prepare()` function, so this exists
+to satisfy that -- it is never actually called when invoked with
+`+use_cached_prepared_benchmarks=true` (the standard invocation) and the jsonl already exists.
+"""
+
+from pathlib import Path
+
+
+OUTPUT_FPATH = (
+ Path(__file__).parent.parent.parent.parent
+ / "resources_servers"
+ / "scale_swe"
+ / "data"
+ / "scale_swe_training_with_prompt_template.jsonl"
+)
+
+
+def prepare() -> Path:
+ if not OUTPUT_FPATH.exists():
+ raise FileNotFoundError(
+ f"{OUTPUT_FPATH} does not exist. This benchmark expects a pre-built jsonl; there is "
+ "no generation logic here to build one."
+ )
+ return OUTPUT_FPATH
diff --git a/benchmarks/reward_profiling/swe_next/opencode.yaml b/benchmarks/reward_profiling/swe_next/opencode.yaml
new file mode 100644
index 00000000000..9ed7033dc6b
--- /dev/null
+++ b/benchmarks/reward_profiling/swe_next/opencode.yaml
@@ -0,0 +1,36 @@
+# Reward profiling: run swe_next's training tasks through the opencode sandboxed agent (not
+# the golden patch) to collect real rollouts + rewards for a policy checkpoint, 8 repeats per
+# task. See resources_servers/swe_next/configs/swe_next.yaml for the base resources server.
+config_paths:
+- responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+- resources_servers/swe_next/configs/swe_next.yaml
+
+swe_next_reward_profiling_resources_server:
+ _inherit_from: swe_next_resources_server
+
+ resources_servers:
+ swe_next:
+ allowed_agents: [opencode_sandboxed_agent]
+ evaluation_timeout: 1200
+
+swe_next_reward_profiling_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swe_next_reward_profiling_resources_server
+ # 1hr harness execution budget per rollout, not the eval-server's own evaluation_timeout.
+ sandbox_timeout: 3600
+ # Keep every full turn in the rollout for reward profiling -- no OpenCode-side
+ # auto-summarization/pruning of earlier context.
+ opencode_config:
+ compaction:
+ auto: false
+ prune: false
+ datasets:
+ - name: swe_next_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swe_next/data/swe_next_training_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swe_next/prepare.py
+ num_repeats: 8
diff --git a/benchmarks/reward_profiling/swe_next/prepare.py b/benchmarks/reward_profiling/swe_next/prepare.py
new file mode 100644
index 00000000000..f3acbc98674
--- /dev/null
+++ b/benchmarks/reward_profiling/swe_next/prepare.py
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""No-op prepare script for reward profiling: the jsonl this benchmark points at is already
+fully prepared (responses_create_params with the prompt template applied). `gym eval prepare`
+still requires an importable `prepare_script` module with a `prepare()` function, so this exists
+to satisfy that -- it is never actually called when invoked with
+`+use_cached_prepared_benchmarks=true` (the standard invocation) and the jsonl already exists.
+"""
+
+from pathlib import Path
+
+
+OUTPUT_FPATH = (
+ Path(__file__).parent.parent.parent.parent
+ / "resources_servers"
+ / "swe_next"
+ / "data"
+ / "swe_next_training_with_prompt_template.jsonl"
+)
+
+
+def prepare() -> Path:
+ if not OUTPUT_FPATH.exists():
+ raise FileNotFoundError(
+ f"{OUTPUT_FPATH} does not exist. This benchmark expects a pre-built jsonl; there is "
+ "no generation logic here to build one."
+ )
+ return OUTPUT_FPATH
diff --git a/benchmarks/reward_profiling/swe_rebench/opencode.yaml b/benchmarks/reward_profiling/swe_rebench/opencode.yaml
new file mode 100644
index 00000000000..35fb9d8ae2e
--- /dev/null
+++ b/benchmarks/reward_profiling/swe_rebench/opencode.yaml
@@ -0,0 +1,36 @@
+# Reward profiling: run swe_rebench's training tasks through the opencode sandboxed agent (not
+# the golden patch) to collect real rollouts + rewards for a policy checkpoint, 8 repeats per
+# task. See resources_servers/swe_rebench/configs/swe_rebench.yaml for the base resources server.
+config_paths:
+- responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+- resources_servers/swe_rebench/configs/swe_rebench.yaml
+
+swe_rebench_reward_profiling_resources_server:
+ _inherit_from: swe_rebench_resources_server
+
+ resources_servers:
+ swe_rebench:
+ allowed_agents: [opencode_sandboxed_agent]
+ evaluation_timeout: 1200
+
+swe_rebench_reward_profiling_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swe_rebench_reward_profiling_resources_server
+ # 1hr harness execution budget per rollout, not the eval-server's own evaluation_timeout.
+ sandbox_timeout: 3600
+ # Keep every full turn in the rollout for reward profiling -- no OpenCode-side
+ # auto-summarization/pruning of earlier context.
+ opencode_config:
+ compaction:
+ auto: false
+ prune: false
+ datasets:
+ - name: swe_rebench_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swe_rebench/data/swe_rebench_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swe_rebench/prepare.py
+ num_repeats: 8
diff --git a/benchmarks/reward_profiling/swe_rebench/prepare.py b/benchmarks/reward_profiling/swe_rebench/prepare.py
new file mode 100644
index 00000000000..2244182c7d6
--- /dev/null
+++ b/benchmarks/reward_profiling/swe_rebench/prepare.py
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""No-op prepare script for reward profiling: the jsonl this benchmark points at is already
+fully prepared (responses_create_params with the prompt template applied). `gym eval prepare`
+still requires an importable `prepare_script` module with a `prepare()` function, so this exists
+to satisfy that -- it is never actually called when invoked with
+`+use_cached_prepared_benchmarks=true` (the standard invocation) and the jsonl already exists.
+"""
+
+from pathlib import Path
+
+
+OUTPUT_FPATH = (
+ Path(__file__).parent.parent.parent.parent
+ / "resources_servers"
+ / "swe_rebench"
+ / "data"
+ / "swe_rebench_training_enriched_with_prompt_template.jsonl"
+)
+
+
+def prepare() -> Path:
+ if not OUTPUT_FPATH.exists():
+ raise FileNotFoundError(
+ f"{OUTPUT_FPATH} does not exist. This benchmark expects a pre-built jsonl; there is "
+ "no generation logic here to build one."
+ )
+ return OUTPUT_FPATH
diff --git a/benchmarks/reward_profiling/swemer_v1/opencode.yaml b/benchmarks/reward_profiling/swemer_v1/opencode.yaml
new file mode 100644
index 00000000000..640ad916a3b
--- /dev/null
+++ b/benchmarks/reward_profiling/swemer_v1/opencode.yaml
@@ -0,0 +1,36 @@
+# Reward profiling: run swemer_v1's training tasks through the opencode sandboxed agent (not
+# the golden patch) to collect real rollouts + rewards for a policy checkpoint, 8 repeats per
+# task. See resources_servers/swemer_v1/configs/swemer_v1.yaml for the base resources server.
+config_paths:
+- responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+- resources_servers/swemer_v1/configs/swemer_v1.yaml
+
+swemer_v1_reward_profiling_resources_server:
+ _inherit_from: swemer_v1_resources_server
+
+ resources_servers:
+ swemer_v1:
+ allowed_agents: [opencode_sandboxed_agent]
+ evaluation_timeout: 1200
+
+swemer_v1_reward_profiling_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swemer_v1_reward_profiling_resources_server
+ # 1hr harness execution budget per rollout, not the eval-server's own evaluation_timeout.
+ sandbox_timeout: 3600
+ # Keep every full turn in the rollout for reward profiling -- no OpenCode-side
+ # auto-summarization/pruning of earlier context.
+ opencode_config:
+ compaction:
+ auto: false
+ prune: false
+ datasets:
+ - name: swemer_v1_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swemer_v1/data/swemer_v1_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swemer_v1/prepare.py
+ num_repeats: 8
diff --git a/benchmarks/reward_profiling/swemer_v1/prepare.py b/benchmarks/reward_profiling/swemer_v1/prepare.py
new file mode 100644
index 00000000000..702afe7cc0b
--- /dev/null
+++ b/benchmarks/reward_profiling/swemer_v1/prepare.py
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""No-op prepare script for reward profiling: the jsonl this benchmark points at is already
+fully prepared (responses_create_params with the prompt template applied). `gym eval prepare`
+still requires an importable `prepare_script` module with a `prepare()` function, so this exists
+to satisfy that -- it is never actually called when invoked with
+`+use_cached_prepared_benchmarks=true` (the standard invocation) and the jsonl already exists.
+"""
+
+from pathlib import Path
+
+
+OUTPUT_FPATH = (
+ Path(__file__).parent.parent.parent.parent
+ / "resources_servers"
+ / "swemer_v1"
+ / "data"
+ / "swemer_v1_training_enriched_with_prompt_template.jsonl"
+)
+
+
+def prepare() -> Path:
+ if not OUTPUT_FPATH.exists():
+ raise FileNotFoundError(
+ f"{OUTPUT_FPATH} does not exist. This benchmark expects a pre-built jsonl; there is "
+ "no generation logic here to build one."
+ )
+ return OUTPUT_FPATH
diff --git a/benchmarks/reward_profiling/swemer_v2/opencode.yaml b/benchmarks/reward_profiling/swemer_v2/opencode.yaml
new file mode 100644
index 00000000000..ef1c1172aa6
--- /dev/null
+++ b/benchmarks/reward_profiling/swemer_v2/opencode.yaml
@@ -0,0 +1,36 @@
+# Reward profiling: run swemer_v2's training tasks through the opencode sandboxed agent (not
+# the golden patch) to collect real rollouts + rewards for a policy checkpoint, 8 repeats per
+# task. See resources_servers/swemer_v2/configs/swemer_v2.yaml for the base resources server.
+config_paths:
+- responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+- resources_servers/swemer_v2/configs/swemer_v2.yaml
+
+swemer_v2_reward_profiling_resources_server:
+ _inherit_from: swemer_v2_resources_server
+
+ resources_servers:
+ swemer_v2:
+ allowed_agents: [opencode_sandboxed_agent]
+ evaluation_timeout: 1200
+
+swemer_v2_reward_profiling_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swemer_v2_reward_profiling_resources_server
+ # 1hr harness execution budget per rollout, not the eval-server's own evaluation_timeout.
+ sandbox_timeout: 3600
+ # Keep every full turn in the rollout for reward profiling -- no OpenCode-side
+ # auto-summarization/pruning of earlier context.
+ opencode_config:
+ compaction:
+ auto: false
+ prune: false
+ datasets:
+ - name: swemer_v2_reward_profiling
+ type: benchmark
+ jsonl_fpath: resources_servers/swemer_v2/data/swemer_v2_training_enriched_with_prompt_template.jsonl
+ prepare_script: benchmarks/reward_profiling/swemer_v2/prepare.py
+ num_repeats: 8
diff --git a/benchmarks/reward_profiling/swemer_v2/prepare.py b/benchmarks/reward_profiling/swemer_v2/prepare.py
new file mode 100644
index 00000000000..2ac76481c5f
--- /dev/null
+++ b/benchmarks/reward_profiling/swemer_v2/prepare.py
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""No-op prepare script for reward profiling: the jsonl this benchmark points at is already
+fully prepared (responses_create_params with the prompt template applied). `gym eval prepare`
+still requires an importable `prepare_script` module with a `prepare()` function, so this exists
+to satisfy that -- it is never actually called when invoked with
+`+use_cached_prepared_benchmarks=true` (the standard invocation) and the jsonl already exists.
+"""
+
+from pathlib import Path
+
+
+OUTPUT_FPATH = (
+ Path(__file__).parent.parent.parent.parent
+ / "resources_servers"
+ / "swemer_v2"
+ / "data"
+ / "swemer_v2_training_enriched_with_prompt_template.jsonl"
+)
+
+
+def prepare() -> Path:
+ if not OUTPUT_FPATH.exists():
+ raise FileNotFoundError(
+ f"{OUTPUT_FPATH} does not exist. This benchmark expects a pre-built jsonl; there is "
+ "no generation logic here to build one."
+ )
+ return OUTPUT_FPATH
diff --git a/resources_servers/denovo_swe/.gitignore b/resources_servers/denovo_swe/.gitignore
new file mode 100644
index 00000000000..c39f6d3d27c
--- /dev/null
+++ b/resources_servers/denovo_swe/.gitignore
@@ -0,0 +1,2 @@
+# This is where verification logs are stored locally
+logs
diff --git a/resources_servers/denovo_swe/README.md b/resources_servers/denovo_swe/README.md
new file mode 100644
index 00000000000..214f4fe77b8
--- /dev/null
+++ b/resources_servers/denovo_swe/README.md
@@ -0,0 +1,58 @@
+# DeNovoSWE resources server
+
+Verification for [AweAI-Team/DeNovoSWE](https://huggingface.co/datasets/AweAI-Team/DeNovoSWE), a
+document-to-repository training dataset: each image ships a package's source plus a written spec,
+and the agent must regenerate the package from the spec alone.
+
+Unlike the other SWE servers, `seed_session` wipes the pre-existing source
+(`_denovoswe_clean.sh`) and re-injects the spec as `README.md` before the agent starts. There is no
+golden `patch`: the image's pre-existing source is the golden answer.
+
+Sandboxes come from `nemo_gym.sandbox`, so the same server runs on OpenSandbox or any other
+configured provider.
+
+## Grading
+
+Verification wipes the source again, re-injects the spec, applies the candidate patch, lays down the
+canonical test suite from `test_patch`, reinstalls the package, and grades with the per-file pytest
+evaluator in `_denovoswe_eval.py` (see `verification.py`).
+
+## Prepare the data
+
+`prepare_denovo_swe.py` only writes rows on `data/supported_instance_ids.txt` (3,076 instances whose
+golden source resolved in all three passes of a full-set golden-patch sweep).
+
+```bash
+DENOVO_SWE_LIMIT=200 python -m resources_servers.denovo_swe.prepare_denovo_swe
+```
+
+## Golden-patch validation
+
+Grades each task with the image's own source, which measures the dataset rather than a model.
+
+```bash
+gym env start \
+ --config resources_servers/denovo_swe/configs/denovo_swe.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+python resources_servers/denovo_swe/apply_golden_patch.py \
+ +training_jsonl=resources_servers/denovo_swe/data/denovo_swe_training.jsonl \
+ +output_jsonl=results/denovo_swe_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+```
+
+`aggregate_golden_patch.py` joins repeated passes into supported / flaky / broken / inconclusive
+buckets, and `diagnose_failures.py` separates infra faults from row failures.
+
+## Running an agent
+
+`configs/denovo_swe_opencode.yaml` wires the opencode sandboxed agent to
+`denovo_swe_resources_server`, pointed at `data/denovo_swe_training.jsonl`.
+
+```bash
+gym env start \
+ --config resources_servers/denovo_swe/configs/denovo_swe_opencode.yaml \
+ --config responses_api_models/vllm_model/configs/vllm_model.yaml
+```
+
+The DeNovoSWE dataset is licensed CC BY 4.0. This adapter is Apache-2.0.
diff --git a/resources_servers/denovo_swe/__init__.py b/resources_servers/denovo_swe/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/denovo_swe/_denovoswe_clean.sh b/resources_servers/denovo_swe/_denovoswe_clean.sh
new file mode 100755
index 00000000000..f7969d1b7c3
--- /dev/null
+++ b/resources_servers/denovo_swe/_denovoswe_clean.sh
@@ -0,0 +1,438 @@
+#!/usr/bin/env bash
+# clean.sh — Remove source code from a DeNovoSWE image while preserving
+# the installed environment and essential config files.
+#
+# Usage: bash clean.sh
+# e.g. bash clean.sh /workspace/pep8
+
+set -euo pipefail
+
+WORKDIR="${1:?Usage: bash clean.sh }"
+cd "$WORKDIR"
+
+# ── 0. Anti-peek setup — discover all Python interpreters + helpers ──────────
+# Multi-Python images (system Python + conda env + venvs) used to slip
+# through because the original ``pip uninstall`` only targeted whichever
+# ``pip`` happened to be on PATH. Now we run uninstall against EVERY
+# Python interpreter we can find, and follow up with physical
+# ``rm -rf`` of any site-packages / dist-packages residue, plus a wipe
+# of pip's wheel cache (otherwise the agent can
+# ``unzip ~/.cache/pip/wheels/*.whl`` to recover source).
+
+# Collect every python binary on PATH + standard install roots + conda
+# env bins. Deduped, only executable entries kept.
+_discover_pythons() {
+ {
+ compgen -c 2>/dev/null \
+ | grep -E '^python(2|3)?(\.[0-9]+)?$' \
+ | while read -r c; do command -v "$c" 2>/dev/null; done
+ ls /usr/bin/python* /usr/local/bin/python* 2>/dev/null
+ ls /opt/*/bin/python /opt/conda/envs/*/bin/python \
+ /opt/miniconda*/envs/*/bin/python 2>/dev/null
+ } 2>/dev/null | sort -u | while read -r p; do
+ # Filter out non-interpreter shims like ``python-config``,
+ # ``python3.7m-config``, ``python-argcomplete-*`` that ``ls
+ # /usr/bin/python*`` will pull in but cannot run ``-m pip``.
+ local base
+ base=$(basename "$p")
+ case "$base" in
+ python|python[0-9]|python[0-9].[0-9]|python[0-9].[0-9][0-9]|\
+ python[0-9]m|python[0-9].[0-9]m|python[0-9].[0-9][0-9]m)
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ [ -x "$p" ] || continue
+ # Verify it actually behaves like a Python interpreter — some
+ # ``python`` paths are setuptools entry-point shims that crash
+ # on ``-c "pass"``. ``timeout 5`` so a misbehaving shim
+ # (sitecustomize that pings a remote, etc.) doesn't stall
+ # the whole clean step.
+ timeout 5 "$p" -c "pass" >/dev/null 2>&1 || continue
+ echo "$p"
+ done
+ return 0
+}
+# ``|| true`` so we never blow up clean.sh on a multi-Python-discovery
+# hiccup; an empty ``_PYTHON_BINS`` is fine — the strategy-side bare
+# ``pip`` fallback still does the basic work.
+_PYTHON_BINS=$(_discover_pythons || true)
+
+# Generate name variants (handles dash/underscore/dot drift) used by
+# the purge helpers below. Echoes one variant per line.
+_name_variants() {
+ local n="$1"
+ [ -z "$n" ] && return
+ printf '%s\n%s\n%s\n%s\n%s\n' \
+ "$n" "${n//-/_}" "${n//_/-}" "${n//./_}" "${n//./-}" \
+ | sort -u
+}
+
+# Accumulator: every package name we successfully resolve via the
+# strategies below is appended here so the post-strategy purge pass
+# can target each. Set -u tolerates empty arrays from bash 4.4+.
+_RESOLVED_PKG_NAMES=()
+
+# ── 1. Uninstall locally-installed packages (editable or regular) ────────────
+# Try to find the package name from setup.py / pyproject.toml / setup.cfg
+_try_uninstall() {
+ local pkg_name="$1"
+ [ -z "$pkg_name" ] && return
+ # Track so the post-strategy purge functions can find residue
+ # (dist-info / __editable__ shims / apt-installed counterparts).
+ _RESOLVED_PKG_NAMES+=("$pkg_name")
+ # Uninstall from EVERY interpreter; agent peeking commonly targets
+ # an interpreter different from the one on PATH (e.g. conda env).
+ for py in $_PYTHON_BINS; do
+ "$py" -m pip uninstall -y "$pkg_name" 2>/dev/null || true
+ done
+ # Fall back to the bare ``pip`` for the (rare) case where no
+ # discovered interpreter has pip but ``pip`` itself exists.
+ pip uninstall -y "$pkg_name" 2>/dev/null || true
+}
+
+# Strategy A: parse package name from setup.py
+if [ -f setup.py ]; then
+ pkg=$(python3 -c "
+import ast, sys
+try:
+ with open('setup.py') as f:
+ tree = ast.parse(f.read())
+ for node in ast.walk(tree):
+ if isinstance(node, ast.Call) and hasattr(node, 'keywords'):
+ for kw in node.keywords:
+ if kw.arg == 'name' and isinstance(kw.value, ast.Constant):
+ print(kw.value.value)
+ sys.exit(0)
+except Exception:
+ pass
+" 2>/dev/null || true)
+ _try_uninstall "$pkg"
+fi
+
+# Strategy B: parse from pyproject.toml
+if [ -f pyproject.toml ]; then
+ pkg=$(python3 -c "
+import re, sys
+try:
+ with open('pyproject.toml') as f:
+ content = f.read()
+ m = re.search(r'^\s*name\s*=\s*[\"\\']([^\"\\']+)[\"\\']', content, re.MULTILINE)
+ if m:
+ print(m.group(1))
+except Exception:
+ pass
+" 2>/dev/null || true)
+ _try_uninstall "$pkg"
+fi
+
+# Strategy C: parse from setup.cfg
+if [ -f setup.cfg ]; then
+ pkg=$(python3 -c "
+import configparser, sys
+try:
+ c = configparser.ConfigParser()
+ c.read('setup.cfg')
+ print(c.get('metadata', 'name', fallback=''))
+except Exception:
+ pass
+" 2>/dev/null || true)
+ _try_uninstall "$pkg"
+fi
+
+# Strategy D: try uninstalling by directory name (common convention)
+dir_name=$(basename "$WORKDIR")
+_try_uninstall "$dir_name"
+
+# Strategy E: brute-force — find all .egg-link / .dist-info that point here
+for egg_link in $(find "$(python3 -c 'import site; print(site.getsitepackages()[0])' 2>/dev/null || echo /dev/null)" -name "*.egg-link" 2>/dev/null); do
+ if grep -q "$WORKDIR" "$egg_link" 2>/dev/null; then
+ pkg_name=$(basename "$egg_link" .egg-link)
+ _try_uninstall "$pkg_name"
+ fi
+done
+
+
+# ── 1.1. Anti-peek purge ────────────────────────────────────────────────────
+# Even after a successful ``pip uninstall``, a few residues commonly
+# survive:
+# * compiled extension dirs that pip skipped because they were not
+# listed in RECORD,
+# * ``__editable___*_finder.py`` + ``.pth`` shim left by recent
+# setuptools editable installs,
+# * dist-info / egg-info directories from concurrent installs of the
+# same package via different toolchains (poetry + pip + apt),
+# * the entire pip wheel cache at ``~/.cache/pip/wheels``, which an
+# agent could unzip to recover the source we just removed,
+# * apt-installed ``python3-`` Debian packages parked in
+# ``/usr/lib/python3/dist-packages`` — pip uninstall has no idea
+# these exist.
+#
+# Each helper is best-effort: failures are swallowed so a single
+# missing tool (no apt, read-only filesystem, etc.) doesn't take
+# clean.sh down with it.
+
+_purge_site_packages_traces() {
+ local pkg_name="$1"
+ [ -z "$pkg_name" ] && return
+ # All site-packages / dist-packages roots reachable from the
+ # common install prefixes. ``maxdepth 8`` covers conda envs,
+ # virtualenvs, system Python, /opt vendor installs.
+ # ``|| true`` is essential — ``find`` returns non-zero whenever
+ # it hits a permission-denied or vanished-during-walk directory,
+ # which under ``set -euo pipefail`` would kill clean.sh.
+ local sp_dirs
+ sp_dirs=$(find /usr /opt /root /home -maxdepth 8 -type d \
+ \( -name 'site-packages' -o -name 'dist-packages' \) \
+ 2>/dev/null | sort -u || true)
+ local variants
+ variants=$(_name_variants "$pkg_name" || true)
+ for sp in $sp_dirs; do
+ for v in $variants; do
+ # Package directory itself (covers the common case).
+ [ -d "$sp/$v" ] && rm -rf "$sp/$v"
+ # Metadata directories from any version + toolchain.
+ find "$sp" -maxdepth 1 \( \
+ -name "${v}-*.dist-info" -o -name "${v}-*.egg-info" \
+ \) -exec rm -rf {} + 2>/dev/null || true
+ # Editable install shims (``__editable___*.py``,
+ # ``.pth``, ``.egg-link``).
+ find "$sp" -maxdepth 1 \( \
+ -name "__editable__*${v}*" \
+ -o -name "${v}*.pth" \
+ -o -name "${v}.egg-link" \
+ \) -delete 2>/dev/null || true
+ done
+ done
+}
+
+_purge_pip_caches() {
+ # Standard locations. ``${HOME:-/root}`` because ``set -u`` would
+ # otherwise crash on images with HOME unset (rare but seen).
+ rm -rf "${HOME:-/root}/.cache/pip" /root/.cache/pip /tmp/pip-* \
+ 2>/dev/null || true
+ for h in /home/*; do
+ [ -d "$h/.cache/pip" ] && rm -rf "$h/.cache/pip" 2>/dev/null
+ done
+ # Some pip configs put the cache elsewhere — ``pip cache purge``
+ # respects per-config locations. Run for every interpreter so
+ # multi-Python images get their caches scrubbed too.
+ for py in $_PYTHON_BINS; do
+ "$py" -m pip cache purge 2>/dev/null || true
+ done
+}
+
+# Purge leftover build-temp / install-trace directories under /tmp.
+# Real bite: SWIG-generated wrappers from a previous ``pip install``
+# survive in ``/tmp/tmp.build-temp_./api/python3/.py``
+# and let an agent ``cat`` the entire Python binding — observed
+# inflating ``biojppm_rapidyaml_pr551`` from ~0 to 1.0. scikit-build,
+# cmake-build-extension, maturin, cffi, cython, pep517 all leak
+# similarly-named scratch dirs. ``find -maxdepth 1`` keeps the wipe
+# bounded to /tmp top-level so we don't recurse into the agent's own
+# /tmp// working tree.
+_purge_build_temp_dirs() {
+ find /tmp -maxdepth 1 \( \
+ -name "*.build-temp*" \
+ -o -name "tmp*.build-temp*" \
+ -o -name "*.build-lib*" \
+ -o -name "*scikit_build*" \
+ -o -name "pip-build-env-*" \
+ -o -name "pip-wheel-*" \
+ -o -name "pip-req-build-*" \
+ -o -name "pip-modern-metadata-*" \
+ -o -name "pip-install-*" \
+ -o -name "*cmake_build_extension*" \
+ -o -name "tmp*.egg-info" \
+ -o -name "tmp*.dist-info" \
+ -o -name "tmp*_build_dir*" \
+ -o -name "tmp*-cython-*" \
+ -o -name "tmp*-maturin-*" \
+ \) -exec rm -rf {} + 2>/dev/null || true
+ # Also nuke ``.so`` / ``.pyd`` / ``.dylib`` extension binaries +
+ # generated ``.py`` wrappers sitting directly under /tmp or in
+ # tmp* dirs at /tmp root — those are the actual source-leak files
+ # rather than the wrapper dir itself.
+ find /tmp -maxdepth 3 -type f \( \
+ -name "*.so" -o -name "*.pyd" -o -name "*.dylib" \
+ -o -name "_*.so" \
+ \) -path "/tmp/tmp*" -delete 2>/dev/null || true
+}
+
+_purge_apt_python_packages() {
+ local pkg_name="$1"
+ [ -z "$pkg_name" ] && return
+ command -v dpkg-query >/dev/null 2>&1 || return
+ command -v apt-get >/dev/null 2>&1 || return
+ local variants
+ variants=$(_name_variants "$pkg_name" || true)
+ for v in $variants; do
+ # Match exact ``python3-`` (or ``python-``) and the
+ # ``python3--anything`` extension/subpackages. Skip if
+ # there's no match. ``grep`` returning exit 1 (no matches)
+ # is the common case — wrap with ``|| true`` so pipefail
+ # doesn't kill the script.
+ { dpkg-query -W -f='${binary:Package}\n' 2>/dev/null \
+ | grep -E "^python3?-${v}(\$|-)" \
+ || true; } \
+ | while read -r p; do
+ # ``--no-auto-remove`` avoids pulling unrelated
+ # transitively-installed deps along.
+ apt-get remove -y --no-auto-remove "$p" 2>/dev/null || true
+ done
+ done
+}
+
+# Run the purges for every resolved package name (strategies A-E may
+# resolve different aliases for the same dist, e.g. ``foo-bar`` vs
+# ``foo_bar`` — purge handles each independently).
+if [ "${#_RESOLVED_PKG_NAMES[@]}" -gt 0 ]; then
+ # Dedupe before iterating to keep the log noise down.
+ while read -r _n; do
+ [ -z "$_n" ] && continue
+ _purge_site_packages_traces "$_n"
+ _purge_apt_python_packages "$_n"
+ done < <(printf '%s\n' "${_RESOLVED_PKG_NAMES[@]}" | sort -u)
+fi
+# Cache wipe is global — only run once.
+_purge_pip_caches
+# Same for /tmp build-temp leaks.
+_purge_build_temp_dirs
+
+# ── 1.5. Remove ALL test directories and test files ────────────────────────
+# Test directories are removed entirely (including fixtures, conftest, etc.)
+# These will be restored from test_patch during evaluation.
+# Case-insensitive: matches test, Test, TEST, Tests, TESTS, etc.
+find "$WORKDIR" -type d | while read -r d; do
+ dirname_lower=$(basename "$d" | tr '[:upper:]' '[:lower:]')
+ case "$dirname_lower" in
+ test|tests|testsuite|testsuites|testing|test_suite)
+ rm -rf "$d"
+ ;;
+ esac
+done
+
+# Remove individual test files outside test directories (case-insensitive)
+find "$WORKDIR" -type f \( \
+ -iname "test_*.py" -o -iname "*_test.py" -o -iname "*_tests.py" \
+ -o -iname "conftest.py" \
+\) -delete 2>/dev/null || true
+
+# Remove test config files (will be restored by test_patch if needed)
+find "$WORKDIR" -type f -name ".coveragerc" -delete 2>/dev/null || true
+
+# ── 2. Remove source code files (*.py, *.pyx, *.pxd, etc.) ──────────────────
+# Preserve essential config/build files
+_PRESERVE_PATTERN='(pyproject\.toml|setup\.py|setup\.cfg|requirements.*\.txt|MANIFEST\.in|Dockerfile|\.python-version|Makefile|poetry\.lock|Pipfile\.lock|pdm\.lock|uv\.lock|\.gitignore|\.gitattributes|LICENSE.*|LICENCE.*)$'
+
+# Remove all Python source files except preserved ones
+find "$WORKDIR" -type f \( \
+ -name "*.py" -o -name "*.pyx" -o -name "*.pxd" -o -name "*.pyi" \
+\) | grep -vE "$_PRESERVE_PATTERN" | while read -r f; do
+ rm -f "$f"
+done
+
+# ── 3. Remove caches, build artifacts, and generated files ───────────────────
+find "$WORKDIR" -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".mypy_cache" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".ruff_cache" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".tox" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".nox" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "build" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "dist" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "htmlcov" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".ipynb_checkpoints" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".hypothesis" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".venv" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "venv" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".direnv" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".vscode" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name ".idea" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "node_modules" -exec rm -rf {} + 2>/dev/null || true
+
+# Source-leak channels not covered by the cache-cleanup above.
+# Even though step 2 deleted all *.py/*.pyx/*.pxd/*.pyi sources, these
+# parallel channels carry the same information:
+# * ``.eggs/`` holds full source of any easy_install-style package.
+# * ``vendor`` / ``vendored`` / ``third_party`` / ``contrib`` hold
+# upstream snapshots of the project being rebuilt.
+# * ``target`` / ``crates`` / ``.cargo`` + ``*.rs`` / ``*.rlib`` /
+# ``*.rmeta`` — Rust source backs the Python wrapper for PyO3
+# projects; *.py was already wiped but the Rust impl leaked.
+# * ``*.snap`` / ``*.expect`` / ``__snapshots__/`` — pytest-insta /
+# insta golden outputs pin removed code's behaviour exactly.
+# * ``examples`` / ``samples`` / ``demo`` — frequently import + call
+# the symbols the agent is asked to rebuild.
+# Note: Cargo.toml is preserved on purpose; see denovo_swe_subdoc/partial_clean.sh.
+find "$WORKDIR" -type d \( -name ".eggs" -o -name "vendor" -o -name "vendored" \
+ -o -name "third_party" -o -name "contrib" \) -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d \( -name "target" -o -name "crates" -o -name ".cargo" \) \
+ -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type f \( -name "Cargo.lock" \
+ -o -name "*.rs" -o -name "*.rlib" -o -name "*.rmeta" \
+ -o -name "*.snap" -o -name "*.expect" \) -delete 2>/dev/null || true
+find "$WORKDIR" -type d \( -name "examples" -o -name "example" \
+ -o -name "samples" -o -name "sample" -o -name "event_samples" \
+ -o -name "demo" -o -name "demos" -o -name "aws_doc_sdk_examples_tools" \) \
+ -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -type d -name "__snapshots__" -exec rm -rf {} + 2>/dev/null || true
+
+# Remove specific file patterns
+find "$WORKDIR" -type f \( \
+ -name "*.pyc" -o -name "*.pyo" \
+ -o -name "*.so" -o -name "*.pyd" -o -name "*.dll" -o -name "*.dylib" \
+ -o -name "*.egg" -o -name "*.whl" \
+ -o -name ".coverage" -o -name "coverage.xml" -o -name "coverage.json" \
+ -o -name ".DS_Store" \
+ -o -name "*.min.js" -o -name "*.min.css" \
+ -o -name ".env" -o -name ".envrc" \
+\) -delete 2>/dev/null || true
+
+# Remove JSON files (may contain cached data / source maps)
+find "$WORKDIR" -type f -name "*.json" -delete 2>/dev/null || true
+
+# Remove generated docs HTML
+find "$WORKDIR" -type d -name "_build" -exec rm -rf {} + 2>/dev/null || true
+find "$WORKDIR" -path "*/docs/_build" -type d -exec rm -rf {} + 2>/dev/null || true
+
+# Remove log / trace / artifact files
+find "$WORKDIR" -type f \( -name "*.log" -o -name "*.trace" \) -delete 2>/dev/null || true
+
+# Remove Jupyter notebooks (may contain source code)
+find "$WORKDIR" -type f -name "*.ipynb" -delete 2>/dev/null || true
+
+# Remove RST/MD doc files (may contain code examples that leak implementation)
+find "$WORKDIR" -type f \( -name "*.rst" -o -name "*.md" \) -delete 2>/dev/null || true
+
+# Remove YAML/TOML files that aren't config (e.g., CI configs may have code snippets)
+# But preserve essential ones
+find "$WORKDIR" -type f \( -name "*.yml" -o -name "*.yaml" \) | while read -r f; do
+ basename_f=$(basename "$f")
+ if [[ "$basename_f" =~ ^(pyproject\.toml|tox\.ini|pytest\.ini|setup\.cfg)$ ]]; then
+ continue
+ fi
+ rm -f "$f"
+done
+
+# ── 4. Clean git history to prevent source code recovery ─────────────────────
+# Completely rebuild .git to guarantee no old objects survive.
+# `git gc --prune=now` is not 100% reliable — loose objects or packfiles
+# can retain old source code. Reinitializing is the only safe way.
+cd "$WORKDIR"
+if [ -d .git ]; then
+ rm -rf .git
+
+ git init 2>/dev/null
+ git config user.email "clean@denovoswe.local"
+ git config user.name "DeNovoSWE-Clean"
+ git add -A 2>/dev/null || true
+ git commit --allow-empty -m "cleaned workspace" 2>/dev/null || true
+fi
+
+# ── 5. Remove empty directories left behind ──────────────────────────────────
+find "$WORKDIR" -type d -empty -delete 2>/dev/null || true
+
+echo "DeNovoSWE clean completed for $WORKDIR"
diff --git a/resources_servers/denovo_swe/_denovoswe_eval.py b/resources_servers/denovo_swe/_denovoswe_eval.py
new file mode 100644
index 00000000000..f39acfe7c83
--- /dev/null
+++ b/resources_servers/denovo_swe/_denovoswe_eval.py
@@ -0,0 +1,349 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""DeNovoSWE in-container evaluator.
+
+Runs ``pytest`` per-file on the ``passed_ptp`` test IDs and computes a pass
+rate, then writes a JSON report + a 0/1 reward file. Designed to be bind-
+mounted into the eval Apptainer container by :class:`DeNovoSWEDatasetProcessor`
+and invoked AFTER:
+ 1. The repo has been checked out at ``parent_commit``,
+ 2. (Optional, agent path only) the agent's patch has been applied,
+ 3. All pre-existing test files have been removed,
+ 4. ``test_patch`` has been applied,
+ 5. The package has been reinstalled with ``pip install -e .``.
+
+Reads (paths are bind-mounted by the harness):
+ /root/denovoswe_meta.json {"workdir": "...", "passed_ptp": [...], "failed_ptp": [...]}
+
+Writes:
+ /trajectories_mount/eval_results/report.json
+ /trajectories_mount/eval_results/reward.txt (\"1\" iff every ``passed_ptp`` test passes; else \"0\")
+
+The Python stdlib is intentionally the only dependency — eval images vary
+widely in what's installed beyond pytest/pip.
+"""
+
+from __future__ import annotations
+
+import json
+import os
+import re
+import subprocess
+import sys
+import time
+from collections import defaultdict
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Tuple
+
+
+META_PATH = Path("/root/denovoswe_meta.json")
+REPORT_DIR = Path("/trajectories_mount/eval_results")
+PER_FILE_TIMEOUT = int(os.environ.get("DENOVOSWE_PER_FILE_TIMEOUT", "600"))
+
+
+def _load_meta() -> Dict[str, Any]:
+ return json.loads(META_PATH.read_text())
+
+
+def _group_by_file(test_ids: List[str]) -> Dict[str, List[str]]:
+ groups: Dict[str, List[str]] = defaultdict(list)
+ for tid in test_ids:
+ f = tid.split("::", 1)[0]
+ groups[f].append(tid)
+ return dict(groups)
+
+
+# Match pytest's final summary line. Tolerates both the verbose form
+# ("===== 5 passed, 1 warning in 0.16s =====") and the quiet -q form
+# ("19 passed in 0.16s") — the latter omits the ``=`` brackets entirely.
+_SUMMARY_LINE = re.compile(
+ r"^\s*=*\s*((?:\d+\s+(?:passed|failed|error|errors|skipped|xfailed|xpassed|deselected|warning|warnings)(?:\s*,\s*)?)+)\s+in\s+[\d.]+s\s*=*\s*$",
+ re.MULTILINE,
+)
+_NUM_KIND = re.compile(r"(\d+)\s+(passed|failed|error|errors|skipped|xfailed|xpassed|deselected)")
+
+
+def _parse_pytest_counts(output: str) -> Dict[str, int]:
+ """Best-effort parse of ``passed`` / ``failed`` / ``errors`` from pytest's
+ final summary line. Returns zeros if no summary was found (e.g. crash).
+ """
+ counts = {"passed": 0, "failed": 0, "errors": 0, "skipped": 0}
+ matches = list(_SUMMARY_LINE.finditer(output))
+ if not matches:
+ return counts
+ summary = matches[-1].group(1)
+ for m in _NUM_KIND.finditer(summary):
+ n = int(m.group(1))
+ kind = m.group(2)
+ if kind == "errors":
+ kind = "error"
+ if kind == "error":
+ counts["errors"] = counts.get("errors", 0) + n
+ elif kind in ("passed", "failed", "skipped"):
+ counts[kind] = counts.get(kind, 0) + n
+ return counts
+
+
+def _collect_test_ids(workdir: str, filepath: str, timeout: int = 120) -> Optional[List[str]]:
+ """Pre-flight collection: ``pytest --collect-only -q ``.
+
+ Returns the list of collected test ids on success, or None if collection
+ itself fails (import error in the file, syntax error, etc.). Mirrors
+ AweAgent's ``collect_test_ids`` mitigation: a single stale id in
+ ``passed_ptp`` (parametrize label drift, hypothesis seed change, etc.)
+ aborts the ENTIRE batch with exit 4 / "no tests ran" — so we collect
+ first, intersect with passed_ptp, then run only the resolvable ids.
+ """
+ cmd = [
+ sys.executable,
+ "-m",
+ "pytest",
+ "--collect-only",
+ "-q",
+ "--no-header",
+ "-p",
+ "no:cacheprovider",
+ "-o",
+ "addopts=",
+ filepath,
+ ]
+ try:
+ proc = subprocess.run(
+ cmd,
+ cwd=workdir,
+ capture_output=True,
+ text=True,
+ timeout=timeout,
+ errors="replace",
+ )
+ except (subprocess.TimeoutExpired, Exception):
+ return None
+ if proc.returncode not in (0, 5):
+ # Exit 5 = "no tests collected" (treated as no-op, not failure).
+ # Non-zero / non-5 means collection itself crashed (import error etc.) —
+ # signal that by returning None so the caller scores the whole file as
+ # errors (matching what pytest would do when run with the raw ids).
+ return None
+ # Permissive id extraction: pytest's ``-q --collect-only`` typically emits
+ # ``::`` one per line, but format varies by version / plugin
+ # set. Accept ANY line that contains ``::`` and isn't a summary/warning;
+ # the caller intersects with ``passed_ptp`` anyway, so false positives are
+ # harmlessly filtered out — false NEGATIVES (valid ids we drop) would
+ # cause v1→v2 regressions, so err permissive.
+ ids: List[str] = []
+ for raw_line in (proc.stdout or "").splitlines():
+ line = raw_line.strip()
+ if not line or "::" not in line:
+ continue
+ low = line.lower()
+ if low.startswith(("warning", "error", "deprecation")):
+ continue
+ if "collected" in low and " in " in low and low.rstrip().endswith("s"):
+ continue
+ ids.append(line)
+ return ids
+
+
+def _run_pytest(workdir: str, test_ids: List[str], timeout: int) -> Tuple[Dict[str, int], str, int]:
+ """Run ``python -m pytest `` in ``workdir``; return (counts, output, exit)."""
+ cmd = [
+ sys.executable,
+ "-m",
+ "pytest",
+ "--tb=short",
+ "-q",
+ "--no-header",
+ "-p",
+ "no:cacheprovider",
+ "-o",
+ "addopts=", # neutralize any project-level coverage / xdist opts
+ *test_ids,
+ ]
+ try:
+ proc = subprocess.run(
+ cmd,
+ cwd=workdir,
+ capture_output=True,
+ text=True,
+ timeout=timeout,
+ errors="replace",
+ )
+ out = (proc.stdout or "") + ("\n--- stderr ---\n" + proc.stderr if proc.stderr else "")
+ return _parse_pytest_counts(out), out, proc.returncode
+ except subprocess.TimeoutExpired as e:
+ out = (e.stdout or "") + (e.stderr or "") + f"\n[TIMEOUT after {timeout}s]"
+ if isinstance(out, bytes):
+ out = out.decode(errors="replace")
+ return {"passed": 0, "failed": 0, "errors": len(test_ids), "skipped": 0}, out, -1
+ except Exception as e:
+ return {"passed": 0, "failed": 0, "errors": len(test_ids), "skipped": 0}, f"[crash] {e!r}", -2
+
+
+def _head_tail(text: str, head: int = 4000, tail: int = 4000) -> str:
+ if len(text) <= head + tail + 64:
+ return text
+ return text[:head] + f"\n... [trimmed {len(text) - head - tail} bytes] ...\n" + text[-tail:]
+
+
+def main() -> int:
+ start = time.monotonic()
+ meta = _load_meta()
+ workdir = str(meta.get("workdir") or "")
+ passed_ptp: List[str] = list(meta.get("passed_ptp") or [])
+ total_expected = len(passed_ptp)
+ REPORT_DIR.mkdir(parents=True, exist_ok=True)
+
+ if not workdir or not Path(workdir).is_dir():
+ report = {
+ "_test_completed": True,
+ "error": f"workdir missing: {workdir!r}",
+ "pass_rate": 0.0,
+ "passed": 0,
+ "failed": 0,
+ "errors": total_expected,
+ "total_expected": total_expected,
+ "reward": "0",
+ "duration": time.monotonic() - start,
+ }
+ (REPORT_DIR / "report.json").write_text(json.dumps(report, indent=2))
+ (REPORT_DIR / "reward.txt").write_text("0")
+ print("DeNovoSWE eval: workdir missing → reward=0", flush=True)
+ return 0
+
+ if not passed_ptp:
+ report = {
+ "_test_completed": True,
+ "error": "no passed_ptp test ids",
+ "pass_rate": 0.0,
+ "passed": 0,
+ "failed": 0,
+ "errors": 0,
+ "total_expected": 0,
+ "reward": "0",
+ "duration": time.monotonic() - start,
+ }
+ (REPORT_DIR / "report.json").write_text(json.dumps(report, indent=2))
+ (REPORT_DIR / "reward.txt").write_text("0")
+ print("DeNovoSWE eval: empty passed_ptp → reward=0", flush=True)
+ return 0
+
+ groups = _group_by_file(passed_ptp)
+ per_file: Dict[str, Any] = {}
+ total_passed = total_failed = total_errors = 0
+ for fpath, ids in groups.items():
+ # Pre-flight collection: enumerate the ids pytest can ACTUALLY resolve
+ # right now, intersect with passed_ptp, run only the intersection.
+ # Mirrors AweAgent's mitigation against parametrize-label drift /
+ # hypothesis-seed shifts that would otherwise abort the entire batch
+ # (one stale id → exit 4 / "no tests ran" → all-or-nothing zero).
+ collected = _collect_test_ids(workdir, fpath, timeout=120)
+ if collected is None:
+ # Collection itself failed (import error in the test file, syntax
+ # error, missing dep). Fall through with the original id list so
+ # the ensuing pytest run surfaces the diagnostic in its output;
+ # every id in the file counts as an error.
+ runnable = list(ids)
+ missing: List[str] = []
+ collected_n = 0
+ else:
+ collected_set = set(collected)
+ runnable = [t for t in ids if t in collected_set]
+ missing = [t for t in ids if t not in collected_set]
+ collected_n = len(collected)
+ # Safety net: if collect-only parsing yielded ZERO intersection
+ # despite returning ids (parser failure / format drift), fall
+ # back to running the original id list — same behaviour as if
+ # collect-only had failed outright. Prevents a parsing bug from
+ # silently scoring every test as missing.
+ if not runnable and collected_n > 0 and ids:
+ runnable = list(ids)
+ missing = []
+
+ if runnable:
+ counts, output, exit_code = _run_pytest(workdir, runnable, PER_FILE_TIMEOUT)
+ else:
+ counts = {"passed": 0, "failed": 0, "errors": 0, "skipped": 0}
+ output = (
+ f"[no runnable test ids for {fpath}; "
+ f"expected={len(ids)} collected={collected_n} missing={len(missing)}]"
+ )
+ exit_code = 5 # treat as "nothing to run"
+
+ # Cap "passed" at expected count to prevent parametrize-expansion
+ # inflation (a single id can collect to N parametrizations).
+ passed = min(counts.get("passed", 0), len(ids))
+ failed = counts.get("failed", 0)
+ errors = counts.get("errors", 0)
+ # Account missing ids individually as errors (don't crash the batch).
+ errors += len(missing)
+ # If pytest non-zero AND no signal parsed, score remaining runnable
+ # ids as errors (e.g. SIGSEGV mid-batch).
+ if (
+ exit_code not in (0, 5)
+ and (failed + counts.get("errors", 0)) == 0
+ and counts.get("passed", 0) == 0
+ and runnable
+ ):
+ errors += len(runnable)
+ total_passed += passed
+ total_failed += failed
+ total_errors += errors
+ per_file[fpath] = {
+ "expected": len(ids),
+ "passed": passed,
+ "failed": failed,
+ "errors": errors,
+ "exit": exit_code,
+ "collected": collected_n,
+ "missing_ids": len(missing),
+ "collection_failed": collected is None,
+ "output_tail": _head_tail(output, head=2000, tail=2000),
+ }
+
+ # Account for any expected-but-not-counted ids (collection skew etc.).
+ accounted = total_passed + total_failed + total_errors
+ if accounted < total_expected:
+ total_errors += total_expected - accounted
+
+ all_passed = (total_passed == total_expected) and total_failed == 0 and total_errors == 0
+ pass_rate = (total_passed / total_expected) if total_expected else 0.0
+ reward = "1" if all_passed else "0"
+
+ report = {
+ "_test_completed": True,
+ "passed": total_passed,
+ "failed": total_failed,
+ "errors": total_errors,
+ "total_expected": total_expected,
+ "pass_rate": pass_rate,
+ "accepted": all_passed,
+ "reward": reward,
+ "expected_coverage_percent": meta.get("expected_coverage_percent"),
+ "per_file": per_file,
+ "duration": time.monotonic() - start,
+ }
+ (REPORT_DIR / "report.json").write_text(json.dumps(report, indent=2))
+ (REPORT_DIR / "reward.txt").write_text(reward)
+ print(
+ f"DeNovoSWE eval: passed={total_passed}/{total_expected} "
+ f"failed={total_failed} errors={total_errors} pass_rate={pass_rate:.3f} reward={reward}",
+ flush=True,
+ )
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/resources_servers/denovo_swe/aggregate_golden_patch.py b/resources_servers/denovo_swe/aggregate_golden_patch.py
new file mode 100644
index 00000000000..f6922679147
--- /dev/null
+++ b/resources_servers/denovo_swe/aggregate_golden_patch.py
@@ -0,0 +1,136 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Join repeated golden-patch passes into the set of rows that are actually usable.
+
+A row is SUPPORTED when its golden patch resolved in every pass. That is the point of
+repeating: a row that resolves only sometimes has a nondeterministic test, and its reward is
+noise whether it is used for evaluation or for training.
+
+The one distinction that matters, and the reason this is not a single boolean: a pass can fail
+to produce a verdict at all (image pull, timeout, provider fault). That is evidence about the
+infrastructure, not about the row. Collapsing the two would discard good tasks for an unrelated
+hiccup, so incomplete passes are counted separately and those rows are reported as needing more
+evidence rather than as broken.
+
+ python resources_servers/denovo_swe/aggregate_golden_patch.py \
+ +runs=results/denovo_swe_golden_patch_full \
+ +output_jsonl=results/denovo_swe_supported.jsonl
+"""
+
+import json
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+from nemo_gym.global_config import get_global_config_dict
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def classify(observations: list[dict[str, Any]], expected_passes: int) -> str:
+ """Bucket one row from its per-pass observations."""
+ completed = [o for o in observations if o.get("evaluation_completed")]
+ resolved = sum(1 for o in completed if o.get("resolved"))
+
+ if len(completed) < expected_passes:
+ # Not enough verdicts to judge the row. Distinguished from a genuine failure so an
+ # image-pull fault does not quietly delete a usable task.
+ return "inconclusive"
+ if resolved == len(completed):
+ return "supported"
+ if resolved == 0:
+ return "broken"
+ return "flaky"
+
+
+def main() -> None:
+ config = get_global_config_dict()
+ runs_dir = Path(config["runs"])
+ output_fpath = Path(config.get("output_jsonl") or "results/denovo_swe_supported.jsonl")
+
+ pass_files = sorted(p for p in runs_dir.glob("*.jsonl") if p.is_file())
+ if not pass_files:
+ raise SystemExit(f"no pass jsonl files under {runs_dir}")
+
+ by_instance: dict[str, list[dict[str, Any]]] = defaultdict(list)
+ language: dict[str, str] = {}
+ for pass_file in pass_files:
+ for row in _rows(pass_file):
+ instance_id = row.get("instance_id")
+ if not instance_id or instance_id == "?":
+ continue
+ by_instance[instance_id].append(row)
+ if row.get("language"):
+ language[instance_id] = row["language"]
+
+ expected = len(pass_files)
+ buckets: Counter[str] = Counter()
+ per_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ with output_fpath.open("w", encoding="utf-8") as out:
+ for instance_id, observations in sorted(by_instance.items()):
+ verdict = classify(observations, expected)
+ buckets[verdict] += 1
+ per_language[language.get(instance_id, "unknown")][verdict] += 1
+ out.write(
+ json.dumps(
+ {
+ "instance_id": instance_id,
+ "language": language.get(instance_id, ""),
+ "verdict": verdict,
+ "passes_observed": len(observations),
+ "passes_completed": sum(1 for o in observations if o.get("evaluation_completed")),
+ "passes_resolved": sum(1 for o in observations if o.get("resolved")),
+ "expected_passes": expected,
+ }
+ )
+ + "\n"
+ )
+
+ total = sum(buckets.values())
+ print(f"golden-patch aggregation over {total} row(s) from {expected} pass(es)\n")
+ for verdict, description in (
+ ("supported", "resolved in every pass - usable"),
+ ("flaky", "resolved in some passes only - nondeterministic test"),
+ ("broken", "never resolved - golden patch does not work"),
+ ("inconclusive", "too few verdicts - re-run before judging"),
+ ):
+ count = buckets.get(verdict, 0)
+ print(f" {verdict:<13} {count:>6} ({100 * count / max(total, 1):5.1f}%) {description}")
+
+ print("\n by language (supported / total):")
+ for lang, counts in sorted(per_language.items(), key=lambda kv: -sum(kv[1].values())):
+ rows_total = sum(counts.values())
+ supported = counts.get("supported", 0)
+ print(
+ f" {lang:<10} {supported:>5} / {rows_total:<6} ({100 * supported / rows_total:5.1f}%)"
+ f" flaky={counts.get('flaky', 0)} broken={counts.get('broken', 0)}"
+ f" inconclusive={counts.get('inconclusive', 0)}"
+ )
+ print(f"\nper-row verdicts: {output_fpath}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/resources_servers/denovo_swe/app.py b/resources_servers/denovo_swe/app.py
new file mode 100644
index 00000000000..ab7a0e9aa8e
--- /dev/null
+++ b/resources_servers/denovo_swe/app.py
@@ -0,0 +1,372 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Resources server for AweAI-Team/DeNovoSWE.
+
+A "document-to-repository" benchmark: each image ships the original package source at
+``base_commit`` plus a ``document`` (a written spec/README). The agent must regenerate the
+package from scratch given only the document -- so unlike every other SWE resources server here,
+``seed_session`` wipes the pre-existing source (``_denovoswe_clean.sh``) and re-injects the
+document as ``README.md`` BEFORE the agent starts, and there is no golden ``patch`` to apply for
+golden-patch validation: the image's pre-existing source IS the golden answer.
+
+Verification: wipe again (fresh sandbox, non-golden only) + re-inject the document to match the
+baseline the agent's patch was diffed against, apply the candidate patch, lay the canonical test
+suite from ``test_patch``, reinstall the package, and grade via
+``responses_api_agents/swe_agents/_denovoswe_eval.py`` (a verbatim local copy of the
+already-validated per-file pytest evaluator -- see ``verification.py``).
+
+Set ``is_verifying_golden_patch: true`` to grade the image's own pre-existing source instead of an
+agent's, the dataset-health check: a row whose golden source does not resolve is a broken row.
+"""
+
+import shlex
+import sys
+from pathlib import Path
+from time import time
+from traceback import format_exc
+from typing import Any
+
+from fastapi import Request
+from pydantic import BaseModel, ConfigDict
+
+from nemo_gym.base_resources_server import (
+ BaseResourcesServerConfig,
+ BaseSeedSessionRequest,
+ BaseSeedSessionResponse,
+ BaseVerifyRequest,
+ BaseVerifyResponse,
+ SimpleResourcesServer,
+)
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.sandbox import AsyncSandbox, SandboxResources, SandboxSpec
+from nemo_gym.sandbox.config import resolve_provider_config, resolve_provider_metadata
+from nemo_gym.sandbox.utils import cpu_cap_env
+from nemo_gym.server_utils import SESSION_ID_KEY, is_nemo_gym_fastapi_entrypoint
+from resources_servers.denovo_swe.verification import (
+ DOCUMENT_PATH,
+ VerificationInputs,
+ VerificationResult,
+ drop_patch_sections,
+ run_verification,
+ seed_prep_script,
+ verification_files,
+)
+from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup
+
+
+class DeNovoSWEResourcesServerConfig(BaseResourcesServerConfig):
+ is_verifying_golden_patch: bool = False
+ evaluation_timeout: int | None = 1800
+ # A verdict-less run is retried on a fresh sandbox: an image pull or a flaky provider start
+ # is not evidence about the patch.
+ inconclusive_verification_retries: int = 1
+ apply_anti_cheating: bool = True
+ sandbox_provider: str
+ sandbox_config: dict[str, Any]
+
+
+class DeNovoSWEInstanceRequest(BaseModel):
+ """One row of AweAI-Team/DeNovoSWE."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str
+ repo: str = ""
+ github_url: str = ""
+ language: str = "python"
+ workdir: str
+ image_ref: str
+ base_commit: str
+ patch: str = ""
+ test_patch: str = ""
+ document: str = ""
+ problem_statement: str = ""
+ pypi_name: str = ""
+ import_names: list[str] = []
+ passed_ptp: list[str] = []
+ failed_ptp: list[str] = []
+ test_binary_archive_b64: str = ""
+ expected_coverage_percent: float = 0.0
+
+
+class DeNovoSWESeedSessionRequest(DeNovoSWEInstanceRequest, BaseSeedSessionRequest):
+ sandbox_spec: dict[str, Any] | None = None
+
+
+class DeNovoSWESeedSessionResponse(BaseSeedSessionResponse):
+ sandbox_handle: str
+
+
+class DeNovoSWEVerifyRequest(DeNovoSWEInstanceRequest, BaseVerifyRequest):
+ pass
+
+
+class DeNovoSWEVerifyResponse(BaseVerifyResponse):
+ evaluation_completed: bool
+ resolved: bool
+ patch_applied: bool
+ instance_id: str
+ language: str
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None
+ eval_sandbox_start_time_taken: float
+ patch_verification_time_taken: float
+
+
+class DeNovoSWEResourcesServer(SimpleResourcesServer):
+ config: DeNovoSWEResourcesServerConfig
+
+ def model_post_init(self, context: Any, /) -> None:
+ super().model_post_init(context)
+ self._session_id_to_sandbox: dict[str, AsyncSandbox] = {}
+ self._session_id_to_pristine_untracked: dict[str, frozenset[str]] = {}
+ self._session_id_to_base_commit: dict[str, str] = {}
+
+ def _inputs(self, body: DeNovoSWEInstanceRequest, patch: str) -> VerificationInputs:
+ return VerificationInputs(
+ instance_id=body.instance_id,
+ workdir=body.workdir,
+ base_commit=body.base_commit,
+ patch=patch,
+ test_patch=body.test_patch,
+ document=body.document or body.problem_statement,
+ pypi_name=body.pypi_name,
+ passed_ptp=list(body.passed_ptp),
+ failed_ptp=list(body.failed_ptp),
+ test_binary_archive_b64=body.test_binary_archive_b64,
+ expected_coverage_percent=body.expected_coverage_percent,
+ )
+
+ async def _create_sandbox(
+ self, body: DeNovoSWEInstanceRequest, files: dict[str, str] | None = None
+ ) -> AsyncSandbox:
+ global_config_dict = get_global_config_dict()
+ provider_config = resolve_provider_config(self.config.sandbox_provider, global_config_dict)
+ provider_metadata = resolve_provider_metadata(self.config.sandbox_provider, global_config_dict)
+
+ sandbox_resources = SandboxResources.from_mapping(self.config.sandbox_config.get("resources", {}))
+ env = dict(self.config.sandbox_config.get("env", {}))
+ if self.config.sandbox_config.get("derive_cpu_env", True):
+ env = cpu_cap_env(sandbox_resources.cpu) | env
+
+ spec = SandboxSpec(
+ # The row names its own image; there is no repository template to apply.
+ image=body.image_ref,
+ ttl_s=self.config.sandbox_config.get("ttl_s"),
+ ready_timeout_s=self.config.sandbox_config.get("ready_timeout_s"),
+ workdir=body.workdir,
+ env=env,
+ files=files or {},
+ metadata=provider_metadata
+ | self.config.sandbox_config.get("metadata", {})
+ | {
+ "nemo_gym_agent": self.config.name,
+ "instance_id": body.instance_id[:63],
+ },
+ resources=sandbox_resources,
+ provider_options=self.config.sandbox_config.get("provider_options", {}),
+ )
+ sandbox = AsyncSandbox(provider_config)
+ await sandbox.start(spec)
+ return sandbox
+
+ async def _stop_sandbox(self, sandbox: AsyncSandbox | None) -> None:
+ if sandbox is None:
+ return
+ try:
+ await sandbox.stop()
+ except Exception:
+ print("Failed to stop DeNovoSWE sandbox", format_exc(), file=sys.stderr)
+
+ async def _ensure_git_repo(self, sandbox: AsyncSandbox, workdir: str) -> None:
+ """Some images ship with no git history at all. Init one fresh, but only when missing, so
+ ``seed_session`` always has a real base commit to diff the agent's changes against without
+ disturbing the git history everywhere else.
+ """
+ precheck = await sandbox.exec(f"git -C {shlex.quote(workdir)} rev-parse --git-dir")
+ if precheck.return_code == 0:
+ return
+ result = await sandbox.exec(
+ f"cd {shlex.quote(workdir)} && git init -q "
+ f"&& git config user.email nemo-gym@nvidia.com && git config user.name nemo-gym "
+ f"&& git add -A && git commit -q -m 'nemo_gym: initial snapshot' --allow-empty"
+ )
+ if result.return_code != 0:
+ print(f"Failed to init git repo at {workdir}: {result.stdout}\n{result.stderr}", file=sys.stderr)
+
+ async def _pristine_untracked_files(self, sandbox: AsyncSandbox, workdir: str) -> frozenset[str]:
+ """List of files ``workdir`` holds untracked before the agent touches it."""
+ try:
+ result = await sandbox.exec(f"git -C {shlex.quote(workdir)} ls-files --others --exclude-standard")
+ if result.return_code != 0:
+ print(f"Failed to list pristine untracked files: {result.stderr}", file=sys.stderr)
+ return frozenset()
+ return frozenset(line.strip() for line in (result.stdout or "").splitlines() if line.strip())
+ except Exception:
+ print("Failed to list pristine untracked files", format_exc(), file=sys.stderr)
+ return frozenset()
+
+ async def _extract_model_patch(self, session_id: str, workdir: str, base_commit: str) -> str:
+ """Diff the agent's own sandbox against the post-wipe/README-amend commit, then stop it.
+
+ ``git add -N`` (intent-to-add) is what makes brand-new files show up in ``git diff`` too,
+ not just edits to already-tracked files.
+ """
+ original_sandbox = self._session_id_to_sandbox.pop(session_id)
+ pristine_untracked = self._session_id_to_pristine_untracked.pop(session_id, frozenset())
+ try:
+ result = await original_sandbox.exec(
+ f"git -C {shlex.quote(workdir)} add -N . "
+ f"&& git -C {shlex.quote(workdir)} --no-pager diff {shlex.quote(base_commit)}"
+ )
+ if result.return_code != 0:
+ raise RuntimeError(result.stderr or "git diff failed")
+ return drop_patch_sections(result.stdout or "", pristine_untracked)
+ finally:
+ await self._stop_sandbox(original_sandbox)
+
+ async def seed_session(self, request: Request, body: DeNovoSWESeedSessionRequest) -> DeNovoSWESeedSessionResponse:
+ """Start the instance's image, then wipe the pre-existing source and re-inject the spec
+ as README.md -- without this the agent could just read the implementation it is supposed
+ to regenerate (see module docstring).
+ """
+ session_id = request.session[SESSION_ID_KEY]
+ await self._stop_sandbox(self._session_id_to_sandbox.pop(session_id, None))
+ self._session_id_to_pristine_untracked.pop(session_id, None)
+ self._session_id_to_base_commit.pop(session_id, None)
+
+ document = body.document or body.problem_statement
+ sandbox = await self._create_sandbox(
+ body, files={"/tmp/nemo_gym_seed_prep.sh": seed_prep_script(body.workdir), DOCUMENT_PATH: document}
+ )
+ prep_result = await sandbox.exec("bash /tmp/nemo_gym_seed_prep.sh")
+ if prep_result.return_code != 0:
+ print(
+ f"[denovo_swe] {body.instance_id}: seed prep (wipe+README) failed during seed_session "
+ f"(non-fatal, matching build_eval_script's own tolerance): {prep_result.stderr}",
+ file=sys.stderr,
+ )
+
+ await self._ensure_git_repo(sandbox, body.workdir)
+ if self.config.apply_anti_cheating:
+ await apply_anti_cheat_setup(sandbox, body.workdir, body.instance_id, "denovo_swe")
+
+ head_result = await sandbox.exec(f"git -C {shlex.quote(body.workdir)} rev-parse HEAD")
+ self._session_id_to_base_commit[session_id] = (head_result.stdout or "").strip()
+ self._session_id_to_pristine_untracked[session_id] = await self._pristine_untracked_files(
+ sandbox, body.workdir
+ )
+ self._session_id_to_sandbox[session_id] = sandbox
+ return DeNovoSWESeedSessionResponse(sandbox_handle=str(sandbox._handle.sandbox_id))
+
+ async def verify(self, request: Request, body: DeNovoSWEVerifyRequest) -> DeNovoSWEVerifyResponse:
+ session_id = request.session[SESSION_ID_KEY]
+ is_golden = self.config.is_verifying_golden_patch
+ extraction_error = None
+ if is_golden:
+ patch = body.patch
+ else:
+ base_commit = self._session_id_to_base_commit.pop(session_id, "")
+ if not base_commit:
+ patch = ""
+ extraction_error = "Failed to extract model patch: no base commit recorded (seed_session did not run for this session)"
+ else:
+ try:
+ patch = await self._extract_model_patch(session_id, body.workdir, base_commit)
+ except Exception as exc:
+ patch = ""
+ extraction_error = f"Failed to extract model patch: {exc}"
+
+ inputs = self._inputs(body, patch)
+ log_dir = Path(__file__).parent / "logs" / body.instance_id
+
+ files = verification_files(inputs, is_golden)
+ attempts = 1 + max(self.config.inconclusive_verification_retries, 0)
+ start_time_taken = 0.0
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error="unattempted",
+ )
+ for attempt in range(1, attempts + 1):
+ sandbox: AsyncSandbox | None = None
+ started = time()
+ try:
+ sandbox = await self._create_sandbox(body, files=files)
+ start_time_taken = time() - started
+ verification_started = time()
+ result = await run_verification(
+ sandbox=sandbox,
+ inputs=inputs,
+ is_golden=is_golden,
+ timeout_s=self.config.evaluation_timeout,
+ log_dir=log_dir,
+ )
+ verification_time_taken = time() - verification_started
+ except Exception as exc:
+ start_time_taken = time() - started
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error=f"Verification failed: {exc}",
+ )
+ finally:
+ await self._stop_sandbox(sandbox)
+ if result.completed:
+ break
+ if attempt < attempts:
+ print(
+ f"[denovo_swe] {body.instance_id}: inconclusive ({result.error}); "
+ f"retrying on a fresh sandbox ({attempt}/{attempts - 1})",
+ flush=True,
+ )
+
+ return DeNovoSWEVerifyResponse.model_validate(
+ body.model_dump()
+ | {
+ # An unresolved-but-completed run is a real 0. An incomplete run is also 0, but
+ # evaluation_completed distinguishes them so a broken row is not read as a hard task.
+ "reward": 1.0 if result.resolved else 0.0,
+ "evaluation_completed": result.completed,
+ "resolved": result.resolved,
+ "patch_applied": result.patch_applied,
+ "instance_id": body.instance_id,
+ "language": body.language,
+ "test_results": result.test_results,
+ "test_output": result.test_output[-100_000:],
+ "error": extraction_error or result.error,
+ "eval_sandbox_start_time_taken": start_time_taken,
+ "patch_verification_time_taken": verification_time_taken,
+ }
+ )
+
+
+if __name__ == "__main__":
+ DeNovoSWEResourcesServer.run_webserver()
+elif is_nemo_gym_fastapi_entrypoint(__file__):
+ # Required whenever num_workers > 1. Multi-worker uvicorn re-imports this entrypoint BY PATH
+ # in each forked child and expects a module-level `app`; without it every child exits, and
+ # uvicorn responds by stopping the parent. The server then never binds, so the symptom is not
+ # an import error but a flood of connection failures from clients talking to a dead port.
+ app = DeNovoSWEResourcesServer.run_webserver() # noqa: F401
diff --git a/resources_servers/denovo_swe/apply_golden_patch.py b/resources_servers/denovo_swe/apply_golden_patch.py
new file mode 100644
index 00000000000..074866061ab
--- /dev/null
+++ b/resources_servers/denovo_swe/apply_golden_patch.py
@@ -0,0 +1,160 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Grade every task with the dataset's own golden patch.
+
+This measures the dataset, not a model. A row whose golden patch does not make FAIL_TO_PASS
+pass is unusable for evaluation or training, so this is the check to run before trusting any
+score from DeNovoSWE.
+
+ gym env start --config resources_servers/denovo_swe/configs/denovo_swe.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+ python resources_servers/denovo_swe/apply_golden_patch.py \
+ +training_jsonl=resources_servers/denovo_swe/data/denovo_swe_training.jsonl \
+ +output_jsonl=results/denovo_swe_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+"""
+
+import asyncio
+import json
+from collections import Counter
+from pathlib import Path
+
+from tqdm.auto import tqdm
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+SERVER_NAME = "denovo_swe_golden_patch_resources_server"
+
+
+def _stream_examples(path: Path, limit: int):
+ """Yield rows lazily rather than materialising the whole training file."""
+ with open(path, encoding="utf-8") as training:
+ for index, line in enumerate(training):
+ if limit and index >= limit:
+ return
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ limit = int(config.get("limit") or 0)
+ concurrency = int(config.get("concurrency") or 16)
+ training_fpath = Path(config["training_jsonl"])
+ output_fpath = Path(config.get("output_jsonl") or "results/denovo_swe_golden_patch.jsonl")
+
+ total = sum(1 for _ in _stream_examples(training_fpath, limit))
+ client = ServerClient.load_from_global_config()
+
+ # Bounded: the queue holds at most one row per worker, so resident rows track concurrency
+ # rather than dataset size.
+ queue: asyncio.Queue = asyncio.Queue(maxsize=concurrency)
+ resolved = 0
+ incomplete = 0
+ by_framework: Counter[str] = Counter()
+ resolved_by_framework: Counter[str] = Counter()
+ finished = 0
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ progress = tqdm(total=total, desc="golden patch")
+
+ with output_fpath.open("w", encoding="utf-8") as output:
+
+ async def worker() -> None:
+ nonlocal resolved, incomplete, finished
+ while True:
+ example = await queue.get()
+ if example is None:
+ queue.task_done()
+ return
+ try:
+ payload = example | {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+ try:
+ response = await client.post(server_name=SERVER_NAME, url_path="/verify", json=payload)
+ result = await response.json()
+ except Exception as exc:
+ # One unreachable task must not abandon the sweep; record it and carry on.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "test_framework": example.get("test_framework", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"request failed: {exc}",
+ }
+ if not isinstance(result, dict):
+ # Gym middleware returns repr(exc) as a bare JSON string when a handler
+ # raises, so a server-side fault arrives as a str.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "test_framework": example.get("test_framework", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"server returned a non-object response: {str(result)[:300]}",
+ }
+
+ framework = str(result.get("test_framework") or example.get("test_framework") or "unknown")
+ by_framework[framework] += 1
+ if result.get("resolved"):
+ resolved += 1
+ resolved_by_framework[framework] += 1
+ if not result.get("evaluation_completed", False):
+ incomplete += 1
+ output.write(json.dumps(result) + "\n")
+ finished += 1
+ if finished % 50 == 0:
+ output.flush() # a multi-hour run must leave usable rows if it is cut short
+ progress.update(1)
+ progress.set_description(
+ f"resolved {resolved}/{finished} ({100 * resolved / max(finished, 1):.1f}%) "
+ f"incomplete={incomplete}"
+ )
+ finally:
+ queue.task_done()
+
+ workers = [asyncio.create_task(worker()) for _ in range(concurrency)]
+ for example in _stream_examples(training_fpath, limit):
+ await queue.put(example)
+ for _ in workers:
+ await queue.put(None)
+ await asyncio.gather(*workers)
+
+ progress.close()
+ print(f"\ngolden-patch validation over {total} task(s)")
+ print(f" resolved: {resolved}/{total} ({100 * resolved / max(total, 1):.1f}%)")
+ print(f" incomplete: {incomplete}/{total} (no verdict: image pull, timeout, or setup failure)")
+ print("\n by framework (resolved / total):")
+ for framework, count in by_framework.most_common():
+ got = resolved_by_framework[framework]
+ print(f" {framework:<10} {got:>5} / {count:<6} ({100 * got / count:5.1f}%)")
+ print(f"\nper-task rows: {output_fpath}")
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/denovo_swe/client.py b/resources_servers/denovo_swe/client.py
new file mode 100644
index 00000000000..5b71a0bc5d8
--- /dev/null
+++ b/resources_servers/denovo_swe/client.py
@@ -0,0 +1,52 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Verify a single DeNovoSWE row, for a quick smoke test of the server."""
+
+import asyncio
+import json
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ with open(config["training_jsonl"], encoding="utf-8") as training:
+ example = json.loads(next(training))
+ example |= {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+
+ client = ServerClient.load_from_global_config()
+ result = await client.post(
+ server_name=config.get("resources_server_name", "denovo_swe_golden_patch_resources_server"),
+ url_path="/verify",
+ json=example,
+ )
+ print(json.dumps(await result.json(), indent=4))
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/denovo_swe/configs/denovo_swe.yaml b/resources_servers/denovo_swe/configs/denovo_swe.yaml
new file mode 100644
index 00000000000..af35af6bd8f
--- /dev/null
+++ b/resources_servers/denovo_swe/configs/denovo_swe.yaml
@@ -0,0 +1,65 @@
+# Resources server for AweAI-Team/DeNovoSWE.
+#
+# A "document-to-repository" benchmark: every row ships its own prebuilt image
+# (docker.io/aweaiteam/denovoswe:) containing the original package source at
+# base_commit plus a document (README/spec) the agent must regenerate the package from. There is
+# no golden model-style patch -- the image's pre-existing source at base_commit IS the golden
+# answer -- so golden-patch validation grades that source directly (patch: ""). See verification.py.
+denovo_swe_resources_server:
+ resources_servers:
+ denovo_swe:
+ allowed_agents: [opencode_sandboxed_agent]
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ # pip install -e . + a per-file pytest sweep over passed_ptp, not a build -- similar shape
+ # to Scale-SWE's Python-only sizing.
+ evaluation_timeout: 1800
+ is_verifying_golden_patch: false
+ apply_anti_cheating: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: denovo-swe
+
+# Golden-patch validation: grade the image's own pre-existing source instead of an agent's. A row
+# whose golden source does not resolve is a broken row, and scoring an agent against it measures
+# noise. Run it with resources_servers/denovo_swe/apply_golden_patch.py.
+denovo_swe_golden_patch_resources_server:
+ resources_servers:
+ denovo_swe:
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ evaluation_timeout: 1800
+ is_verifying_golden_patch: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: denovo-swe-golden-patch
diff --git a/resources_servers/denovo_swe/configs/denovo_swe_example.yaml b/resources_servers/denovo_swe/configs/denovo_swe_example.yaml
new file mode 100644
index 00000000000..9ab8c173637
--- /dev/null
+++ b/resources_servers/denovo_swe/configs/denovo_swe_example.yaml
@@ -0,0 +1,25 @@
+# denovo_swe's CI "example" data-validation config -- separate from denovo_swe.yaml so starting
+# the base/golden-patch servers for golden-patch validation never needs to pull in an agent+model
+# config (mirrors the *_opencode.yaml split, same reasoning).
+config_paths:
+ - resources_servers/denovo_swe/configs/denovo_swe.yaml
+
+# CI's "example" data-validation gate (gym env test +should_validate_data=true): grades the
+# image's own golden source for 5 rows via a plain simple_agent (not opencode_sandboxed_agent --
+# this only needs a real verify() round-trip to exercise data/example.jsonl's shape, not an agent
+# that can actually solve the task). See resources_servers/swebench_pro/configs/swebench_pro.yaml
+# for the same pattern.
+denovo_swe_example_agent:
+ responses_api_agents:
+ simple_agent:
+ entrypoint: app.py
+ resources_server:
+ type: resources_servers
+ name: denovo_swe_golden_patch_resources_server
+ model_server:
+ type: responses_api_models
+ name: policy_model
+ datasets:
+ - name: example
+ type: example
+ jsonl_fpath: resources_servers/denovo_swe/data/example.jsonl
diff --git a/resources_servers/denovo_swe/configs/denovo_swe_opencode.yaml b/resources_servers/denovo_swe/configs/denovo_swe_opencode.yaml
new file mode 100644
index 00000000000..dc7e39a9281
--- /dev/null
+++ b/resources_servers/denovo_swe/configs/denovo_swe_opencode.yaml
@@ -0,0 +1,32 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Wires the opencode sandboxed agent to denovo_swe_resources_server for a training run --
+# `denovo_swe.yaml` alone only defines the resources server, which is enough for golden-patch
+# validation (apply_golden_patch.py talks to it directly, no agent involved) but not enough to
+# actually run an agent against the dataset. This is a separate file, not folded into
+# denovo_swe.yaml, so golden-patch validation keeps working without pulling in the agent's (much
+# larger) opencode/sandbox config.
+#
+# This is training data (data/denovo_swe_training.jsonl, only the already-supported instances --
+# see the README), not a fixed eval benchmark.
+#
+# gym env start --config resources_servers/denovo_swe/configs/denovo_swe_opencode.yaml
+
+config_paths:
+ - responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+ - resources_servers/denovo_swe/configs/denovo_swe.yaml
+
+denovo_swe_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: denovo_swe_resources_server
+ datasets:
+ - name: denovo_swe
+ type: train
+ jsonl_fpath: resources_servers/denovo_swe/data/denovo_swe_training.jsonl
+ num_repeats: 1
+ license: Creative Commons Attribution 4.0 International
diff --git a/resources_servers/denovo_swe/data/.gitignore b/resources_servers/denovo_swe/data/.gitignore
new file mode 100644
index 00000000000..cc2f90e89fb
--- /dev/null
+++ b/resources_servers/denovo_swe/data/.gitignore
@@ -0,0 +1,5 @@
+# Training JSONL embeds document/test content from the Hub dataset -- large, regenerate with
+# prepare_denovo_swe.py rather than committing.
+*.jsonl
+!example.jsonl
+!example_rollouts.jsonl
diff --git a/resources_servers/denovo_swe/data/example.jsonl b/resources_servers/denovo_swe/data/example.jsonl
new file mode 100644
index 00000000000..d159ce6e597
--- /dev/null
+++ b/resources_servers/denovo_swe/data/example.jsonl
@@ -0,0 +1,5 @@
+{"instance_id": "nkantar_keysort_pr-1", "repo": "keysort", "github_url": "https://github.com/nkantar/keysort", "language": "python", "workdir": "/workspace/keysort", "image_ref": "docker.io/aweaiteam/denovoswe:nkantar_keysort_pr-1", "base_commit": "HEAD", "patch": "", "test_patch": "diff --git a/README.rst b/README.rst\nnew file mode 100644\nindex 0000000..e6e88f2\n--- /dev/null\n+++ b/README.rst\n@@ -0,0 +1,82 @@\n+Keysort: Sorting Lists of Dictionaries\n+========================================================\n+\n+**Keysort** is small utility for sorting lists of dictionaries by dictionary keys and lists of objects by attributes.\n+\n+\n+Examples\n+--------\n+\n+Sorting dictionaries by keys:\n+\n+.. code-block:: python\n+\n+ >>> from keysort import keysort\n+ >>>\n+ >>> my_list = [{'code': 'beta', 'number': 3},\n+ {'code': 'delta', 'number': 2},\n+ {'code': 'alpha', 'number': 0},\n+ {'code': 'beta', 'number': 2},\n+ {'code': 'charlie', 'number': 1}]\n+ >>>\n+ >>> keysort(my_list, ['code', 'number'])\n+ [{'code': 'alpha', 'number': 0},\n+ {'code': 'beta', 'number': 2},\n+ {'code': 'beta', 'number': 3},\n+ {'code': 'charlie', 'number': 1},\n+ {'code': 'delta', 'number': 2}]\n+ >>>\n+ >>> keysort(my_list, ['number', 'code'])\n+ [{'code': 'alpha', 'number': 0},\n+ {'code': 'charlie', 'number': 1},\n+ {'code': 'beta', 'number': 2},\n+ {'code': 'delta', 'number': 2},\n+ {'code': 'beta', 'number': 3}]\n+\n+Sorting objects by attributes:\n+\n+.. code-block:: python\n+\n+ >>> from dataclasses import dataclass\n+ >>> from keysort import attrsort\n+ >>>\n+ >>> @dataclass\n+ ... class MyObj:\n+ ... code: str\n+ ... number: int\n+ ...\n+ >>> my_list = [MyObj(code='beta', number=3),\n+ ... MyObj(code='delta', number=2),\n+ ... MyObj(code='alpha', number=0),\n+ ... MyObj(code='beta', number=2),\n+ ... MyObj(code='charlie', number=1)]\n+ >>>\n+ >>> attrsort(my_list, ['code', 'number'])\n+ [MyObj(code='alpha', number=0),\n+ MyObj(code='beta', number=2),\n+ MyObj(code='beta', number=3),\n+ MyObj(code='charlie', number=1),\n+ MyObj(code='delta', number=2)]\n+ >>>\n+ >>> attrsort(my_list, ['number', 'code'])\n+ [MyObj(code='alpha', number=0),\n+ MyObj(code='charlie', number=1),\n+ MyObj(code='beta', number=2),\n+ MyObj(code='delta', number=2),\n+ MyObj(code='beta', number=3)]\n+\n+\n+Install\n+-------\n+\n+.. code-block:: shell\n+\n+ pip install keysort\n+\n+\n+Contributing\n+------------\n+\n+Contributions of all sorts are welcome, be they bug reports, patches, or even just feedback. Creating a `new issue `_ or `pull request `_ is probably the best way to get started.\n+\n+Please note that this project is released with a `Contributor Code of Conduct `_. By participating in this project you agree to abide by its terms.\ndiff --git a/tests/__init__.py b/tests/__init__.py\nnew file mode 100644\nindex 0000000..106a422\n--- /dev/null\n+++ b/tests/__init__.py\n@@ -0,0 +1 @@\n+\"\"\"Tests for all of Keysort.\"\"\"\ndiff --git a/tests/test_attrsort.py b/tests/test_attrsort.py\nnew file mode 100644\nindex 0000000..266ef99\n--- /dev/null\n+++ b/tests/test_attrsort.py\n@@ -0,0 +1,53 @@\n+from dataclasses import dataclass\n+\n+from keysort import attrsort\n+\n+\n+@dataclass\n+class MyObj:\n+ col1: str\n+ col2: str\n+ col3: str\n+\n+\n+SORTED_LIST = [\n+ MyObj(col1=\"a\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"a\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"a\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"a\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"b\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"b\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"b\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"b\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"c\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"c\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"c\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"c\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"d\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"d\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"d\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"d\", col2=\"2\", col3=\"B\"),\n+]\n+\n+UNSORTED_LIST = [\n+ MyObj(col1=\"a\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"d\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"b\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"a\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"b\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"b\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"d\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"a\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"c\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"c\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"c\", col2=\"1\", col3=\"B\"),\n+ MyObj(col1=\"c\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"b\", col2=\"2\", col3=\"A\"),\n+ MyObj(col1=\"a\", col2=\"1\", col3=\"A\"),\n+ MyObj(col1=\"d\", col2=\"2\", col3=\"B\"),\n+ MyObj(col1=\"d\", col2=\"1\", col3=\"A\"),\n+]\n+\n+\n+def test_attrsort() -> None:\n+ assert attrsort(UNSORTED_LIST, [\"col1\", \"col2\", \"col3\"]) == SORTED_LIST\ndiff --git a/tests/test_keysort.py b/tests/test_keysort.py\nnew file mode 100644\nindex 0000000..2e66f97\n--- /dev/null\n+++ b/tests/test_keysort.py\n@@ -0,0 +1,44 @@\n+from keysort import keysort\n+\n+\n+SORTED_LIST = [\n+ {\"col1\": \"a\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"a\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"a\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"a\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"b\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"b\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"b\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"b\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"c\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"c\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"c\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"c\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"d\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"d\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"d\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"d\", \"col2\": \"2\", \"col3\": \"B\"},\n+]\n+\n+UNSORTED_LIST = [\n+ {\"col1\": \"a\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"d\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"b\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"a\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"b\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"b\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"d\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"a\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"c\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"c\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"c\", \"col2\": \"1\", \"col3\": \"B\"},\n+ {\"col1\": \"c\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"b\", \"col2\": \"2\", \"col3\": \"A\"},\n+ {\"col1\": \"a\", \"col2\": \"1\", \"col3\": \"A\"},\n+ {\"col1\": \"d\", \"col2\": \"2\", \"col3\": \"B\"},\n+ {\"col1\": \"d\", \"col2\": \"1\", \"col3\": \"A\"},\n+]\n+\n+\n+def test_keysort() -> None:\n+ assert keysort(UNSORTED_LIST, [\"col1\", \"col2\", \"col3\"]) == SORTED_LIST\n", "document": "## 1. Overview\n\n`keysort` is a small, typed Python library for ordering in-memory collections by multiple fields. Its main use case is sorting lists of dictionaries by key values and lists of Python objects by attributes, so callers can express precedence such as \u201csort by code, then number\u201d without writing custom sort keys each time.\n\nThe repository is primarily a library package rather than a CLI or service. Users interact with it through a minimal top-level Python API, importing `keysort` for mapping-like records and `attrsort` for object instances such as dataclasses or simple models. Internally, both interfaces share the same stable multi-field sorting approach: later fields are applied first and earlier fields are applied last, producing the final precedence order through Python\u2019s built-in stable sort behavior.\n\nMajor workflows in the package are:\n- **Dictionary sorting**: reorder a list of dictionaries using one or more dictionary keys.\n- **Object attribute sorting**: reorder a list of objects using one or more attribute names.\n- **Simple import surface**: expose the public API directly from the package root for straightforward use in application code.\n\nIn practice, `keysort` is designed for developers who need a lightweight dependency-free way to produce consistent multi-key ordering for structured Python data.\n\n## Dictionary multi-key sorting\n\nThis ability provides the package\u2019s dictionary-record sorter: given a list of dictionaries and an ordered list of key names, it returns the records ordered by those keys from highest to lowest precedence.\n\n### Component: Public dictionary sorting API\n\n#### Function: `keysort`\n\n**Import Path**: `from keysort import keysort` *(canonical public import)*\n\nThe repository-tracked implementation symbol for this public API is `src.keysort.keysort.keysort`, but callers should be able to use the package-root import shown above.\n\n**Signature:**\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): list to order. For this ability, elements are expected to be dictionaries, or dictionary subclasses compatible with `dict.get` lookup semantics.\n- `keys` (`List[Any]`, optional): dictionary keys in precedence order. The first element is the primary sort key, the second is the secondary sort key, and so on. Defaults to `[]`.\n\n**Returns:**\n- `List[Any]`: the input items in sorted order.\n- If `keys` is non-empty, the return value is a new list object produced by sorting; the input list container is not sorted in place.\n- If `keys` is empty or omitted, the original `my_list` object is returned unchanged.\n- The dictionaries themselves are not copied or transformed; the returned list contains the same item objects in a different order when sorting occurs.\n\n**Notes (Logic & Behavior):**\n- Sorting is ascending according to Python\u2019s normal comparison behavior for the extracted values.\n- Key precedence is left-to-right. For example, `keysort(rows, [\"col1\", \"col2\", \"col3\"])` orders primarily by `\"col1\"`, then resolves ties by `\"col2\"`, then resolves remaining ties by `\"col3\"`.\n- Multi-key ordering must be stable: when two records compare equal for a higher-priority key, their lower-priority ordering is preserved according to the later keys.\n- Each field value is extracted with dictionary `.get()` semantics for the requested key. A missing key therefore contributes `None` as that record\u2019s extracted value for that sort field; no `KeyError` is raised merely because a key is absent.\n- The function performs no custom type validation, value coercion, or exception translation.\n\n**Raises:**\n- No package-specific exceptions are defined for this function.\n- Python exceptions from lookup or sorting propagate unchanged. For example, non-dictionary items may fail during dictionary-style lookup, and values that Python cannot compare with each other, including some combinations involving `None`, may raise `TypeError` during sorting.\n\n**Example:**\n```python\nfrom keysort import keysort\n\nrows = [\n {\"code\": \"beta\", \"number\": 3},\n {\"code\": \"alpha\", \"number\": 0},\n {\"code\": \"beta\", \"number\": 2},\n]\n\nkeysort(rows, [\"code\", \"number\"])\n# [\n# {\"code\": \"alpha\", \"number\": 0},\n# {\"code\": \"beta\", \"number\": 2},\n# {\"code\": \"beta\", \"number\": 3},\n# ]\n```\n\n## Object attribute multi-key sorting\n\nThis ability orders a list of Python objects by one or more named attributes, using the same left-to-right precedence model as dictionary key sorting. It is generic `getattr`-based object sorting: dataclasses are a common example, but no dataclass-specific behavior is required.\n\n### Component: Attribute-based sorting API\n\n#### Function: `attrsort`\n\n**Import Path**: `from keysort import attrsort`\nCanonical public import for this ability. The repository symbol identifier is `src.keysort.keysort.attrsort`, but callers should use the package-root import form above.\n\n**Signature:**\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): The list of objects to order. Items may be any Python objects as long as every requested attribute can be read with normal attribute access.\n- `attrs` (`List[Any]`, optional): Attribute names in priority order. Earlier entries are higher-priority sort fields. Default: `[]`.\n\n**Returns:**\n- `List[Any]`: A list containing the original object references in sorted order.\n- If `attrs` is non-empty, the function returns a newly created sorted list and does not sort `my_list` in place.\n- If `attrs` is empty or omitted, the function returns the original `my_list` object unchanged, preserving object identity.\n\n**Raises:**\n- `AttributeError`: Propagated when an item does not have a requested attribute.\n- Other built-in exceptions from `getattr` or Python sorting/comparison are not translated or wrapped. For example, non-string attribute names or mutually unorderable attribute values should fail according to normal Python behavior.\n\n**Notes (Logic & Behavior):**\n- Attribute precedence is left-to-right: `attrsort(items, [\"col1\", \"col2\", \"col3\"])` sorts primarily by `col1`, breaks ties by `col2`, and then breaks remaining ties by `col3`.\n- Sorting follows Python\u2019s stable sorting semantics, so when objects compare equal for a higher-priority attribute, their lower-priority ordering is preserved according to the later attributes.\n- The function performs no custom validation and does not mutate the objects in the list.\n- Attribute access is generic. Any object type with the requested attributes is compatible; dataclass instances, simple classes, and model-like objects all work under the same contract.\n\n**Example:**\n```python\nfrom dataclasses import dataclass\nfrom keysort import attrsort\n\n@dataclass\nclass Item:\n code: str\n number: int\n\nitems = [\n Item(code=\"beta\", number=3),\n Item(code=\"alpha\", number=0),\n Item(code=\"beta\", number=2),\n]\n\nattrsort(items, [\"code\", \"number\"])\n# -> [\n# Item(code=\"alpha\", number=0),\n# Item(code=\"beta\", number=2),\n# Item(code=\"beta\", number=3),\n# ]\n```\n\n### Component: Shared ordering contract\n\nObject attribute sorting participates in the package\u2019s shared multi-field ordering behavior: earlier field names dominate later field names, while ties are resolved by subsequent names in the order supplied. For this ability, the field lookup operation is normal Python attribute access rather than dictionary-key lookup.\n\n## Recursive stable sort composition\n\nBoth public sorting workflows share one multi-field ordering rule: a caller supplies fields in priority order, and the resulting list is ordered by the first field primarily, the second field secondarily, and so on. The shared behavior relies on Python\u2019s stable sorting semantics so lower-priority ordering remains intact when higher-priority fields compare equal.\n\n### Component: Shared multi-field precedence rule\n\nFor any non-empty field list, sorting is ascending according to the natural ordering of the extracted field values. The first requested field or attribute is the dominant key; later entries only decide order among items whose earlier extracted values compare equal.\n\nA compatible implementation may compose this ordering recursively or by another equivalent sequence of stable sorts, but it must preserve these observable rules:\n\n- Apply lower-priority fields before higher-priority fields, or otherwise produce the same stable result.\n- Preserve the relative order of items that compare equal for every requested field.\n- Use the same precedence semantics for dictionary records and object records; only the field-access operation differs.\n\n### Component: Observable list and object behavior\n\nThe shared composition is non-mutating for normal sorting calls:\n\n- When at least one field/attribute is provided, the function returns a new list object containing the same element objects in sorted order.\n- The input list\u2019s order is not modified in place.\n- The returned list reuses the original elements; records or objects are not copied or transformed.\n- When the field/attribute list is empty or omitted, the original `my_list` object is returned unchanged rather than creating a new list.\n\nThis identity distinction is part of the effective contract: empty-field calls are a no-op returning the same list object, while non-empty calls create a sorted list result.\n\n### Component: Relationship to the public sorters\n\nThe canonical public entry points are documented in the dictionary, attribute, and top-level import API sections as `from keysort import keysort` and `from keysort import attrsort`. In this ability, their shared behavior is:\n\n- `keysort` applies the multi-field precedence rule to dictionaries using `dict.get` semantics for each requested key. A missing dictionary key is therefore looked up as `None` rather than raising `KeyError` from the lookup itself.\n- `attrsort` applies the same precedence rule to objects using `getattr` semantics for each requested attribute. If an object lacks a requested attribute, `AttributeError` propagates.\n\nBoth functions accept their fields left-to-right by priority, so a field list such as `[\"col1\", \"col2\", \"col3\"]` means primary ordering by `col1`, secondary ordering by `col2`, and tertiary ordering by `col3`.\n\n### Component: Error propagation and validation\n\nThe shared composition layer does not validate inputs, normalize missing values, or translate exceptions. Errors from field access and value comparison propagate as ordinary Python exceptions:\n\n- Attribute lookup failures in object sorting propagate from `getattr` unchanged.\n- Dictionary lookup uses `dict.get`, so missing keys can yield `None`; any later failure comes from sorting/comparing those extracted values rather than from a `KeyError` lookup.\n- If extracted values for a field are not mutually orderable, Python\u2019s sorting comparison error, typically `TypeError`, propagates unchanged.\n- No custom exception classes are defined for this behavior.\n\n### Component: Internal supporting mechanism\n\nThe repository may use a private helper such as `_multisort` to share this behavior between the two public sorters. That helper is an implementation detail: it should provide the stable multi-field composition described above, but it is not part of the documented package-root public API and should not be treated as a separate user-facing import contract.\n\n## Top-level import API\n\nThe package root exists as a minimal import surface for library users: it exposes the two sorting callables directly from `keysort` so callers do not need to know the implementation module layout.\n\n### Component: Package root exports\n\n**Import Path**: `import keysort`\n\n#### Module: `keysort`\n\nThe installed package object must expose exactly these public callable attributes:\n\n- `keysort.keysort`: the dictionary multi-key sorting function.\n- `keysort.attrsort`: the object attribute multi-key sorting function.\n\nThese attributes are callable package attributes, not just a similarly named submodule. After `import keysort`, both `keysort.keysort(...)` and `keysort.attrsort(...)` are supported use forms.\n\n**Public export list:**\n```python\n__all__ = [\"attrsort\", \"keysort\"]\n```\n\n**Notes (Logic & Behavior):**\n- Wildcard import from the package root is limited to `attrsort` and `keysort` by `__all__`.\n- The package-root names are direct re-exports/aliases of the public sorting functions described in the dedicated sorting API sections. They must not add wrapper behavior, argument translation, validation, or changed return behavior.\n- The observable top-level module docstring is exactly: `\"Top-level module for import convenience only.\"`\n- The distribution includes a `py.typed` marker in the `keysort` package so static type checkers treat the installed package as typed.\n\n### Component: Direct function imports from the package root\n\n**Import Path**: `from keysort import keysort`\n\n#### Function: `keysort`\n\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.keysort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the dictionary sorting API contract documented for `keysort`; the package root does not alter that contract.\n\n**Import Path**: `from keysort import attrsort`\n\n#### Function: `attrsort`\n\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.attrsort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the object attribute sorting API contract documented for `attrsort`; the package root does not alter that contract.\n\n### Component: Combined import workflow\n\nThe package root supports importing both public operations together:\n\n```python\nfrom keysort import keysort, attrsort\n```\n\nThis is the preferred public import style for normal library use. The name collision is intentional: `keysort` is both the package name and the dictionary-sorting function exported as a package attribute. In documentation or code, `import keysort` refers to the package object, while `keysort.keysort` refers to the callable attribute on that package object.", "problem_statement": "## 1. Overview\n\n`keysort` is a small, typed Python library for ordering in-memory collections by multiple fields. Its main use case is sorting lists of dictionaries by key values and lists of Python objects by attributes, so callers can express precedence such as \u201csort by code, then number\u201d without writing custom sort keys each time.\n\nThe repository is primarily a library package rather than a CLI or service. Users interact with it through a minimal top-level Python API, importing `keysort` for mapping-like records and `attrsort` for object instances such as dataclasses or simple models. Internally, both interfaces share the same stable multi-field sorting approach: later fields are applied first and earlier fields are applied last, producing the final precedence order through Python\u2019s built-in stable sort behavior.\n\nMajor workflows in the package are:\n- **Dictionary sorting**: reorder a list of dictionaries using one or more dictionary keys.\n- **Object attribute sorting**: reorder a list of objects using one or more attribute names.\n- **Simple import surface**: expose the public API directly from the package root for straightforward use in application code.\n\nIn practice, `keysort` is designed for developers who need a lightweight dependency-free way to produce consistent multi-key ordering for structured Python data.\n\n## Dictionary multi-key sorting\n\nThis ability provides the package\u2019s dictionary-record sorter: given a list of dictionaries and an ordered list of key names, it returns the records ordered by those keys from highest to lowest precedence.\n\n### Component: Public dictionary sorting API\n\n#### Function: `keysort`\n\n**Import Path**: `from keysort import keysort` *(canonical public import)*\n\nThe repository-tracked implementation symbol for this public API is `src.keysort.keysort.keysort`, but callers should be able to use the package-root import shown above.\n\n**Signature:**\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): list to order. For this ability, elements are expected to be dictionaries, or dictionary subclasses compatible with `dict.get` lookup semantics.\n- `keys` (`List[Any]`, optional): dictionary keys in precedence order. The first element is the primary sort key, the second is the secondary sort key, and so on. Defaults to `[]`.\n\n**Returns:**\n- `List[Any]`: the input items in sorted order.\n- If `keys` is non-empty, the return value is a new list object produced by sorting; the input list container is not sorted in place.\n- If `keys` is empty or omitted, the original `my_list` object is returned unchanged.\n- The dictionaries themselves are not copied or transformed; the returned list contains the same item objects in a different order when sorting occurs.\n\n**Notes (Logic & Behavior):**\n- Sorting is ascending according to Python\u2019s normal comparison behavior for the extracted values.\n- Key precedence is left-to-right. For example, `keysort(rows, [\"col1\", \"col2\", \"col3\"])` orders primarily by `\"col1\"`, then resolves ties by `\"col2\"`, then resolves remaining ties by `\"col3\"`.\n- Multi-key ordering must be stable: when two records compare equal for a higher-priority key, their lower-priority ordering is preserved according to the later keys.\n- Each field value is extracted with dictionary `.get()` semantics for the requested key. A missing key therefore contributes `None` as that record\u2019s extracted value for that sort field; no `KeyError` is raised merely because a key is absent.\n- The function performs no custom type validation, value coercion, or exception translation.\n\n**Raises:**\n- No package-specific exceptions are defined for this function.\n- Python exceptions from lookup or sorting propagate unchanged. For example, non-dictionary items may fail during dictionary-style lookup, and values that Python cannot compare with each other, including some combinations involving `None`, may raise `TypeError` during sorting.\n\n**Example:**\n```python\nfrom keysort import keysort\n\nrows = [\n {\"code\": \"beta\", \"number\": 3},\n {\"code\": \"alpha\", \"number\": 0},\n {\"code\": \"beta\", \"number\": 2},\n]\n\nkeysort(rows, [\"code\", \"number\"])\n# [\n# {\"code\": \"alpha\", \"number\": 0},\n# {\"code\": \"beta\", \"number\": 2},\n# {\"code\": \"beta\", \"number\": 3},\n# ]\n```\n\n## Object attribute multi-key sorting\n\nThis ability orders a list of Python objects by one or more named attributes, using the same left-to-right precedence model as dictionary key sorting. It is generic `getattr`-based object sorting: dataclasses are a common example, but no dataclass-specific behavior is required.\n\n### Component: Attribute-based sorting API\n\n#### Function: `attrsort`\n\n**Import Path**: `from keysort import attrsort`\nCanonical public import for this ability. The repository symbol identifier is `src.keysort.keysort.attrsort`, but callers should use the package-root import form above.\n\n**Signature:**\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): The list of objects to order. Items may be any Python objects as long as every requested attribute can be read with normal attribute access.\n- `attrs` (`List[Any]`, optional): Attribute names in priority order. Earlier entries are higher-priority sort fields. Default: `[]`.\n\n**Returns:**\n- `List[Any]`: A list containing the original object references in sorted order.\n- If `attrs` is non-empty, the function returns a newly created sorted list and does not sort `my_list` in place.\n- If `attrs` is empty or omitted, the function returns the original `my_list` object unchanged, preserving object identity.\n\n**Raises:**\n- `AttributeError`: Propagated when an item does not have a requested attribute.\n- Other built-in exceptions from `getattr` or Python sorting/comparison are not translated or wrapped. For example, non-string attribute names or mutually unorderable attribute values should fail according to normal Python behavior.\n\n**Notes (Logic & Behavior):**\n- Attribute precedence is left-to-right: `attrsort(items, [\"col1\", \"col2\", \"col3\"])` sorts primarily by `col1`, breaks ties by `col2`, and then breaks remaining ties by `col3`.\n- Sorting follows Python\u2019s stable sorting semantics, so when objects compare equal for a higher-priority attribute, their lower-priority ordering is preserved according to the later attributes.\n- The function performs no custom validation and does not mutate the objects in the list.\n- Attribute access is generic. Any object type with the requested attributes is compatible; dataclass instances, simple classes, and model-like objects all work under the same contract.\n\n**Example:**\n```python\nfrom dataclasses import dataclass\nfrom keysort import attrsort\n\n@dataclass\nclass Item:\n code: str\n number: int\n\nitems = [\n Item(code=\"beta\", number=3),\n Item(code=\"alpha\", number=0),\n Item(code=\"beta\", number=2),\n]\n\nattrsort(items, [\"code\", \"number\"])\n# -> [\n# Item(code=\"alpha\", number=0),\n# Item(code=\"beta\", number=2),\n# Item(code=\"beta\", number=3),\n# ]\n```\n\n### Component: Shared ordering contract\n\nObject attribute sorting participates in the package\u2019s shared multi-field ordering behavior: earlier field names dominate later field names, while ties are resolved by subsequent names in the order supplied. For this ability, the field lookup operation is normal Python attribute access rather than dictionary-key lookup.\n\n## Recursive stable sort composition\n\nBoth public sorting workflows share one multi-field ordering rule: a caller supplies fields in priority order, and the resulting list is ordered by the first field primarily, the second field secondarily, and so on. The shared behavior relies on Python\u2019s stable sorting semantics so lower-priority ordering remains intact when higher-priority fields compare equal.\n\n### Component: Shared multi-field precedence rule\n\nFor any non-empty field list, sorting is ascending according to the natural ordering of the extracted field values. The first requested field or attribute is the dominant key; later entries only decide order among items whose earlier extracted values compare equal.\n\nA compatible implementation may compose this ordering recursively or by another equivalent sequence of stable sorts, but it must preserve these observable rules:\n\n- Apply lower-priority fields before higher-priority fields, or otherwise produce the same stable result.\n- Preserve the relative order of items that compare equal for every requested field.\n- Use the same precedence semantics for dictionary records and object records; only the field-access operation differs.\n\n### Component: Observable list and object behavior\n\nThe shared composition is non-mutating for normal sorting calls:\n\n- When at least one field/attribute is provided, the function returns a new list object containing the same element objects in sorted order.\n- The input list\u2019s order is not modified in place.\n- The returned list reuses the original elements; records or objects are not copied or transformed.\n- When the field/attribute list is empty or omitted, the original `my_list` object is returned unchanged rather than creating a new list.\n\nThis identity distinction is part of the effective contract: empty-field calls are a no-op returning the same list object, while non-empty calls create a sorted list result.\n\n### Component: Relationship to the public sorters\n\nThe canonical public entry points are documented in the dictionary, attribute, and top-level import API sections as `from keysort import keysort` and `from keysort import attrsort`. In this ability, their shared behavior is:\n\n- `keysort` applies the multi-field precedence rule to dictionaries using `dict.get` semantics for each requested key. A missing dictionary key is therefore looked up as `None` rather than raising `KeyError` from the lookup itself.\n- `attrsort` applies the same precedence rule to objects using `getattr` semantics for each requested attribute. If an object lacks a requested attribute, `AttributeError` propagates.\n\nBoth functions accept their fields left-to-right by priority, so a field list such as `[\"col1\", \"col2\", \"col3\"]` means primary ordering by `col1`, secondary ordering by `col2`, and tertiary ordering by `col3`.\n\n### Component: Error propagation and validation\n\nThe shared composition layer does not validate inputs, normalize missing values, or translate exceptions. Errors from field access and value comparison propagate as ordinary Python exceptions:\n\n- Attribute lookup failures in object sorting propagate from `getattr` unchanged.\n- Dictionary lookup uses `dict.get`, so missing keys can yield `None`; any later failure comes from sorting/comparing those extracted values rather than from a `KeyError` lookup.\n- If extracted values for a field are not mutually orderable, Python\u2019s sorting comparison error, typically `TypeError`, propagates unchanged.\n- No custom exception classes are defined for this behavior.\n\n### Component: Internal supporting mechanism\n\nThe repository may use a private helper such as `_multisort` to share this behavior between the two public sorters. That helper is an implementation detail: it should provide the stable multi-field composition described above, but it is not part of the documented package-root public API and should not be treated as a separate user-facing import contract.\n\n## Top-level import API\n\nThe package root exists as a minimal import surface for library users: it exposes the two sorting callables directly from `keysort` so callers do not need to know the implementation module layout.\n\n### Component: Package root exports\n\n**Import Path**: `import keysort`\n\n#### Module: `keysort`\n\nThe installed package object must expose exactly these public callable attributes:\n\n- `keysort.keysort`: the dictionary multi-key sorting function.\n- `keysort.attrsort`: the object attribute multi-key sorting function.\n\nThese attributes are callable package attributes, not just a similarly named submodule. After `import keysort`, both `keysort.keysort(...)` and `keysort.attrsort(...)` are supported use forms.\n\n**Public export list:**\n```python\n__all__ = [\"attrsort\", \"keysort\"]\n```\n\n**Notes (Logic & Behavior):**\n- Wildcard import from the package root is limited to `attrsort` and `keysort` by `__all__`.\n- The package-root names are direct re-exports/aliases of the public sorting functions described in the dedicated sorting API sections. They must not add wrapper behavior, argument translation, validation, or changed return behavior.\n- The observable top-level module docstring is exactly: `\"Top-level module for import convenience only.\"`\n- The distribution includes a `py.typed` marker in the `keysort` package so static type checkers treat the installed package as typed.\n\n### Component: Direct function imports from the package root\n\n**Import Path**: `from keysort import keysort`\n\n#### Function: `keysort`\n\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.keysort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the dictionary sorting API contract documented for `keysort`; the package root does not alter that contract.\n\n**Import Path**: `from keysort import attrsort`\n\n#### Function: `attrsort`\n\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.attrsort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the object attribute sorting API contract documented for `attrsort`; the package root does not alter that contract.\n\n### Component: Combined import workflow\n\nThe package root supports importing both public operations together:\n\n```python\nfrom keysort import keysort, attrsort\n```\n\nThis is the preferred public import style for normal library use. The name collision is intentional: `keysort` is both the package name and the dictionary-sorting function exported as a package attribute. In documentation or code, `import keysort` refers to the package object, while `keysort.keysort` refers to the callable attribute on that package object.", "pypi_name": "keysort", "import_names": ["keysort"], "passed_ptp": ["tests/test_attrsort.py::test_attrsort", "tests/test_keysort.py::test_keysort"], "failed_ptp": [], "test_binary_archive_b64": "", "expected_coverage_percent": 100.0, "responses_create_params": {"input": [{"role": "user", "content": "## 1. Overview\n\n`keysort` is a small, typed Python library for ordering in-memory collections by multiple fields. Its main use case is sorting lists of dictionaries by key values and lists of Python objects by attributes, so callers can express precedence such as \u201csort by code, then number\u201d without writing custom sort keys each time.\n\nThe repository is primarily a library package rather than a CLI or service. Users interact with it through a minimal top-level Python API, importing `keysort` for mapping-like records and `attrsort` for object instances such as dataclasses or simple models. Internally, both interfaces share the same stable multi-field sorting approach: later fields are applied first and earlier fields are applied last, producing the final precedence order through Python\u2019s built-in stable sort behavior.\n\nMajor workflows in the package are:\n- **Dictionary sorting**: reorder a list of dictionaries using one or more dictionary keys.\n- **Object attribute sorting**: reorder a list of objects using one or more attribute names.\n- **Simple import surface**: expose the public API directly from the package root for straightforward use in application code.\n\nIn practice, `keysort` is designed for developers who need a lightweight dependency-free way to produce consistent multi-key ordering for structured Python data.\n\n## Dictionary multi-key sorting\n\nThis ability provides the package\u2019s dictionary-record sorter: given a list of dictionaries and an ordered list of key names, it returns the records ordered by those keys from highest to lowest precedence.\n\n### Component: Public dictionary sorting API\n\n#### Function: `keysort`\n\n**Import Path**: `from keysort import keysort` *(canonical public import)*\n\nThe repository-tracked implementation symbol for this public API is `src.keysort.keysort.keysort`, but callers should be able to use the package-root import shown above.\n\n**Signature:**\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): list to order. For this ability, elements are expected to be dictionaries, or dictionary subclasses compatible with `dict.get` lookup semantics.\n- `keys` (`List[Any]`, optional): dictionary keys in precedence order. The first element is the primary sort key, the second is the secondary sort key, and so on. Defaults to `[]`.\n\n**Returns:**\n- `List[Any]`: the input items in sorted order.\n- If `keys` is non-empty, the return value is a new list object produced by sorting; the input list container is not sorted in place.\n- If `keys` is empty or omitted, the original `my_list` object is returned unchanged.\n- The dictionaries themselves are not copied or transformed; the returned list contains the same item objects in a different order when sorting occurs.\n\n**Notes (Logic & Behavior):**\n- Sorting is ascending according to Python\u2019s normal comparison behavior for the extracted values.\n- Key precedence is left-to-right. For example, `keysort(rows, [\"col1\", \"col2\", \"col3\"])` orders primarily by `\"col1\"`, then resolves ties by `\"col2\"`, then resolves remaining ties by `\"col3\"`.\n- Multi-key ordering must be stable: when two records compare equal for a higher-priority key, their lower-priority ordering is preserved according to the later keys.\n- Each field value is extracted with dictionary `.get()` semantics for the requested key. A missing key therefore contributes `None` as that record\u2019s extracted value for that sort field; no `KeyError` is raised merely because a key is absent.\n- The function performs no custom type validation, value coercion, or exception translation.\n\n**Raises:**\n- No package-specific exceptions are defined for this function.\n- Python exceptions from lookup or sorting propagate unchanged. For example, non-dictionary items may fail during dictionary-style lookup, and values that Python cannot compare with each other, including some combinations involving `None`, may raise `TypeError` during sorting.\n\n**Example:**\n```python\nfrom keysort import keysort\n\nrows = [\n {\"code\": \"beta\", \"number\": 3},\n {\"code\": \"alpha\", \"number\": 0},\n {\"code\": \"beta\", \"number\": 2},\n]\n\nkeysort(rows, [\"code\", \"number\"])\n# [\n# {\"code\": \"alpha\", \"number\": 0},\n# {\"code\": \"beta\", \"number\": 2},\n# {\"code\": \"beta\", \"number\": 3},\n# ]\n```\n\n## Object attribute multi-key sorting\n\nThis ability orders a list of Python objects by one or more named attributes, using the same left-to-right precedence model as dictionary key sorting. It is generic `getattr`-based object sorting: dataclasses are a common example, but no dataclass-specific behavior is required.\n\n### Component: Attribute-based sorting API\n\n#### Function: `attrsort`\n\n**Import Path**: `from keysort import attrsort`\nCanonical public import for this ability. The repository symbol identifier is `src.keysort.keysort.attrsort`, but callers should use the package-root import form above.\n\n**Signature:**\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\n**Parameters:**\n- `my_list` (`List[Any]`): The list of objects to order. Items may be any Python objects as long as every requested attribute can be read with normal attribute access.\n- `attrs` (`List[Any]`, optional): Attribute names in priority order. Earlier entries are higher-priority sort fields. Default: `[]`.\n\n**Returns:**\n- `List[Any]`: A list containing the original object references in sorted order.\n- If `attrs` is non-empty, the function returns a newly created sorted list and does not sort `my_list` in place.\n- If `attrs` is empty or omitted, the function returns the original `my_list` object unchanged, preserving object identity.\n\n**Raises:**\n- `AttributeError`: Propagated when an item does not have a requested attribute.\n- Other built-in exceptions from `getattr` or Python sorting/comparison are not translated or wrapped. For example, non-string attribute names or mutually unorderable attribute values should fail according to normal Python behavior.\n\n**Notes (Logic & Behavior):**\n- Attribute precedence is left-to-right: `attrsort(items, [\"col1\", \"col2\", \"col3\"])` sorts primarily by `col1`, breaks ties by `col2`, and then breaks remaining ties by `col3`.\n- Sorting follows Python\u2019s stable sorting semantics, so when objects compare equal for a higher-priority attribute, their lower-priority ordering is preserved according to the later attributes.\n- The function performs no custom validation and does not mutate the objects in the list.\n- Attribute access is generic. Any object type with the requested attributes is compatible; dataclass instances, simple classes, and model-like objects all work under the same contract.\n\n**Example:**\n```python\nfrom dataclasses import dataclass\nfrom keysort import attrsort\n\n@dataclass\nclass Item:\n code: str\n number: int\n\nitems = [\n Item(code=\"beta\", number=3),\n Item(code=\"alpha\", number=0),\n Item(code=\"beta\", number=2),\n]\n\nattrsort(items, [\"code\", \"number\"])\n# -> [\n# Item(code=\"alpha\", number=0),\n# Item(code=\"beta\", number=2),\n# Item(code=\"beta\", number=3),\n# ]\n```\n\n### Component: Shared ordering contract\n\nObject attribute sorting participates in the package\u2019s shared multi-field ordering behavior: earlier field names dominate later field names, while ties are resolved by subsequent names in the order supplied. For this ability, the field lookup operation is normal Python attribute access rather than dictionary-key lookup.\n\n## Recursive stable sort composition\n\nBoth public sorting workflows share one multi-field ordering rule: a caller supplies fields in priority order, and the resulting list is ordered by the first field primarily, the second field secondarily, and so on. The shared behavior relies on Python\u2019s stable sorting semantics so lower-priority ordering remains intact when higher-priority fields compare equal.\n\n### Component: Shared multi-field precedence rule\n\nFor any non-empty field list, sorting is ascending according to the natural ordering of the extracted field values. The first requested field or attribute is the dominant key; later entries only decide order among items whose earlier extracted values compare equal.\n\nA compatible implementation may compose this ordering recursively or by another equivalent sequence of stable sorts, but it must preserve these observable rules:\n\n- Apply lower-priority fields before higher-priority fields, or otherwise produce the same stable result.\n- Preserve the relative order of items that compare equal for every requested field.\n- Use the same precedence semantics for dictionary records and object records; only the field-access operation differs.\n\n### Component: Observable list and object behavior\n\nThe shared composition is non-mutating for normal sorting calls:\n\n- When at least one field/attribute is provided, the function returns a new list object containing the same element objects in sorted order.\n- The input list\u2019s order is not modified in place.\n- The returned list reuses the original elements; records or objects are not copied or transformed.\n- When the field/attribute list is empty or omitted, the original `my_list` object is returned unchanged rather than creating a new list.\n\nThis identity distinction is part of the effective contract: empty-field calls are a no-op returning the same list object, while non-empty calls create a sorted list result.\n\n### Component: Relationship to the public sorters\n\nThe canonical public entry points are documented in the dictionary, attribute, and top-level import API sections as `from keysort import keysort` and `from keysort import attrsort`. In this ability, their shared behavior is:\n\n- `keysort` applies the multi-field precedence rule to dictionaries using `dict.get` semantics for each requested key. A missing dictionary key is therefore looked up as `None` rather than raising `KeyError` from the lookup itself.\n- `attrsort` applies the same precedence rule to objects using `getattr` semantics for each requested attribute. If an object lacks a requested attribute, `AttributeError` propagates.\n\nBoth functions accept their fields left-to-right by priority, so a field list such as `[\"col1\", \"col2\", \"col3\"]` means primary ordering by `col1`, secondary ordering by `col2`, and tertiary ordering by `col3`.\n\n### Component: Error propagation and validation\n\nThe shared composition layer does not validate inputs, normalize missing values, or translate exceptions. Errors from field access and value comparison propagate as ordinary Python exceptions:\n\n- Attribute lookup failures in object sorting propagate from `getattr` unchanged.\n- Dictionary lookup uses `dict.get`, so missing keys can yield `None`; any later failure comes from sorting/comparing those extracted values rather than from a `KeyError` lookup.\n- If extracted values for a field are not mutually orderable, Python\u2019s sorting comparison error, typically `TypeError`, propagates unchanged.\n- No custom exception classes are defined for this behavior.\n\n### Component: Internal supporting mechanism\n\nThe repository may use a private helper such as `_multisort` to share this behavior between the two public sorters. That helper is an implementation detail: it should provide the stable multi-field composition described above, but it is not part of the documented package-root public API and should not be treated as a separate user-facing import contract.\n\n## Top-level import API\n\nThe package root exists as a minimal import surface for library users: it exposes the two sorting callables directly from `keysort` so callers do not need to know the implementation module layout.\n\n### Component: Package root exports\n\n**Import Path**: `import keysort`\n\n#### Module: `keysort`\n\nThe installed package object must expose exactly these public callable attributes:\n\n- `keysort.keysort`: the dictionary multi-key sorting function.\n- `keysort.attrsort`: the object attribute multi-key sorting function.\n\nThese attributes are callable package attributes, not just a similarly named submodule. After `import keysort`, both `keysort.keysort(...)` and `keysort.attrsort(...)` are supported use forms.\n\n**Public export list:**\n```python\n__all__ = [\"attrsort\", \"keysort\"]\n```\n\n**Notes (Logic & Behavior):**\n- Wildcard import from the package root is limited to `attrsort` and `keysort` by `__all__`.\n- The package-root names are direct re-exports/aliases of the public sorting functions described in the dedicated sorting API sections. They must not add wrapper behavior, argument translation, validation, or changed return behavior.\n- The observable top-level module docstring is exactly: `\"Top-level module for import convenience only.\"`\n- The distribution includes a `py.typed` marker in the `keysort` package so static type checkers treat the installed package as typed.\n\n### Component: Direct function imports from the package root\n\n**Import Path**: `from keysort import keysort`\n\n#### Function: `keysort`\n\n```python\ndef keysort(my_list: List[Any], keys: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.keysort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the dictionary sorting API contract documented for `keysort`; the package root does not alter that contract.\n\n**Import Path**: `from keysort import attrsort`\n\n#### Function: `attrsort`\n\n```python\ndef attrsort(my_list: List[Any], attrs: List[Any] = []) -> List[Any]: ...\n```\n\nThis imported name is the same callable exposed as `keysort.attrsort` after `import keysort`. Its sorting behavior, default handling, return value, and propagated errors are exactly the object attribute sorting API contract documented for `attrsort`; the package root does not alter that contract.\n\n### Component: Combined import workflow\n\nThe package root supports importing both public operations together:\n\n```python\nfrom keysort import keysort, attrsort\n```\n\nThis is the preferred public import style for normal library use. The name collision is intentional: `keysort` is both the package name and the dictionary-sorting function exported as a package attribute. In documentation or code, `import keysort` refers to the package object, while `keysort.keysort` refers to the callable attribute on that package object."}]}}
+{"instance_id": "oliverlambson_fastnanoid_pr9", "repo": "fastnanoid", "github_url": "https://github.com/oliverlambson/fastnanoid", "language": "python", "workdir": "/workspace/fastnanoid", "image_ref": "docker.io/aweaiteam/denovoswe:oliverlambson_fastnanoid_pr9", "base_commit": "1389f8698f49c4428ad0d5ea5f591214606d66c8", "patch": "", "test_patch": "diff --git a/README.md b/README.md\nnew file mode 100644\nindex 0000000..b1fff50\n--- /dev/null\n+++ b/README.md\n@@ -0,0 +1,58 @@\n+# fastnanoid\n+\n+fastnanoid is a tiny, secure URL-friendly, and fast unique string ID generator for Python, written in Rust.\n+\n+It works as a drop in replacement for [py-nanoid](https://github.com/puyuan/py-nanoid)'s `generate()`:\n+\n+```diff\n+- from nanoid import generate\n++ from fastnanoid import generate\n+```\n+\n+It's 2.8x faster than the original.\n+\n+## When not to use it\n+\n+If you need the same amount of entropy as uuid, you may as well use uuid and\n+base64url encode it:\n+\n+```python\n+import uuid\n+from fastnanoid import urlid_to_uuid, uuid_to_urlid\n+# say you have a uuid, maybe from your database:\n+id_ = uuid.uuid4() # type: uuid.UUID\n+# you can encoded it in base64url so it displays as a short string:\n+urlid = uuid_to_urlid(id_) # type: str\n+# and when you read it back in from the user, you can convert it back to a normal UUID:\n+decoded_urlid = urlid_to_uuid(urlid) # type: UUID\n+```\n+\n+This is simpler than using a nanoid which is not compliant with any existing standards.\n+If you already have a generated UUID (say from a database),\n+this is _much_ faster than generating a new nanoid.\n+(If you don't have a UUID, generating one plus encoding it in base64url is about 50% slower than fastnanoid.)\n+\n+\\* these are very simple helper functions, you can easily implement them\n+yourself and save a dependency.\n+\n+## Contributing\n+\n+```sh\n+# local env\n+python -m venv .venv\n+source .venv/bin/activate\n+pip install -r requirements-dev.txt\n+# build and use\n+maturin develop\n+python -c 'import fastnanoid; print(fastnanoid.generate())'\n+# test\n+cargo test\n+pytest\n+mypy\n+ruff check\n+ruff format --check\n+```\n+\n+## Credits\n+\n+Inspired by [py-nanoid](https://github.com/puyuan/py-nanoid)\ndiff --git a/tests/test_fastnanoid.py b/tests/test_fastnanoid.py\nnew file mode 100644\nindex 0000000..d721d94\n--- /dev/null\n+++ b/tests/test_fastnanoid.py\n@@ -0,0 +1,6 @@\n+from fastnanoid import generate\n+\n+\n+def test_generate():\n+ assert len(generate()) == 21\n+ assert len(generate(size=10)) == 10\n", "document": "## 1. Overview\n\n`fastnanoid` is a small Python library for generating compact, URL-safe identifiers with low overhead. Its main interface is a Rust-backed Python extension that exposes a `generate()` function compatible with `py-nanoid`, so existing Python code can switch to this package without changing the calling pattern.\n\nThe repository is centered on one job: producing short random IDs for application-facing identifiers such as URLs, tokens, or public object references. The core generator supports the standard Nano ID alphabet by default, while also letting callers choose a custom alphabet and output length. The implementation counts characters rather than bytes, which keeps length behavior consistent even when the alphabet includes multibyte Unicode characters.\n\nIn addition to Nano ID generation, the package includes a small pure-Python UUID conversion surface for workflows that already use `uuid.UUID` values but want a shorter display form. These helpers encode UUID bytes into base64url strings and decode them back to UUID objects.\n\nMajor workflows in this repository are:\n- **Fast Nano ID generation** through the Python API: `from fastnanoid import generate`\n- **Custom ID formats** by supplying a caller-defined alphabet and size\n- **Compact UUID presentation** with `uuid_to_urlid()` and `urlid_to_uuid()`\n- **Typed Python package exports** that present the Rust extension and UUID helpers through a single import path\n\nFor users, `fastnanoid` is primarily a library dependency rather than a CLI or service: you install it, import its functions in Python, and use it directly inside application code.\n\n## Nano ID generation\n\n`fastnanoid` generates compact random identifier strings through a single `generate()` API. The core workflow is to import `generate` from the package root and call it with optional alphabet and length controls; this mirrors the supported `py-nanoid`-style calling pattern without adding global state or builder objects.\n\n### Component: Public generator API\n\n**Import Path**: `from fastnanoid import generate` (canonical public import)\n\n**Also supported**: `from fastnanoid.fastnanoid import generate` for callers that import the extension module directly.\n\n#### Function: `fastnanoid.generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The characters from which the ID is sampled. The default alphabet is URL-friendly and contains digits, uppercase ASCII letters, lowercase ASCII letters, underscore, and hyphen in exactly that order.\n- `size` (`int`, default: `21`): The requested number of output characters. Runtime argument conversion follows the extension boundary: non-negative Python integers are accepted, and values that cannot be interpreted as an unsigned size are rejected.\n\n**Returns:**\n- `str`: A newly generated random string of exactly `size` characters.\n\n**Raises:**\n- `OverflowError` with message `can't convert negative int to unsigned` when `size` is a negative integer.\n- `TypeError` for non-integer `size` values, with messages such as `argument 'size': 'str' object cannot be interpreted as an integer` or `argument 'size': 'float' object cannot be interpreted as an integer` for those representative types.\n- `TypeError` for non-string `alphabet` values, with messages such as `argument 'alphabet': 'bytes' object cannot be converted to 'PyString'` or `argument 'alphabet': 'list' object cannot be converted to 'PyString'` for those representative types.\n- `pyo3_runtime.PanicException` with message `Uniform::new called with `low >= high`` when `alphabet` is the empty string. An empty alphabet is invalid and must not silently fall back to the default alphabet.\n\n**Notes (Logic & Behavior):**\n- `generate()` returns a 21-character string by default.\n- `generate(size=10)` returns a 10-character string; in general the returned string length is exactly the requested `size`.\n- `generate(size=0)` returns the empty string `\"\"`.\n- The result is random; the package does not provide deterministic seeding, repeatable output, or a uniqueness registry. Uniqueness is probabilistic rather than guaranteed per process or globally.\n- Every output character is chosen from `alphabet`. Custom alphabet handling is character-based rather than byte-based, so multibyte Unicode characters count as one possible output character and contribute one character to the requested output length.\n- The supplied alphabet is used as provided: characters are not normalized or deduplicated before sampling. If a caller supplies duplicate characters, those duplicates remain part of the sampling pool.\n- Passing `alphabet=None` is treated the same as omitting `alphabet` and uses the default alphabet. Passing `size=None` is treated the same as omitting `size` and uses the default size of `21`.\n- The supported compatibility surface is the `generate(alphabet=..., size=...)` calling pattern and the package-root import style; no additional Nano ID configuration objects or validation helpers are part of this ability.\n\n### Component: Relationship to package exports\n\nThe package root re-exports the generator so application code should normally use `from fastnanoid import generate`. The direct extension-module import form is available, but the root import is the stable, documented user-facing path and is the one shown in the project README. Details of the compiled extension\u2019s internal registration are not part of the public generation contract.\n\n## Custom alphabet and length control\n\nThis ability describes the parameterized behavior of the existing `generate` API: callers can provide a custom alphabet and/or choose the generated ID length without using a separate builder or helper object.\n\n### Component: Configurable ID generation\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` (canonical public import). A secondary extension-backed import, `from fastnanoid.fastnanoid import generate`, is also available because the package root re-exports that callable.\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The sequence of characters used as the sampling pool. It is treated as the provided character sequence, not as a deduplicated mathematical set; repeated characters remain repeated entries in the pool.\n- `size` (`int`, default: `21`): The requested number of output characters.\n\n**Returns:**\n- `str`: A generated ID containing exactly `size` characters for valid non-empty alphabets and non-negative sizes.\n\n**Notes (Logic & Behavior):**\n- Supplying `alphabet` changes only the pool of possible output characters. If `size` is omitted while `alphabet` is supplied, the result length remains the default `21`.\n- Every character in the returned ID is drawn from the supplied alphabet.\n- Length is character-based rather than UTF-8-byte-based. Unicode alphabets, including multibyte characters such as `\"asdf\ud83c\udf0d\"`, still produce strings whose normal Python `len(...)` equals the requested `size`.\n- `size=0` is accepted and returns the empty string `\"\"`.\n- Passing `None` for `alphabet` or `size` behaves like omitting that argument and uses the corresponding default.\n\n**Raises / edge cases:**\n- `alphabet=\"\"` is invalid. The current extension-backed callable surfaces `pyo3_runtime.PanicException` with the message `Uniform::new called with `low >= high``.\n- Negative sizes are rejected during Python-to-extension conversion with `OverflowError`; for example, `size=-1` raises `OverflowError` with message `can't convert negative int to unsigned`.\n- Integers too large for the extension\u2019s unsigned size type raise `OverflowError` with message `int too big to convert`.\n- Non-string `alphabet` values raise `TypeError`; for example, `alphabet=123` raises `TypeError` with message `argument 'alphabet': 'int' object cannot be converted to 'PyString'`.\n- Non-integer `size` values raise `TypeError`; for example, `size='x'` raises `TypeError` with message `argument 'size': 'str' object cannot be interpreted as an integer`, and `size=1.2` raises the same form for `float`.\n\n### Component: Export relationship\n\nThe custom-alphabet and length behavior is part of the same top-level `generate` callable used for default Nano ID generation. The package root exposes this function in `__all__` as `generate`; no additional public symbol is introduced for custom alphabets or length control.\n\n## Python package export surface\n\n`fastnanoid` exposes a deliberately small Python API: the package root is the canonical user-facing import surface, while the `fastnanoid.uuid` submodule remains a public owner module for UUID helpers and the compiled generator module remains importable for the Rust-backed `generate` function.\n\n### Component: Root package exports\n\n**Public import forms:**\n- **Canonical package import:** `import fastnanoid`\n- **Canonical direct imports:** `from fastnanoid import generate, uuid_to_urlid, urlid_to_uuid`\n\nAfter `import fastnanoid`, the package object must expose these attributes:\n- `fastnanoid.generate`\n- `fastnanoid.urlid_to_uuid`\n- `fastnanoid.uuid_to_urlid`\n\nThe package\u2019s `__all__` is part of the observable export contract and must contain exactly:\n```python\n[\"generate\", \"urlid_to_uuid\", \"uuid_to_urlid\"]\n```\nin that order.\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` or `import fastnanoid` then `fastnanoid.generate`\n\n**Secondary owner path**: `from fastnanoid.fastnanoid import generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Contract:**\n`generate` is the Rust-backed Nano ID generator re-exported at package root. The generation semantics are defined by the Nano ID generation abilities; for this export-surface ability, the important requirement is that the same callable is available from the package root and from the compiled extension module path `fastnanoid.fastnanoid`.\n\n### Component: Public UUID helper submodule and root re-exports\n\nThe UUID helpers are owned by the public importable submodule `fastnanoid.uuid` and are also re-exported at package root. Do not collapse these helpers into root-only functions: both import forms are supported.\n\n**Public import forms:**\n- `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n- `import fastnanoid` then `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n- `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n#### Function: `uuid_to_urlid`\n\n**Import Path**: `from fastnanoid import uuid_to_urlid`; also `from fastnanoid.uuid import uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID value to encode.\n\n**Returns:**\n- `str`: URL-safe base64 representation of the UUID\u2019s 16 raw bytes, without trailing `=` padding.\n\n**Observable behavior:**\n- `uuid_to_urlid(uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"))` returns exactly `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The return value is intended to round-trip through `urlid_to_uuid`.\n- The helper does not define package-specific exception types; invalid argument objects surface the standard exception raised while accessing/encoding the UUID value.\n\n#### Function: `urlid_to_uuid`\n\n**Import Path**: `from fastnanoid import urlid_to_uuid`; also `from fastnanoid.uuid import urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): Unpadded URL-safe base64 UUID string.\n\n**Returns:**\n- `uuid.UUID`: UUID reconstructed from the decoded 16-byte value.\n\n**Observable behavior:**\n- `urlid_to_uuid(\"XZjVeCcxSk22ZnDKFvEKog\")` returns `uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\")`.\n- It is the inverse of `uuid_to_urlid` for values produced by that encoder.\n- The helper does not wrap malformed input in custom errors; standard-library base64 decoding errors and `uuid.UUID` construction errors propagate as-is.\n\n### Component: Typing and package metadata\n\nThe distributed package is typed. Include the PEP 561 marker file at `python/fastnanoid/py.typed` so type checkers recognize the package as typed.\n\nThe extension module needs a stub at `python/fastnanoid/fastnanoid.pyi` exposing the generator signature:\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\nThis stub describes the compiled `fastnanoid.fastnanoid.generate` callable that is re-exported by the root package. The UUID helpers are normal typed Python functions in the public `fastnanoid.uuid` submodule and should remain importable from that submodule as well as from `fastnanoid`.\n\n## UUID URL-safe conversion\n\nThis ability provides compact, URL-safe presentation for existing standard UUID values: encode a `uuid.UUID` into an unpadded base64url string, and decode that string back to the original UUID without introducing a separate ID format.\n\n### Component: Public UUID helper exports\n\nThe UUID helpers are public both from the package root and from the `fastnanoid.uuid` submodule.\n\n**Import Path**: `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n**Import Path**: `import fastnanoid` then use `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n**Import Path**: `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n**Export contract:** the package root exposes `uuid_to_urlid` and `urlid_to_uuid` as package attributes and includes them in `__all__` alongside `generate`. The exact exported-name set is `['generate', 'urlid_to_uuid', 'uuid_to_urlid']`.\n\n### Component: UUID to URL-safe string encoding\n\n#### Function: `uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID object to encode. This helper is intentionally thin and does not parse UUID strings or other UUID-like inputs; callers should pass an actual `uuid.UUID` instance.\n\n**Returns:**\n- `str`: the URL-safe base64 encoding of the UUID's raw 16 bytes, decoded as text and with trailing `=` padding removed.\n\n**Notes (Logic & Behavior):**\n- For valid UUID inputs, the output is always an unpadded 22-character base64url string.\n- The returned alphabet is the URL-safe base64 alphabet, so `-` and `_` may appear instead of `+` and `/`, and no trailing `=` characters are returned.\n- Exact mapping example: `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')` encodes to `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The helper relies on the UUID object's raw byte representation. It should not add permissive coercion from strings or bytes.\n\n### Component: URL-safe string to UUID decoding\n\n#### Function: `urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): A base64url UUID string, normally the unpadded 22-character string produced by `uuid_to_urlid`.\n\n**Returns:**\n- `uuid.UUID`: a UUID reconstructed from the decoded 16-byte value.\n\n**Raises:**\n- `binascii.Error`: propagated from base64 decoding for malformed base64 input in applicable failure modes.\n- `ValueError`: propagated from `uuid.UUID(bytes=...)` when decoding succeeds but does not yield exactly 16 bytes.\n\n**Notes (Logic & Behavior):**\n- The function restores padding before base64url decoding by appending `\"=\" * (len(url) % 4)` to the supplied string.\n- It performs no package-specific validation and does not catch, wrap, or normalize failures from base64 decoding or UUID construction.\n- Exact reverse mapping example: decoding `\"XZjVeCcxSk22ZnDKFvEKog\"` returns `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')`, whose string form is `\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"`.\n\n### Component: Round-trip invariant\n\nFor any valid `uuid.UUID` value `u`, the helper pair must satisfy:\n\n```python\nurlid_to_uuid(uuid_to_urlid(u)) == u\n```\n\nThis workflow is separate from Nano ID generation: it is for applications that already use UUIDs for entropy and storage compatibility but want a shorter URL/display form.", "problem_statement": "## 1. Overview\n\n`fastnanoid` is a small Python library for generating compact, URL-safe identifiers with low overhead. Its main interface is a Rust-backed Python extension that exposes a `generate()` function compatible with `py-nanoid`, so existing Python code can switch to this package without changing the calling pattern.\n\nThe repository is centered on one job: producing short random IDs for application-facing identifiers such as URLs, tokens, or public object references. The core generator supports the standard Nano ID alphabet by default, while also letting callers choose a custom alphabet and output length. The implementation counts characters rather than bytes, which keeps length behavior consistent even when the alphabet includes multibyte Unicode characters.\n\nIn addition to Nano ID generation, the package includes a small pure-Python UUID conversion surface for workflows that already use `uuid.UUID` values but want a shorter display form. These helpers encode UUID bytes into base64url strings and decode them back to UUID objects.\n\nMajor workflows in this repository are:\n- **Fast Nano ID generation** through the Python API: `from fastnanoid import generate`\n- **Custom ID formats** by supplying a caller-defined alphabet and size\n- **Compact UUID presentation** with `uuid_to_urlid()` and `urlid_to_uuid()`\n- **Typed Python package exports** that present the Rust extension and UUID helpers through a single import path\n\nFor users, `fastnanoid` is primarily a library dependency rather than a CLI or service: you install it, import its functions in Python, and use it directly inside application code.\n\n## Nano ID generation\n\n`fastnanoid` generates compact random identifier strings through a single `generate()` API. The core workflow is to import `generate` from the package root and call it with optional alphabet and length controls; this mirrors the supported `py-nanoid`-style calling pattern without adding global state or builder objects.\n\n### Component: Public generator API\n\n**Import Path**: `from fastnanoid import generate` (canonical public import)\n\n**Also supported**: `from fastnanoid.fastnanoid import generate` for callers that import the extension module directly.\n\n#### Function: `fastnanoid.generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The characters from which the ID is sampled. The default alphabet is URL-friendly and contains digits, uppercase ASCII letters, lowercase ASCII letters, underscore, and hyphen in exactly that order.\n- `size` (`int`, default: `21`): The requested number of output characters. Runtime argument conversion follows the extension boundary: non-negative Python integers are accepted, and values that cannot be interpreted as an unsigned size are rejected.\n\n**Returns:**\n- `str`: A newly generated random string of exactly `size` characters.\n\n**Raises:**\n- `OverflowError` with message `can't convert negative int to unsigned` when `size` is a negative integer.\n- `TypeError` for non-integer `size` values, with messages such as `argument 'size': 'str' object cannot be interpreted as an integer` or `argument 'size': 'float' object cannot be interpreted as an integer` for those representative types.\n- `TypeError` for non-string `alphabet` values, with messages such as `argument 'alphabet': 'bytes' object cannot be converted to 'PyString'` or `argument 'alphabet': 'list' object cannot be converted to 'PyString'` for those representative types.\n- `pyo3_runtime.PanicException` with message `Uniform::new called with `low >= high`` when `alphabet` is the empty string. An empty alphabet is invalid and must not silently fall back to the default alphabet.\n\n**Notes (Logic & Behavior):**\n- `generate()` returns a 21-character string by default.\n- `generate(size=10)` returns a 10-character string; in general the returned string length is exactly the requested `size`.\n- `generate(size=0)` returns the empty string `\"\"`.\n- The result is random; the package does not provide deterministic seeding, repeatable output, or a uniqueness registry. Uniqueness is probabilistic rather than guaranteed per process or globally.\n- Every output character is chosen from `alphabet`. Custom alphabet handling is character-based rather than byte-based, so multibyte Unicode characters count as one possible output character and contribute one character to the requested output length.\n- The supplied alphabet is used as provided: characters are not normalized or deduplicated before sampling. If a caller supplies duplicate characters, those duplicates remain part of the sampling pool.\n- Passing `alphabet=None` is treated the same as omitting `alphabet` and uses the default alphabet. Passing `size=None` is treated the same as omitting `size` and uses the default size of `21`.\n- The supported compatibility surface is the `generate(alphabet=..., size=...)` calling pattern and the package-root import style; no additional Nano ID configuration objects or validation helpers are part of this ability.\n\n### Component: Relationship to package exports\n\nThe package root re-exports the generator so application code should normally use `from fastnanoid import generate`. The direct extension-module import form is available, but the root import is the stable, documented user-facing path and is the one shown in the project README. Details of the compiled extension\u2019s internal registration are not part of the public generation contract.\n\n## Custom alphabet and length control\n\nThis ability describes the parameterized behavior of the existing `generate` API: callers can provide a custom alphabet and/or choose the generated ID length without using a separate builder or helper object.\n\n### Component: Configurable ID generation\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` (canonical public import). A secondary extension-backed import, `from fastnanoid.fastnanoid import generate`, is also available because the package root re-exports that callable.\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The sequence of characters used as the sampling pool. It is treated as the provided character sequence, not as a deduplicated mathematical set; repeated characters remain repeated entries in the pool.\n- `size` (`int`, default: `21`): The requested number of output characters.\n\n**Returns:**\n- `str`: A generated ID containing exactly `size` characters for valid non-empty alphabets and non-negative sizes.\n\n**Notes (Logic & Behavior):**\n- Supplying `alphabet` changes only the pool of possible output characters. If `size` is omitted while `alphabet` is supplied, the result length remains the default `21`.\n- Every character in the returned ID is drawn from the supplied alphabet.\n- Length is character-based rather than UTF-8-byte-based. Unicode alphabets, including multibyte characters such as `\"asdf\ud83c\udf0d\"`, still produce strings whose normal Python `len(...)` equals the requested `size`.\n- `size=0` is accepted and returns the empty string `\"\"`.\n- Passing `None` for `alphabet` or `size` behaves like omitting that argument and uses the corresponding default.\n\n**Raises / edge cases:**\n- `alphabet=\"\"` is invalid. The current extension-backed callable surfaces `pyo3_runtime.PanicException` with the message `Uniform::new called with `low >= high``.\n- Negative sizes are rejected during Python-to-extension conversion with `OverflowError`; for example, `size=-1` raises `OverflowError` with message `can't convert negative int to unsigned`.\n- Integers too large for the extension\u2019s unsigned size type raise `OverflowError` with message `int too big to convert`.\n- Non-string `alphabet` values raise `TypeError`; for example, `alphabet=123` raises `TypeError` with message `argument 'alphabet': 'int' object cannot be converted to 'PyString'`.\n- Non-integer `size` values raise `TypeError`; for example, `size='x'` raises `TypeError` with message `argument 'size': 'str' object cannot be interpreted as an integer`, and `size=1.2` raises the same form for `float`.\n\n### Component: Export relationship\n\nThe custom-alphabet and length behavior is part of the same top-level `generate` callable used for default Nano ID generation. The package root exposes this function in `__all__` as `generate`; no additional public symbol is introduced for custom alphabets or length control.\n\n## Python package export surface\n\n`fastnanoid` exposes a deliberately small Python API: the package root is the canonical user-facing import surface, while the `fastnanoid.uuid` submodule remains a public owner module for UUID helpers and the compiled generator module remains importable for the Rust-backed `generate` function.\n\n### Component: Root package exports\n\n**Public import forms:**\n- **Canonical package import:** `import fastnanoid`\n- **Canonical direct imports:** `from fastnanoid import generate, uuid_to_urlid, urlid_to_uuid`\n\nAfter `import fastnanoid`, the package object must expose these attributes:\n- `fastnanoid.generate`\n- `fastnanoid.urlid_to_uuid`\n- `fastnanoid.uuid_to_urlid`\n\nThe package\u2019s `__all__` is part of the observable export contract and must contain exactly:\n```python\n[\"generate\", \"urlid_to_uuid\", \"uuid_to_urlid\"]\n```\nin that order.\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` or `import fastnanoid` then `fastnanoid.generate`\n\n**Secondary owner path**: `from fastnanoid.fastnanoid import generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Contract:**\n`generate` is the Rust-backed Nano ID generator re-exported at package root. The generation semantics are defined by the Nano ID generation abilities; for this export-surface ability, the important requirement is that the same callable is available from the package root and from the compiled extension module path `fastnanoid.fastnanoid`.\n\n### Component: Public UUID helper submodule and root re-exports\n\nThe UUID helpers are owned by the public importable submodule `fastnanoid.uuid` and are also re-exported at package root. Do not collapse these helpers into root-only functions: both import forms are supported.\n\n**Public import forms:**\n- `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n- `import fastnanoid` then `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n- `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n#### Function: `uuid_to_urlid`\n\n**Import Path**: `from fastnanoid import uuid_to_urlid`; also `from fastnanoid.uuid import uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID value to encode.\n\n**Returns:**\n- `str`: URL-safe base64 representation of the UUID\u2019s 16 raw bytes, without trailing `=` padding.\n\n**Observable behavior:**\n- `uuid_to_urlid(uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"))` returns exactly `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The return value is intended to round-trip through `urlid_to_uuid`.\n- The helper does not define package-specific exception types; invalid argument objects surface the standard exception raised while accessing/encoding the UUID value.\n\n#### Function: `urlid_to_uuid`\n\n**Import Path**: `from fastnanoid import urlid_to_uuid`; also `from fastnanoid.uuid import urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): Unpadded URL-safe base64 UUID string.\n\n**Returns:**\n- `uuid.UUID`: UUID reconstructed from the decoded 16-byte value.\n\n**Observable behavior:**\n- `urlid_to_uuid(\"XZjVeCcxSk22ZnDKFvEKog\")` returns `uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\")`.\n- It is the inverse of `uuid_to_urlid` for values produced by that encoder.\n- The helper does not wrap malformed input in custom errors; standard-library base64 decoding errors and `uuid.UUID` construction errors propagate as-is.\n\n### Component: Typing and package metadata\n\nThe distributed package is typed. Include the PEP 561 marker file at `python/fastnanoid/py.typed` so type checkers recognize the package as typed.\n\nThe extension module needs a stub at `python/fastnanoid/fastnanoid.pyi` exposing the generator signature:\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\nThis stub describes the compiled `fastnanoid.fastnanoid.generate` callable that is re-exported by the root package. The UUID helpers are normal typed Python functions in the public `fastnanoid.uuid` submodule and should remain importable from that submodule as well as from `fastnanoid`.\n\n## UUID URL-safe conversion\n\nThis ability provides compact, URL-safe presentation for existing standard UUID values: encode a `uuid.UUID` into an unpadded base64url string, and decode that string back to the original UUID without introducing a separate ID format.\n\n### Component: Public UUID helper exports\n\nThe UUID helpers are public both from the package root and from the `fastnanoid.uuid` submodule.\n\n**Import Path**: `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n**Import Path**: `import fastnanoid` then use `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n**Import Path**: `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n**Export contract:** the package root exposes `uuid_to_urlid` and `urlid_to_uuid` as package attributes and includes them in `__all__` alongside `generate`. The exact exported-name set is `['generate', 'urlid_to_uuid', 'uuid_to_urlid']`.\n\n### Component: UUID to URL-safe string encoding\n\n#### Function: `uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID object to encode. This helper is intentionally thin and does not parse UUID strings or other UUID-like inputs; callers should pass an actual `uuid.UUID` instance.\n\n**Returns:**\n- `str`: the URL-safe base64 encoding of the UUID's raw 16 bytes, decoded as text and with trailing `=` padding removed.\n\n**Notes (Logic & Behavior):**\n- For valid UUID inputs, the output is always an unpadded 22-character base64url string.\n- The returned alphabet is the URL-safe base64 alphabet, so `-` and `_` may appear instead of `+` and `/`, and no trailing `=` characters are returned.\n- Exact mapping example: `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')` encodes to `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The helper relies on the UUID object's raw byte representation. It should not add permissive coercion from strings or bytes.\n\n### Component: URL-safe string to UUID decoding\n\n#### Function: `urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): A base64url UUID string, normally the unpadded 22-character string produced by `uuid_to_urlid`.\n\n**Returns:**\n- `uuid.UUID`: a UUID reconstructed from the decoded 16-byte value.\n\n**Raises:**\n- `binascii.Error`: propagated from base64 decoding for malformed base64 input in applicable failure modes.\n- `ValueError`: propagated from `uuid.UUID(bytes=...)` when decoding succeeds but does not yield exactly 16 bytes.\n\n**Notes (Logic & Behavior):**\n- The function restores padding before base64url decoding by appending `\"=\" * (len(url) % 4)` to the supplied string.\n- It performs no package-specific validation and does not catch, wrap, or normalize failures from base64 decoding or UUID construction.\n- Exact reverse mapping example: decoding `\"XZjVeCcxSk22ZnDKFvEKog\"` returns `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')`, whose string form is `\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"`.\n\n### Component: Round-trip invariant\n\nFor any valid `uuid.UUID` value `u`, the helper pair must satisfy:\n\n```python\nurlid_to_uuid(uuid_to_urlid(u)) == u\n```\n\nThis workflow is separate from Nano ID generation: it is for applications that already use UUIDs for entropy and storage compatibility but want a shorter URL/display form.", "pypi_name": "fastnanoid", "import_names": [], "passed_ptp": ["tests/test_fastnanoid.py::test_generate"], "failed_ptp": [], "test_binary_archive_b64": "", "expected_coverage_percent": 77.7778, "responses_create_params": {"input": [{"role": "user", "content": "## 1. Overview\n\n`fastnanoid` is a small Python library for generating compact, URL-safe identifiers with low overhead. Its main interface is a Rust-backed Python extension that exposes a `generate()` function compatible with `py-nanoid`, so existing Python code can switch to this package without changing the calling pattern.\n\nThe repository is centered on one job: producing short random IDs for application-facing identifiers such as URLs, tokens, or public object references. The core generator supports the standard Nano ID alphabet by default, while also letting callers choose a custom alphabet and output length. The implementation counts characters rather than bytes, which keeps length behavior consistent even when the alphabet includes multibyte Unicode characters.\n\nIn addition to Nano ID generation, the package includes a small pure-Python UUID conversion surface for workflows that already use `uuid.UUID` values but want a shorter display form. These helpers encode UUID bytes into base64url strings and decode them back to UUID objects.\n\nMajor workflows in this repository are:\n- **Fast Nano ID generation** through the Python API: `from fastnanoid import generate`\n- **Custom ID formats** by supplying a caller-defined alphabet and size\n- **Compact UUID presentation** with `uuid_to_urlid()` and `urlid_to_uuid()`\n- **Typed Python package exports** that present the Rust extension and UUID helpers through a single import path\n\nFor users, `fastnanoid` is primarily a library dependency rather than a CLI or service: you install it, import its functions in Python, and use it directly inside application code.\n\n## Nano ID generation\n\n`fastnanoid` generates compact random identifier strings through a single `generate()` API. The core workflow is to import `generate` from the package root and call it with optional alphabet and length controls; this mirrors the supported `py-nanoid`-style calling pattern without adding global state or builder objects.\n\n### Component: Public generator API\n\n**Import Path**: `from fastnanoid import generate` (canonical public import)\n\n**Also supported**: `from fastnanoid.fastnanoid import generate` for callers that import the extension module directly.\n\n#### Function: `fastnanoid.generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The characters from which the ID is sampled. The default alphabet is URL-friendly and contains digits, uppercase ASCII letters, lowercase ASCII letters, underscore, and hyphen in exactly that order.\n- `size` (`int`, default: `21`): The requested number of output characters. Runtime argument conversion follows the extension boundary: non-negative Python integers are accepted, and values that cannot be interpreted as an unsigned size are rejected.\n\n**Returns:**\n- `str`: A newly generated random string of exactly `size` characters.\n\n**Raises:**\n- `OverflowError` with message `can't convert negative int to unsigned` when `size` is a negative integer.\n- `TypeError` for non-integer `size` values, with messages such as `argument 'size': 'str' object cannot be interpreted as an integer` or `argument 'size': 'float' object cannot be interpreted as an integer` for those representative types.\n- `TypeError` for non-string `alphabet` values, with messages such as `argument 'alphabet': 'bytes' object cannot be converted to 'PyString'` or `argument 'alphabet': 'list' object cannot be converted to 'PyString'` for those representative types.\n- `pyo3_runtime.PanicException` with message `Uniform::new called with `low >= high`` when `alphabet` is the empty string. An empty alphabet is invalid and must not silently fall back to the default alphabet.\n\n**Notes (Logic & Behavior):**\n- `generate()` returns a 21-character string by default.\n- `generate(size=10)` returns a 10-character string; in general the returned string length is exactly the requested `size`.\n- `generate(size=0)` returns the empty string `\"\"`.\n- The result is random; the package does not provide deterministic seeding, repeatable output, or a uniqueness registry. Uniqueness is probabilistic rather than guaranteed per process or globally.\n- Every output character is chosen from `alphabet`. Custom alphabet handling is character-based rather than byte-based, so multibyte Unicode characters count as one possible output character and contribute one character to the requested output length.\n- The supplied alphabet is used as provided: characters are not normalized or deduplicated before sampling. If a caller supplies duplicate characters, those duplicates remain part of the sampling pool.\n- Passing `alphabet=None` is treated the same as omitting `alphabet` and uses the default alphabet. Passing `size=None` is treated the same as omitting `size` and uses the default size of `21`.\n- The supported compatibility surface is the `generate(alphabet=..., size=...)` calling pattern and the package-root import style; no additional Nano ID configuration objects or validation helpers are part of this ability.\n\n### Component: Relationship to package exports\n\nThe package root re-exports the generator so application code should normally use `from fastnanoid import generate`. The direct extension-module import form is available, but the root import is the stable, documented user-facing path and is the one shown in the project README. Details of the compiled extension\u2019s internal registration are not part of the public generation contract.\n\n## Custom alphabet and length control\n\nThis ability describes the parameterized behavior of the existing `generate` API: callers can provide a custom alphabet and/or choose the generated ID length without using a separate builder or helper object.\n\n### Component: Configurable ID generation\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` (canonical public import). A secondary extension-backed import, `from fastnanoid.fastnanoid import generate`, is also available because the package root re-exports that callable.\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Parameters:**\n- `alphabet` (`str`, default: `\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\"`): The sequence of characters used as the sampling pool. It is treated as the provided character sequence, not as a deduplicated mathematical set; repeated characters remain repeated entries in the pool.\n- `size` (`int`, default: `21`): The requested number of output characters.\n\n**Returns:**\n- `str`: A generated ID containing exactly `size` characters for valid non-empty alphabets and non-negative sizes.\n\n**Notes (Logic & Behavior):**\n- Supplying `alphabet` changes only the pool of possible output characters. If `size` is omitted while `alphabet` is supplied, the result length remains the default `21`.\n- Every character in the returned ID is drawn from the supplied alphabet.\n- Length is character-based rather than UTF-8-byte-based. Unicode alphabets, including multibyte characters such as `\"asdf\ud83c\udf0d\"`, still produce strings whose normal Python `len(...)` equals the requested `size`.\n- `size=0` is accepted and returns the empty string `\"\"`.\n- Passing `None` for `alphabet` or `size` behaves like omitting that argument and uses the corresponding default.\n\n**Raises / edge cases:**\n- `alphabet=\"\"` is invalid. The current extension-backed callable surfaces `pyo3_runtime.PanicException` with the message `Uniform::new called with `low >= high``.\n- Negative sizes are rejected during Python-to-extension conversion with `OverflowError`; for example, `size=-1` raises `OverflowError` with message `can't convert negative int to unsigned`.\n- Integers too large for the extension\u2019s unsigned size type raise `OverflowError` with message `int too big to convert`.\n- Non-string `alphabet` values raise `TypeError`; for example, `alphabet=123` raises `TypeError` with message `argument 'alphabet': 'int' object cannot be converted to 'PyString'`.\n- Non-integer `size` values raise `TypeError`; for example, `size='x'` raises `TypeError` with message `argument 'size': 'str' object cannot be interpreted as an integer`, and `size=1.2` raises the same form for `float`.\n\n### Component: Export relationship\n\nThe custom-alphabet and length behavior is part of the same top-level `generate` callable used for default Nano ID generation. The package root exposes this function in `__all__` as `generate`; no additional public symbol is introduced for custom alphabets or length control.\n\n## Python package export surface\n\n`fastnanoid` exposes a deliberately small Python API: the package root is the canonical user-facing import surface, while the `fastnanoid.uuid` submodule remains a public owner module for UUID helpers and the compiled generator module remains importable for the Rust-backed `generate` function.\n\n### Component: Root package exports\n\n**Public import forms:**\n- **Canonical package import:** `import fastnanoid`\n- **Canonical direct imports:** `from fastnanoid import generate, uuid_to_urlid, urlid_to_uuid`\n\nAfter `import fastnanoid`, the package object must expose these attributes:\n- `fastnanoid.generate`\n- `fastnanoid.urlid_to_uuid`\n- `fastnanoid.uuid_to_urlid`\n\nThe package\u2019s `__all__` is part of the observable export contract and must contain exactly:\n```python\n[\"generate\", \"urlid_to_uuid\", \"uuid_to_urlid\"]\n```\nin that order.\n\n#### Function: `fastnanoid.generate`\n\n**Import Path**: `from fastnanoid import generate` or `import fastnanoid` then `fastnanoid.generate`\n\n**Secondary owner path**: `from fastnanoid.fastnanoid import generate`\n\n**Signature:**\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\n**Contract:**\n`generate` is the Rust-backed Nano ID generator re-exported at package root. The generation semantics are defined by the Nano ID generation abilities; for this export-surface ability, the important requirement is that the same callable is available from the package root and from the compiled extension module path `fastnanoid.fastnanoid`.\n\n### Component: Public UUID helper submodule and root re-exports\n\nThe UUID helpers are owned by the public importable submodule `fastnanoid.uuid` and are also re-exported at package root. Do not collapse these helpers into root-only functions: both import forms are supported.\n\n**Public import forms:**\n- `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n- `import fastnanoid` then `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n- `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n#### Function: `uuid_to_urlid`\n\n**Import Path**: `from fastnanoid import uuid_to_urlid`; also `from fastnanoid.uuid import uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID value to encode.\n\n**Returns:**\n- `str`: URL-safe base64 representation of the UUID\u2019s 16 raw bytes, without trailing `=` padding.\n\n**Observable behavior:**\n- `uuid_to_urlid(uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"))` returns exactly `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The return value is intended to round-trip through `urlid_to_uuid`.\n- The helper does not define package-specific exception types; invalid argument objects surface the standard exception raised while accessing/encoding the UUID value.\n\n#### Function: `urlid_to_uuid`\n\n**Import Path**: `from fastnanoid import urlid_to_uuid`; also `from fastnanoid.uuid import urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): Unpadded URL-safe base64 UUID string.\n\n**Returns:**\n- `uuid.UUID`: UUID reconstructed from the decoded 16-byte value.\n\n**Observable behavior:**\n- `urlid_to_uuid(\"XZjVeCcxSk22ZnDKFvEKog\")` returns `uuid.UUID(\"5d98d578-2731-4a4d-b666-70ca16f10aa2\")`.\n- It is the inverse of `uuid_to_urlid` for values produced by that encoder.\n- The helper does not wrap malformed input in custom errors; standard-library base64 decoding errors and `uuid.UUID` construction errors propagate as-is.\n\n### Component: Typing and package metadata\n\nThe distributed package is typed. Include the PEP 561 marker file at `python/fastnanoid/py.typed` so type checkers recognize the package as typed.\n\nThe extension module needs a stub at `python/fastnanoid/fastnanoid.pyi` exposing the generator signature:\n```python\ndef generate(\n alphabet: str = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-\",\n size: int = 21,\n) -> str: ...\n```\n\nThis stub describes the compiled `fastnanoid.fastnanoid.generate` callable that is re-exported by the root package. The UUID helpers are normal typed Python functions in the public `fastnanoid.uuid` submodule and should remain importable from that submodule as well as from `fastnanoid`.\n\n## UUID URL-safe conversion\n\nThis ability provides compact, URL-safe presentation for existing standard UUID values: encode a `uuid.UUID` into an unpadded base64url string, and decode that string back to the original UUID without introducing a separate ID format.\n\n### Component: Public UUID helper exports\n\nThe UUID helpers are public both from the package root and from the `fastnanoid.uuid` submodule.\n\n**Import Path**: `from fastnanoid import uuid_to_urlid, urlid_to_uuid`\n**Import Path**: `import fastnanoid` then use `fastnanoid.uuid_to_urlid(...)` / `fastnanoid.urlid_to_uuid(...)`\n**Import Path**: `from fastnanoid.uuid import uuid_to_urlid, urlid_to_uuid`\n\n**Export contract:** the package root exposes `uuid_to_urlid` and `urlid_to_uuid` as package attributes and includes them in `__all__` alongside `generate`. The exact exported-name set is `['generate', 'urlid_to_uuid', 'uuid_to_urlid']`.\n\n### Component: UUID to URL-safe string encoding\n\n#### Function: `uuid_to_urlid`\n\n**Signature:**\n```python\ndef uuid_to_urlid(uuid_: uuid.UUID) -> str: ...\n```\n\n**Parameters:**\n- `uuid_` (`uuid.UUID`): UUID object to encode. This helper is intentionally thin and does not parse UUID strings or other UUID-like inputs; callers should pass an actual `uuid.UUID` instance.\n\n**Returns:**\n- `str`: the URL-safe base64 encoding of the UUID's raw 16 bytes, decoded as text and with trailing `=` padding removed.\n\n**Notes (Logic & Behavior):**\n- For valid UUID inputs, the output is always an unpadded 22-character base64url string.\n- The returned alphabet is the URL-safe base64 alphabet, so `-` and `_` may appear instead of `+` and `/`, and no trailing `=` characters are returned.\n- Exact mapping example: `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')` encodes to `\"XZjVeCcxSk22ZnDKFvEKog\"`.\n- The helper relies on the UUID object's raw byte representation. It should not add permissive coercion from strings or bytes.\n\n### Component: URL-safe string to UUID decoding\n\n#### Function: `urlid_to_uuid`\n\n**Signature:**\n```python\ndef urlid_to_uuid(url: str) -> uuid.UUID: ...\n```\n\n**Parameters:**\n- `url` (`str`): A base64url UUID string, normally the unpadded 22-character string produced by `uuid_to_urlid`.\n\n**Returns:**\n- `uuid.UUID`: a UUID reconstructed from the decoded 16-byte value.\n\n**Raises:**\n- `binascii.Error`: propagated from base64 decoding for malformed base64 input in applicable failure modes.\n- `ValueError`: propagated from `uuid.UUID(bytes=...)` when decoding succeeds but does not yield exactly 16 bytes.\n\n**Notes (Logic & Behavior):**\n- The function restores padding before base64url decoding by appending `\"=\" * (len(url) % 4)` to the supplied string.\n- It performs no package-specific validation and does not catch, wrap, or normalize failures from base64 decoding or UUID construction.\n- Exact reverse mapping example: decoding `\"XZjVeCcxSk22ZnDKFvEKog\"` returns `uuid.UUID('5d98d578-2731-4a4d-b666-70ca16f10aa2')`, whose string form is `\"5d98d578-2731-4a4d-b666-70ca16f10aa2\"`.\n\n### Component: Round-trip invariant\n\nFor any valid `uuid.UUID` value `u`, the helper pair must satisfy:\n\n```python\nurlid_to_uuid(uuid_to_urlid(u)) == u\n```\n\nThis workflow is separate from Nano ID generation: it is for applications that already use UUIDs for entropy and storage compatibility but want a shorter URL/display form."}]}}
+{"instance_id": "linjackson78_jstyleson_pr3", "repo": "jstyleson", "github_url": "https://github.com/linjackson78/jstyleson", "language": "python", "workdir": "/workspace/jstyleson", "image_ref": "docker.io/aweaiteam/denovoswe:linjackson78_jstyleson_pr3", "base_commit": "8c47cc9e665b3b1744cccfaa7a650de5f3c575dd", "patch": "", "test_patch": "diff --git a/README.md b/README.md\nnew file mode 100644\nindex 0000000..59950e6\n--- /dev/null\n+++ b/README.md\n@@ -0,0 +1,62 @@\n+# jstyleson\n+\n+\n+\n+jstyleson is a python library to parse JSON with js-style comments. Trailing comma is also supported.\n+\n+JSON by standard does not allow comments and trailing comma, and the python standard json module does not offer options to parse such informal JSON.\n+\n+```python\n+import json\n+invalid_json_str = \"\"\"{\n+ // Single-line comment\n+ \"foo\": \"bar\", // Behold that trailing comma\n+ /*\n+ Multi-line comment\n+ */\n+}\n+\"\"\"\n+json.loads(invalid_json_str) # Raise Exception\n+```\n+\n+jstyleson try to make it happy with your js-style commented JSON, by first removing all elements inside (comments and trailing comma), then hand it to the standard json module.\n+\n+jstyleson supports parsing JSON with:\n+\n+* single-line comment\n+* multi-line comment\n+* inline comment\n+* trailing comma\n+\n+# Installation\n+\n+`pip install jstyleson`\n+\n+# Usage\n+\n+jstyleson provide some wrapper function around the standard json module:\n+\n+```python\n+import jstyleson\n+result_dict = jstyleson.loads(invalid_json_str) # OK\n+jstyleson.dumps(result_dict)\n+```\n+\n+Under the hood, jstyleson do nothing but remove all invalid elements via the `dispose` function. So you can invoke it manually like this:\n+\n+`valid_json_str = jstyleson.dispose(invalid_json_str)`\n+\n+# Testing\n+\n+`python setup.py test`\n+\n+# License\n+\n+The MIT License (MIT)\n+Copyright (c) 2016 linjackson\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\ndiff --git a/tests/__init__.py b/tests/__init__.py\nnew file mode 100644\nindex 0000000..e69de29\ndiff --git a/tests/jstyleson_test.py b/tests/jstyleson_test.py\nnew file mode 100644\nindex 0000000..fa847df\n--- /dev/null\n+++ b/tests/jstyleson_test.py\n@@ -0,0 +1,73 @@\n+# -*- coding: utf-8 -*-\n+\n+import unittest\n+import json\n+\n+import jstyleson\n+\n+json_test_case = \"\"\"\n+{\n+ /*asterisk style comment with escape inside\\*/\n+ \"string\": \"string\",\n+ \"string_with_comment_inside\": \"//single line comment and /*multi-line comment*/\",\n+ \"number\": 2,\n+ \"foo\": \"bar\", //inline comment\n+ \"array\": [1,2, /*comments inside array*/ 3],\n+ \"nested_casual_array\": [1, [2.0, 2.5,], 3, {\"key_in_arr\": \"value_in_arr\",},/*trailing comma*/],\n+ //single line comment\n+ /*multi\n+ line\n+ \"comment with many \"quotes\"quotes\"quotes\"\n+ * followed sometime after by a / but that does not end the comment\n+ */\n+ \"object\": {\n+ \"key\": \"\u4e2d\u6587\"\n+ },\n+ \"nested_casual_object\": {\n+ \"key\": \"\u4e2d\u6587\",\n+ \"key_in_obj\": [\"1_in_obj\", \"2_in_obj\",/*trailing comma*/],\n+ \"casual_object\": {\n+ \"key1\": \"value1\",\n+ \"key2\": \"value2\",/*trailing comma*/\n+ },//trailing comma\n+ }\n+ //comment with \u4e2d\u6587\n+}\n+//comment without newline character\"\"\"\n+\n+json_expected = {\n+ \"string\": \"string\",\n+ \"string_with_comment_inside\": \"//single line comment and /*multi-line comment*/\",\n+ \"number\": 2,\n+ \"foo\": \"bar\",\n+ \"array\": [1, 2, 3],\n+ \"nested_casual_array\": [1, [2.0, 2.5], 3, {\"key_in_arr\": \"value_in_arr\"}],\n+ \"object\": {\n+ \"key\": u\"\u4e2d\u6587\"\n+ },\n+ \"nested_casual_object\": {\n+ \"key\": u\"\u4e2d\u6587\",\n+ \"key_in_obj\": [\"1_in_obj\", \"2_in_obj\"],\n+ \"casual_object\": {\n+ \"key1\": \"value1\",\n+ \"key2\": \"value2\"\n+ }\n+ }\n+}\n+\n+\n+class TestDispose(unittest.TestCase):\n+ def test_dispose(self):\n+ disposed_json = jstyleson.dispose(json_test_case)\n+ result = json.loads(disposed_json)\n+ self.assertDictEqual(json_expected, result)\n+ # import timeit\n+ # print timeit.timeit(\"dispose(json_test_case)\", setup=\"from __main__ import dispose, json_test_case\", number=10000)\n+\n+ def test_loads(self):\n+ result = jstyleson.loads(json_test_case)\n+ self.assertDictEqual(json_expected, result)\n+\n+\n+if __name__ == '__main__':\n+ unittest.main()\n", "document": "## 1. Overview\n\n`jstyleson` is a small Python library for reading hand-edited or JavaScript-style JSON that would normally be rejected by the standard `json` module. Its purpose is to bridge the gap between strict JSON and the more relaxed configuration files people often write in practice, especially files that include `//` comments, `/* ... */` block comments, inline comments, or trailing commas.\n\nThe repository is centered on a single Python module that exposes a familiar JSON-like API. On input, `jstyleson` preprocesses text with `dispose()` to strip comments and remove dangling commas while preserving quoted string content, then passes the cleaned result to Python\u2019s built-in `json` parser through `loads()` and `load()`. On output, it also provides matching `dumps()` and `dump()` wrappers so callers can use one module for both tolerant parsing and standard JSON serialization.\n\nMajor workflows include:\n- **Relaxed JSON parsing** through `loads()` and `load()` for strings and file-like objects.\n- **Preprocessing only** through `dispose()` when callers want sanitized JSON text before parsing.\n- **Standard JSON writing** through `dumps()` and `dump()` using the same calling surface as the built-in `json` module.\n\nIn practice, `jstyleson` is primarily used as a lightweight drop-in parsing library for configuration and data files that follow JSON structure but include JavaScript-style conveniences.\n\n## JSON sanitization preprocessing\n\nThis ability turns relaxed, JavaScript-style JSON text into strict JSON text before decoding. The public preprocessing function is `jstyleson.dispose`, which removes supported comments, preserves quoted string contents, and also normalizes dangling commas so the resulting text can be consumed by the standard `json` parser for supported inputs.\n\n### Component: Public sanitizer\n\n#### Function: `jstyleson.dispose`\n\n**Import Path**: `import jstyleson` then access `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str: str) -> str:\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The library is designed for text input (`str`, and `unicode` on Python 2).\n\n**Returns:**\n- Sanitized JSON text. The returned value preserves the input text type family: passing `str` returns `str`; on Python 2, passing `unicode` returns `unicode`.\n\n**Raises:**\n- `jstyleson.dispose` does not define or raise repository-specific exceptions.\n- It does not perform full JSON validation. Malformed JSON, unsupported malformed comment structure, or other syntax problems are left for downstream consumers such as `json.loads` or `jstyleson.loads` to report if the caller parses the returned text.\n\n**Sanitization rules:**\n- `//` starts a single-line comment only when it appears outside a double-quoted JSON string. The comment content is removed through the terminating newline; if end-of-file is reached first, the remainder of the input is removed.\n- `/* ... */` starts and ends a multi-line comment only when the opening marker appears outside a double-quoted JSON string. When a closing `*/` is found, the whole block comment span is removed.\n- Comment markers inside quoted strings are preserved literally. For example, a JSON string value containing `//single line comment and /*multi-line comment*/` remains that same string value after sanitization and parsing.\n- Escaped quotes inside strings do not terminate the string, so comment recognition must remain disabled until the actual closing quote.\n- A `/` outside strings that is not followed by `/` or `*` is not a comment starter and remains in the output unchanged.\n- A dangling comma immediately before `]` or `}` is removed. This applies when whitespace or already-removed comment text appears between the comma and the closing delimiter, and it applies to both arrays and objects, including nested arrays/objects.\n- Unicode content in values is preserved. Unicode text inside comments is removed along with the comment.\n\n**Output contract and parser relationship:**\n- For supported relaxed JSON constructs\u2014JavaScript-style comments and trailing commas before object/array closers\u2014`jstyleson.dispose` returns standard JSON text suitable for the standard library parser.\n- `jstyleson.loads` uses this sanitizer as its preprocessing step before delegating to `json.loads`, so `dispose` is the shared low-level contract for comment-tolerant parsing.\n- The sanitizer removes the comment spans themselves rather than replacing them with semantic tokens; callers should not rely on comment text, comment delimiters, or single-line comment newlines being preserved.\n\n**Representative supported cases:**\n- Inline property comments such as `\"foo\": \"bar\", // comment`.\n- Comments embedded between array elements, such as `[1, 2, /* comment */ 3]`.\n- Final `//` comments without a trailing newline.\n- Nested relaxed structures with trailing commas, such as `[2.0, 2.5,]`, `{ \"key\": \"value\", }`, and a comma followed by a removed block comment before `]` or `}`.\n\n## Trailing comma normalization\n\nTrailing comma normalization is part of jstyleson\u2019s public preprocessing workflow: relaxed JSON text is cleaned so dangling commas before array or object terminators do not prevent later parsing by Python\u2019s standard `json` module.\n\n### Component: Public preprocessing surface\n\n**Import Path**: `import jstyleson` then call `jstyleson.dispose(...)`\n\n#### Function: `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str):\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The public docstring describes this as accepting `str` or `unicode` input.\n\n**Returns:**\n- Sanitized JSON text of the same general string kind as the input. It is not parsed data; callers that want Python objects must pass the returned text to `json.loads` or use `jstyleson.loads`.\n\n**Raises:**\n- No jstyleson-specific exception is introduced for trailing-comma normalization. The function does not perform full JSON validation; invalid JSON that remains after preprocessing is left for a JSON parser to reject.\n\n**Trailing-comma contract:**\n- When preprocessing encounters a closing container delimiter `]` or `}` outside quoted strings and outside comments, it removes a comma if that comma is the nearest preceding significant character.\n- Whitespace between the comma and closing delimiter is ignored for this decision.\n- Comment content removed by the same preprocessing operation is also ignored for this decision, so inputs such as `[..., /* comment */]` and `{..., /* comment */}` normalize as trailing-comma cases.\n- The rule applies equally to arrays and objects, including nested arrays and nested objects.\n\n**Preservation rules:**\n- Commas inside quoted JSON strings are preserved exactly as string content.\n- Commas that separate values or object members are preserved; only commas whose next significant token is a closing `]` or `}` are removed.\n- There is no separate option, mode, or public API for enabling this behavior; it is always part of `dispose`.\n\n**Representative supported shapes:**\n- Array endings such as `[2.0, 2.5,]` become valid array endings.\n- Object endings such as `{\"key_in_arr\": \"value_in_arr\",}` become valid object endings.\n- Nested endings such as `[\"1_in_obj\", \"2_in_obj\", /* trailing comma */]` and `{\"key2\": \"value2\", /* trailing comma */}` are normalized before parsing.\n\nA private comma-removal helper may be used internally, but it is not part of the public API and should not be treated as an importable compatibility surface.\n\n### Component: Parsing entry point that inherits normalization\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n#### Function: `jstyleson.loads`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Behavior for this ability:**\n- `jstyleson.loads` preprocesses `text` with `jstyleson.dispose` before delegating to `json.loads`.\n- As a result, callers using `loads` automatically get the same trailing-comma normalization described above.\n- Keyword arguments are forwarded to the standard `json.loads` call.\n- Parsing failures after preprocessing are not translated into custom jstyleson errors; they propagate from the standard JSON decoder.\n\n## Comment-tolerant JSON parsing\n\nThis ability exposes relaxed JSON decoding through top-level `jstyleson` module functions. `jstyleson.loads` accepts text that can first be normalized by `dispose`\u2014including JavaScript-style comments and trailing commas\u2014and then applies Python\u2019s standard JSON decoding semantics; `jstyleson.load` provides the same behavior for file-like objects.\n\n### Component: String-based relaxed JSON decoding\n\n#### Function: `jstyleson.loads`\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Parameters:**\n- `text`: JSON source text accepted by `jstyleson.dispose`. It should be text suitable for character-by-character preprocessing, not an arbitrary object that merely stringifies to JSON.\n- `**kwargs`: Any keyword arguments intended for `json.loads`. The wrapper passes all keyword arguments unchanged after preprocessing; it does not interpret, validate, rename, or adapt them.\n\n**Returns:**\n- Exactly the object returned by Python\u2019s `json.loads` when called on the cleaned text: commonly a `dict`, `list`, `str`, number, boolean, or `None` depending on the JSON document and decoder options.\n- The decoded object is not post-processed by `jstyleson`.\n\n**Raises:**\n- `jstyleson.loads` catches nothing. Exceptions from `dispose` and exceptions from the underlying standard-library `json.loads` call propagate unchanged.\n- There are no custom repository-specific parsing exceptions for this wrapper.\n\n**Notes (Logic & Behavior):**\n- The only relaxed-syntax support provided by `jstyleson.loads` is the preprocessing performed by `dispose`; after that, decoding follows standard `json.loads` behavior.\n- Supported relaxed input therefore matches the preprocessing contract: `//` single-line comments, `/* ... */` multi-line comments, inline comments, and trailing commas before object or array closers are tolerated when `dispose` can normalize them.\n- Comment delimiters inside quoted JSON strings remain part of the resulting string values because they are preserved by preprocessing.\n- Unicode content that survives preprocessing is decoded according to the normal standard-library JSON rules.\n- Standard decoder options such as hooks or numeric parsing controls are available through `**kwargs` exactly as they are for `json.loads`.\n\n### Component: File-based relaxed JSON decoding\n\n#### Function: `jstyleson.load`\n\n**Import Path**: `import jstyleson` then call `jstyleson.load(...)`\n\n**Signature:**\n```python\ndef load(fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `fp`: A file-like object with a `.read()` method. The method is called to obtain the complete text that will be parsed.\n- `**kwargs`: Keyword arguments forwarded unchanged to `jstyleson.loads`, and from there to `json.loads` after preprocessing.\n\n**Returns:**\n- Exactly the result of parsing the text returned by `fp.read()` with `jstyleson.loads` and the same keyword arguments.\n\n**Raises:**\n- Exceptions from `fp.read()` propagate unchanged.\n- Exceptions from `jstyleson.loads`, including preprocessing errors and standard-library JSON decoding errors, propagate unchanged.\n- The function does not wrap or translate exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.load` is the file-oriented companion to `jstyleson.loads`; it reads the file-like object first, then applies the same relaxed parsing path as the string API.\n- It does not stream incrementally and does not call `json.load` directly; its observable behavior is equivalent to reading all text from `fp` and decoding that text through `jstyleson.loads` with the supplied `**kwargs`.\n\n### Shared parsing semantics\n\n- Both parsing entry points are top-level functions on the `jstyleson` module.\n- Relaxed syntax acceptance is limited to what `dispose` normalizes before standard decoding. Syntax that remains invalid after preprocessing is handled by Python\u2019s `json.loads` in the usual way.\n- Neither function performs custom validation, custom object transformation, or result normalization beyond forwarding to the standard JSON decoder after preprocessing.\n\n## Standard JSON serialization wrappers\n\nThis ability provides the writing side of the `jstyleson` API. The parser functions accept relaxed JSON by preprocessing input, but the serialization functions are standard-JSON pass-through wrappers exposed directly on the top-level importable `jstyleson` module.\n\n### Component: Top-level serialization API\n\n**Public Import Form:**\n```python\nimport jstyleson\n```\n\nCallers access the functions as module attributes: `jstyleson.dumps(...)` and `jstyleson.dump(...)`. The project is distributed as a top-level module named `jstyleson`; these serialization names are not provided through a separate submodule namespace.\n\n#### Function: `jstyleson.dumps`\n\n**Signature:**\n```python\ndef dumps(obj, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dumps`. Optional serializer settings must be supplied as keyword arguments; the wrapper\u2019s public signature only accepts `obj` positionally.\n\n**Returns:**\n- The JSON string returned by `json.dumps(obj, **kwargs)`.\n\n**Raises:**\n- The wrapper does not catch, wrap, or translate exceptions. Any `TypeError`, `ValueError`, or other exception raised by the standard-library serializer propagates unchanged.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dumps` is a pure serialization wrapper. It does not call `dispose`, `loads`, or `load`.\n- It performs no relaxed-JSON handling, comment handling, trailing-comma handling, output normalization, validation, or postprocessing of the returned string.\n- Formatting defaults, encoding behavior, key ordering, separators, custom encoders, and all other serializer semantics are those of the active Python standard library `json.dumps` implementation for the supplied keyword arguments.\n\n#### Function: `jstyleson.dump`\n\n**Signature:**\n```python\ndef dump(obj, fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `fp`: Writable file-like object accepted by `json.dump`; the wrapper performs no separate validation of this object.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dump`. Optional serializer settings must be supplied as keyword arguments after `obj` and `fp`.\n\n**Returns:**\n- `None`. This is the observable return value of `jstyleson.dump(...)` after writing through the standard-library serializer.\n\n**Raises:**\n- Exceptions from `json.dump(obj, fp, **kwargs)` or from the file-like object\u2019s write behavior propagate unchanged. The wrapper does not convert them to repository-specific exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dump` writes using the standard `json.dump` behavior and does not preprocess, postprocess, flush, close, or otherwise manage the stream beyond the underlying serializer call.\n- It does not call `dispose`, `loads`, or `load`, and it does not add any custom relaxed-JSON serialization layer.\n\n### Component: Relationship to relaxed parsing\n\n`jstyleson.dumps` and `jstyleson.dump` exist for API symmetry with `jstyleson.loads` and `jstyleson.load`, but they are independent of the relaxed parsing pipeline. Comment stripping and trailing-comma normalization are input-only behaviors implemented by `dispose` and used by the parsing helpers; serialization depends only on the standard `json` module\u2019s writer behavior.", "problem_statement": "## 1. Overview\n\n`jstyleson` is a small Python library for reading hand-edited or JavaScript-style JSON that would normally be rejected by the standard `json` module. Its purpose is to bridge the gap between strict JSON and the more relaxed configuration files people often write in practice, especially files that include `//` comments, `/* ... */` block comments, inline comments, or trailing commas.\n\nThe repository is centered on a single Python module that exposes a familiar JSON-like API. On input, `jstyleson` preprocesses text with `dispose()` to strip comments and remove dangling commas while preserving quoted string content, then passes the cleaned result to Python\u2019s built-in `json` parser through `loads()` and `load()`. On output, it also provides matching `dumps()` and `dump()` wrappers so callers can use one module for both tolerant parsing and standard JSON serialization.\n\nMajor workflows include:\n- **Relaxed JSON parsing** through `loads()` and `load()` for strings and file-like objects.\n- **Preprocessing only** through `dispose()` when callers want sanitized JSON text before parsing.\n- **Standard JSON writing** through `dumps()` and `dump()` using the same calling surface as the built-in `json` module.\n\nIn practice, `jstyleson` is primarily used as a lightweight drop-in parsing library for configuration and data files that follow JSON structure but include JavaScript-style conveniences.\n\n## JSON sanitization preprocessing\n\nThis ability turns relaxed, JavaScript-style JSON text into strict JSON text before decoding. The public preprocessing function is `jstyleson.dispose`, which removes supported comments, preserves quoted string contents, and also normalizes dangling commas so the resulting text can be consumed by the standard `json` parser for supported inputs.\n\n### Component: Public sanitizer\n\n#### Function: `jstyleson.dispose`\n\n**Import Path**: `import jstyleson` then access `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str: str) -> str:\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The library is designed for text input (`str`, and `unicode` on Python 2).\n\n**Returns:**\n- Sanitized JSON text. The returned value preserves the input text type family: passing `str` returns `str`; on Python 2, passing `unicode` returns `unicode`.\n\n**Raises:**\n- `jstyleson.dispose` does not define or raise repository-specific exceptions.\n- It does not perform full JSON validation. Malformed JSON, unsupported malformed comment structure, or other syntax problems are left for downstream consumers such as `json.loads` or `jstyleson.loads` to report if the caller parses the returned text.\n\n**Sanitization rules:**\n- `//` starts a single-line comment only when it appears outside a double-quoted JSON string. The comment content is removed through the terminating newline; if end-of-file is reached first, the remainder of the input is removed.\n- `/* ... */` starts and ends a multi-line comment only when the opening marker appears outside a double-quoted JSON string. When a closing `*/` is found, the whole block comment span is removed.\n- Comment markers inside quoted strings are preserved literally. For example, a JSON string value containing `//single line comment and /*multi-line comment*/` remains that same string value after sanitization and parsing.\n- Escaped quotes inside strings do not terminate the string, so comment recognition must remain disabled until the actual closing quote.\n- A `/` outside strings that is not followed by `/` or `*` is not a comment starter and remains in the output unchanged.\n- A dangling comma immediately before `]` or `}` is removed. This applies when whitespace or already-removed comment text appears between the comma and the closing delimiter, and it applies to both arrays and objects, including nested arrays/objects.\n- Unicode content in values is preserved. Unicode text inside comments is removed along with the comment.\n\n**Output contract and parser relationship:**\n- For supported relaxed JSON constructs\u2014JavaScript-style comments and trailing commas before object/array closers\u2014`jstyleson.dispose` returns standard JSON text suitable for the standard library parser.\n- `jstyleson.loads` uses this sanitizer as its preprocessing step before delegating to `json.loads`, so `dispose` is the shared low-level contract for comment-tolerant parsing.\n- The sanitizer removes the comment spans themselves rather than replacing them with semantic tokens; callers should not rely on comment text, comment delimiters, or single-line comment newlines being preserved.\n\n**Representative supported cases:**\n- Inline property comments such as `\"foo\": \"bar\", // comment`.\n- Comments embedded between array elements, such as `[1, 2, /* comment */ 3]`.\n- Final `//` comments without a trailing newline.\n- Nested relaxed structures with trailing commas, such as `[2.0, 2.5,]`, `{ \"key\": \"value\", }`, and a comma followed by a removed block comment before `]` or `}`.\n\n## Trailing comma normalization\n\nTrailing comma normalization is part of jstyleson\u2019s public preprocessing workflow: relaxed JSON text is cleaned so dangling commas before array or object terminators do not prevent later parsing by Python\u2019s standard `json` module.\n\n### Component: Public preprocessing surface\n\n**Import Path**: `import jstyleson` then call `jstyleson.dispose(...)`\n\n#### Function: `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str):\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The public docstring describes this as accepting `str` or `unicode` input.\n\n**Returns:**\n- Sanitized JSON text of the same general string kind as the input. It is not parsed data; callers that want Python objects must pass the returned text to `json.loads` or use `jstyleson.loads`.\n\n**Raises:**\n- No jstyleson-specific exception is introduced for trailing-comma normalization. The function does not perform full JSON validation; invalid JSON that remains after preprocessing is left for a JSON parser to reject.\n\n**Trailing-comma contract:**\n- When preprocessing encounters a closing container delimiter `]` or `}` outside quoted strings and outside comments, it removes a comma if that comma is the nearest preceding significant character.\n- Whitespace between the comma and closing delimiter is ignored for this decision.\n- Comment content removed by the same preprocessing operation is also ignored for this decision, so inputs such as `[..., /* comment */]` and `{..., /* comment */}` normalize as trailing-comma cases.\n- The rule applies equally to arrays and objects, including nested arrays and nested objects.\n\n**Preservation rules:**\n- Commas inside quoted JSON strings are preserved exactly as string content.\n- Commas that separate values or object members are preserved; only commas whose next significant token is a closing `]` or `}` are removed.\n- There is no separate option, mode, or public API for enabling this behavior; it is always part of `dispose`.\n\n**Representative supported shapes:**\n- Array endings such as `[2.0, 2.5,]` become valid array endings.\n- Object endings such as `{\"key_in_arr\": \"value_in_arr\",}` become valid object endings.\n- Nested endings such as `[\"1_in_obj\", \"2_in_obj\", /* trailing comma */]` and `{\"key2\": \"value2\", /* trailing comma */}` are normalized before parsing.\n\nA private comma-removal helper may be used internally, but it is not part of the public API and should not be treated as an importable compatibility surface.\n\n### Component: Parsing entry point that inherits normalization\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n#### Function: `jstyleson.loads`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Behavior for this ability:**\n- `jstyleson.loads` preprocesses `text` with `jstyleson.dispose` before delegating to `json.loads`.\n- As a result, callers using `loads` automatically get the same trailing-comma normalization described above.\n- Keyword arguments are forwarded to the standard `json.loads` call.\n- Parsing failures after preprocessing are not translated into custom jstyleson errors; they propagate from the standard JSON decoder.\n\n## Comment-tolerant JSON parsing\n\nThis ability exposes relaxed JSON decoding through top-level `jstyleson` module functions. `jstyleson.loads` accepts text that can first be normalized by `dispose`\u2014including JavaScript-style comments and trailing commas\u2014and then applies Python\u2019s standard JSON decoding semantics; `jstyleson.load` provides the same behavior for file-like objects.\n\n### Component: String-based relaxed JSON decoding\n\n#### Function: `jstyleson.loads`\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Parameters:**\n- `text`: JSON source text accepted by `jstyleson.dispose`. It should be text suitable for character-by-character preprocessing, not an arbitrary object that merely stringifies to JSON.\n- `**kwargs`: Any keyword arguments intended for `json.loads`. The wrapper passes all keyword arguments unchanged after preprocessing; it does not interpret, validate, rename, or adapt them.\n\n**Returns:**\n- Exactly the object returned by Python\u2019s `json.loads` when called on the cleaned text: commonly a `dict`, `list`, `str`, number, boolean, or `None` depending on the JSON document and decoder options.\n- The decoded object is not post-processed by `jstyleson`.\n\n**Raises:**\n- `jstyleson.loads` catches nothing. Exceptions from `dispose` and exceptions from the underlying standard-library `json.loads` call propagate unchanged.\n- There are no custom repository-specific parsing exceptions for this wrapper.\n\n**Notes (Logic & Behavior):**\n- The only relaxed-syntax support provided by `jstyleson.loads` is the preprocessing performed by `dispose`; after that, decoding follows standard `json.loads` behavior.\n- Supported relaxed input therefore matches the preprocessing contract: `//` single-line comments, `/* ... */` multi-line comments, inline comments, and trailing commas before object or array closers are tolerated when `dispose` can normalize them.\n- Comment delimiters inside quoted JSON strings remain part of the resulting string values because they are preserved by preprocessing.\n- Unicode content that survives preprocessing is decoded according to the normal standard-library JSON rules.\n- Standard decoder options such as hooks or numeric parsing controls are available through `**kwargs` exactly as they are for `json.loads`.\n\n### Component: File-based relaxed JSON decoding\n\n#### Function: `jstyleson.load`\n\n**Import Path**: `import jstyleson` then call `jstyleson.load(...)`\n\n**Signature:**\n```python\ndef load(fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `fp`: A file-like object with a `.read()` method. The method is called to obtain the complete text that will be parsed.\n- `**kwargs`: Keyword arguments forwarded unchanged to `jstyleson.loads`, and from there to `json.loads` after preprocessing.\n\n**Returns:**\n- Exactly the result of parsing the text returned by `fp.read()` with `jstyleson.loads` and the same keyword arguments.\n\n**Raises:**\n- Exceptions from `fp.read()` propagate unchanged.\n- Exceptions from `jstyleson.loads`, including preprocessing errors and standard-library JSON decoding errors, propagate unchanged.\n- The function does not wrap or translate exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.load` is the file-oriented companion to `jstyleson.loads`; it reads the file-like object first, then applies the same relaxed parsing path as the string API.\n- It does not stream incrementally and does not call `json.load` directly; its observable behavior is equivalent to reading all text from `fp` and decoding that text through `jstyleson.loads` with the supplied `**kwargs`.\n\n### Shared parsing semantics\n\n- Both parsing entry points are top-level functions on the `jstyleson` module.\n- Relaxed syntax acceptance is limited to what `dispose` normalizes before standard decoding. Syntax that remains invalid after preprocessing is handled by Python\u2019s `json.loads` in the usual way.\n- Neither function performs custom validation, custom object transformation, or result normalization beyond forwarding to the standard JSON decoder after preprocessing.\n\n## Standard JSON serialization wrappers\n\nThis ability provides the writing side of the `jstyleson` API. The parser functions accept relaxed JSON by preprocessing input, but the serialization functions are standard-JSON pass-through wrappers exposed directly on the top-level importable `jstyleson` module.\n\n### Component: Top-level serialization API\n\n**Public Import Form:**\n```python\nimport jstyleson\n```\n\nCallers access the functions as module attributes: `jstyleson.dumps(...)` and `jstyleson.dump(...)`. The project is distributed as a top-level module named `jstyleson`; these serialization names are not provided through a separate submodule namespace.\n\n#### Function: `jstyleson.dumps`\n\n**Signature:**\n```python\ndef dumps(obj, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dumps`. Optional serializer settings must be supplied as keyword arguments; the wrapper\u2019s public signature only accepts `obj` positionally.\n\n**Returns:**\n- The JSON string returned by `json.dumps(obj, **kwargs)`.\n\n**Raises:**\n- The wrapper does not catch, wrap, or translate exceptions. Any `TypeError`, `ValueError`, or other exception raised by the standard-library serializer propagates unchanged.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dumps` is a pure serialization wrapper. It does not call `dispose`, `loads`, or `load`.\n- It performs no relaxed-JSON handling, comment handling, trailing-comma handling, output normalization, validation, or postprocessing of the returned string.\n- Formatting defaults, encoding behavior, key ordering, separators, custom encoders, and all other serializer semantics are those of the active Python standard library `json.dumps` implementation for the supplied keyword arguments.\n\n#### Function: `jstyleson.dump`\n\n**Signature:**\n```python\ndef dump(obj, fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `fp`: Writable file-like object accepted by `json.dump`; the wrapper performs no separate validation of this object.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dump`. Optional serializer settings must be supplied as keyword arguments after `obj` and `fp`.\n\n**Returns:**\n- `None`. This is the observable return value of `jstyleson.dump(...)` after writing through the standard-library serializer.\n\n**Raises:**\n- Exceptions from `json.dump(obj, fp, **kwargs)` or from the file-like object\u2019s write behavior propagate unchanged. The wrapper does not convert them to repository-specific exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dump` writes using the standard `json.dump` behavior and does not preprocess, postprocess, flush, close, or otherwise manage the stream beyond the underlying serializer call.\n- It does not call `dispose`, `loads`, or `load`, and it does not add any custom relaxed-JSON serialization layer.\n\n### Component: Relationship to relaxed parsing\n\n`jstyleson.dumps` and `jstyleson.dump` exist for API symmetry with `jstyleson.loads` and `jstyleson.load`, but they are independent of the relaxed parsing pipeline. Comment stripping and trailing-comma normalization are input-only behaviors implemented by `dispose` and used by the parsing helpers; serialization depends only on the standard `json` module\u2019s writer behavior.", "pypi_name": "jstyleson", "import_names": ["jstyleson"], "passed_ptp": ["tests/jstyleson_test.py::TestDispose::test_dispose", "tests/jstyleson_test.py::TestDispose::test_loads"], "failed_ptp": [], "test_binary_archive_b64": "", "expected_coverage_percent": 89.4118, "responses_create_params": {"input": [{"role": "user", "content": "## 1. Overview\n\n`jstyleson` is a small Python library for reading hand-edited or JavaScript-style JSON that would normally be rejected by the standard `json` module. Its purpose is to bridge the gap between strict JSON and the more relaxed configuration files people often write in practice, especially files that include `//` comments, `/* ... */` block comments, inline comments, or trailing commas.\n\nThe repository is centered on a single Python module that exposes a familiar JSON-like API. On input, `jstyleson` preprocesses text with `dispose()` to strip comments and remove dangling commas while preserving quoted string content, then passes the cleaned result to Python\u2019s built-in `json` parser through `loads()` and `load()`. On output, it also provides matching `dumps()` and `dump()` wrappers so callers can use one module for both tolerant parsing and standard JSON serialization.\n\nMajor workflows include:\n- **Relaxed JSON parsing** through `loads()` and `load()` for strings and file-like objects.\n- **Preprocessing only** through `dispose()` when callers want sanitized JSON text before parsing.\n- **Standard JSON writing** through `dumps()` and `dump()` using the same calling surface as the built-in `json` module.\n\nIn practice, `jstyleson` is primarily used as a lightweight drop-in parsing library for configuration and data files that follow JSON structure but include JavaScript-style conveniences.\n\n## JSON sanitization preprocessing\n\nThis ability turns relaxed, JavaScript-style JSON text into strict JSON text before decoding. The public preprocessing function is `jstyleson.dispose`, which removes supported comments, preserves quoted string contents, and also normalizes dangling commas so the resulting text can be consumed by the standard `json` parser for supported inputs.\n\n### Component: Public sanitizer\n\n#### Function: `jstyleson.dispose`\n\n**Import Path**: `import jstyleson` then access `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str: str) -> str:\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The library is designed for text input (`str`, and `unicode` on Python 2).\n\n**Returns:**\n- Sanitized JSON text. The returned value preserves the input text type family: passing `str` returns `str`; on Python 2, passing `unicode` returns `unicode`.\n\n**Raises:**\n- `jstyleson.dispose` does not define or raise repository-specific exceptions.\n- It does not perform full JSON validation. Malformed JSON, unsupported malformed comment structure, or other syntax problems are left for downstream consumers such as `json.loads` or `jstyleson.loads` to report if the caller parses the returned text.\n\n**Sanitization rules:**\n- `//` starts a single-line comment only when it appears outside a double-quoted JSON string. The comment content is removed through the terminating newline; if end-of-file is reached first, the remainder of the input is removed.\n- `/* ... */` starts and ends a multi-line comment only when the opening marker appears outside a double-quoted JSON string. When a closing `*/` is found, the whole block comment span is removed.\n- Comment markers inside quoted strings are preserved literally. For example, a JSON string value containing `//single line comment and /*multi-line comment*/` remains that same string value after sanitization and parsing.\n- Escaped quotes inside strings do not terminate the string, so comment recognition must remain disabled until the actual closing quote.\n- A `/` outside strings that is not followed by `/` or `*` is not a comment starter and remains in the output unchanged.\n- A dangling comma immediately before `]` or `}` is removed. This applies when whitespace or already-removed comment text appears between the comma and the closing delimiter, and it applies to both arrays and objects, including nested arrays/objects.\n- Unicode content in values is preserved. Unicode text inside comments is removed along with the comment.\n\n**Output contract and parser relationship:**\n- For supported relaxed JSON constructs\u2014JavaScript-style comments and trailing commas before object/array closers\u2014`jstyleson.dispose` returns standard JSON text suitable for the standard library parser.\n- `jstyleson.loads` uses this sanitizer as its preprocessing step before delegating to `json.loads`, so `dispose` is the shared low-level contract for comment-tolerant parsing.\n- The sanitizer removes the comment spans themselves rather than replacing them with semantic tokens; callers should not rely on comment text, comment delimiters, or single-line comment newlines being preserved.\n\n**Representative supported cases:**\n- Inline property comments such as `\"foo\": \"bar\", // comment`.\n- Comments embedded between array elements, such as `[1, 2, /* comment */ 3]`.\n- Final `//` comments without a trailing newline.\n- Nested relaxed structures with trailing commas, such as `[2.0, 2.5,]`, `{ \"key\": \"value\", }`, and a comma followed by a removed block comment before `]` or `}`.\n\n## Trailing comma normalization\n\nTrailing comma normalization is part of jstyleson\u2019s public preprocessing workflow: relaxed JSON text is cleaned so dangling commas before array or object terminators do not prevent later parsing by Python\u2019s standard `json` module.\n\n### Component: Public preprocessing surface\n\n**Import Path**: `import jstyleson` then call `jstyleson.dispose(...)`\n\n#### Function: `jstyleson.dispose`\n\n**Signature:**\n```python\ndef dispose(json_str):\n ...\n```\n\n**Parameters:**\n- `json_str`: JSON-like source text. The public docstring describes this as accepting `str` or `unicode` input.\n\n**Returns:**\n- Sanitized JSON text of the same general string kind as the input. It is not parsed data; callers that want Python objects must pass the returned text to `json.loads` or use `jstyleson.loads`.\n\n**Raises:**\n- No jstyleson-specific exception is introduced for trailing-comma normalization. The function does not perform full JSON validation; invalid JSON that remains after preprocessing is left for a JSON parser to reject.\n\n**Trailing-comma contract:**\n- When preprocessing encounters a closing container delimiter `]` or `}` outside quoted strings and outside comments, it removes a comma if that comma is the nearest preceding significant character.\n- Whitespace between the comma and closing delimiter is ignored for this decision.\n- Comment content removed by the same preprocessing operation is also ignored for this decision, so inputs such as `[..., /* comment */]` and `{..., /* comment */}` normalize as trailing-comma cases.\n- The rule applies equally to arrays and objects, including nested arrays and nested objects.\n\n**Preservation rules:**\n- Commas inside quoted JSON strings are preserved exactly as string content.\n- Commas that separate values or object members are preserved; only commas whose next significant token is a closing `]` or `}` are removed.\n- There is no separate option, mode, or public API for enabling this behavior; it is always part of `dispose`.\n\n**Representative supported shapes:**\n- Array endings such as `[2.0, 2.5,]` become valid array endings.\n- Object endings such as `{\"key_in_arr\": \"value_in_arr\",}` become valid object endings.\n- Nested endings such as `[\"1_in_obj\", \"2_in_obj\", /* trailing comma */]` and `{\"key2\": \"value2\", /* trailing comma */}` are normalized before parsing.\n\nA private comma-removal helper may be used internally, but it is not part of the public API and should not be treated as an importable compatibility surface.\n\n### Component: Parsing entry point that inherits normalization\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n#### Function: `jstyleson.loads`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Behavior for this ability:**\n- `jstyleson.loads` preprocesses `text` with `jstyleson.dispose` before delegating to `json.loads`.\n- As a result, callers using `loads` automatically get the same trailing-comma normalization described above.\n- Keyword arguments are forwarded to the standard `json.loads` call.\n- Parsing failures after preprocessing are not translated into custom jstyleson errors; they propagate from the standard JSON decoder.\n\n## Comment-tolerant JSON parsing\n\nThis ability exposes relaxed JSON decoding through top-level `jstyleson` module functions. `jstyleson.loads` accepts text that can first be normalized by `dispose`\u2014including JavaScript-style comments and trailing commas\u2014and then applies Python\u2019s standard JSON decoding semantics; `jstyleson.load` provides the same behavior for file-like objects.\n\n### Component: String-based relaxed JSON decoding\n\n#### Function: `jstyleson.loads`\n\n**Import Path**: `import jstyleson` then call `jstyleson.loads(...)`\n\n**Signature:**\n```python\ndef loads(text, **kwargs):\n ...\n```\n\n**Parameters:**\n- `text`: JSON source text accepted by `jstyleson.dispose`. It should be text suitable for character-by-character preprocessing, not an arbitrary object that merely stringifies to JSON.\n- `**kwargs`: Any keyword arguments intended for `json.loads`. The wrapper passes all keyword arguments unchanged after preprocessing; it does not interpret, validate, rename, or adapt them.\n\n**Returns:**\n- Exactly the object returned by Python\u2019s `json.loads` when called on the cleaned text: commonly a `dict`, `list`, `str`, number, boolean, or `None` depending on the JSON document and decoder options.\n- The decoded object is not post-processed by `jstyleson`.\n\n**Raises:**\n- `jstyleson.loads` catches nothing. Exceptions from `dispose` and exceptions from the underlying standard-library `json.loads` call propagate unchanged.\n- There are no custom repository-specific parsing exceptions for this wrapper.\n\n**Notes (Logic & Behavior):**\n- The only relaxed-syntax support provided by `jstyleson.loads` is the preprocessing performed by `dispose`; after that, decoding follows standard `json.loads` behavior.\n- Supported relaxed input therefore matches the preprocessing contract: `//` single-line comments, `/* ... */` multi-line comments, inline comments, and trailing commas before object or array closers are tolerated when `dispose` can normalize them.\n- Comment delimiters inside quoted JSON strings remain part of the resulting string values because they are preserved by preprocessing.\n- Unicode content that survives preprocessing is decoded according to the normal standard-library JSON rules.\n- Standard decoder options such as hooks or numeric parsing controls are available through `**kwargs` exactly as they are for `json.loads`.\n\n### Component: File-based relaxed JSON decoding\n\n#### Function: `jstyleson.load`\n\n**Import Path**: `import jstyleson` then call `jstyleson.load(...)`\n\n**Signature:**\n```python\ndef load(fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `fp`: A file-like object with a `.read()` method. The method is called to obtain the complete text that will be parsed.\n- `**kwargs`: Keyword arguments forwarded unchanged to `jstyleson.loads`, and from there to `json.loads` after preprocessing.\n\n**Returns:**\n- Exactly the result of parsing the text returned by `fp.read()` with `jstyleson.loads` and the same keyword arguments.\n\n**Raises:**\n- Exceptions from `fp.read()` propagate unchanged.\n- Exceptions from `jstyleson.loads`, including preprocessing errors and standard-library JSON decoding errors, propagate unchanged.\n- The function does not wrap or translate exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.load` is the file-oriented companion to `jstyleson.loads`; it reads the file-like object first, then applies the same relaxed parsing path as the string API.\n- It does not stream incrementally and does not call `json.load` directly; its observable behavior is equivalent to reading all text from `fp` and decoding that text through `jstyleson.loads` with the supplied `**kwargs`.\n\n### Shared parsing semantics\n\n- Both parsing entry points are top-level functions on the `jstyleson` module.\n- Relaxed syntax acceptance is limited to what `dispose` normalizes before standard decoding. Syntax that remains invalid after preprocessing is handled by Python\u2019s `json.loads` in the usual way.\n- Neither function performs custom validation, custom object transformation, or result normalization beyond forwarding to the standard JSON decoder after preprocessing.\n\n## Standard JSON serialization wrappers\n\nThis ability provides the writing side of the `jstyleson` API. The parser functions accept relaxed JSON by preprocessing input, but the serialization functions are standard-JSON pass-through wrappers exposed directly on the top-level importable `jstyleson` module.\n\n### Component: Top-level serialization API\n\n**Public Import Form:**\n```python\nimport jstyleson\n```\n\nCallers access the functions as module attributes: `jstyleson.dumps(...)` and `jstyleson.dump(...)`. The project is distributed as a top-level module named `jstyleson`; these serialization names are not provided through a separate submodule namespace.\n\n#### Function: `jstyleson.dumps`\n\n**Signature:**\n```python\ndef dumps(obj, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dumps`. Optional serializer settings must be supplied as keyword arguments; the wrapper\u2019s public signature only accepts `obj` positionally.\n\n**Returns:**\n- The JSON string returned by `json.dumps(obj, **kwargs)`.\n\n**Raises:**\n- The wrapper does not catch, wrap, or translate exceptions. Any `TypeError`, `ValueError`, or other exception raised by the standard-library serializer propagates unchanged.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dumps` is a pure serialization wrapper. It does not call `dispose`, `loads`, or `load`.\n- It performs no relaxed-JSON handling, comment handling, trailing-comma handling, output normalization, validation, or postprocessing of the returned string.\n- Formatting defaults, encoding behavior, key ordering, separators, custom encoders, and all other serializer semantics are those of the active Python standard library `json.dumps` implementation for the supplied keyword arguments.\n\n#### Function: `jstyleson.dump`\n\n**Signature:**\n```python\ndef dump(obj, fp, **kwargs):\n ...\n```\n\n**Parameters:**\n- `obj`: Python object to serialize.\n- `fp`: Writable file-like object accepted by `json.dump`; the wrapper performs no separate validation of this object.\n- `**kwargs`: Serializer options forwarded unchanged to Python\u2019s standard `json.dump`. Optional serializer settings must be supplied as keyword arguments after `obj` and `fp`.\n\n**Returns:**\n- `None`. This is the observable return value of `jstyleson.dump(...)` after writing through the standard-library serializer.\n\n**Raises:**\n- Exceptions from `json.dump(obj, fp, **kwargs)` or from the file-like object\u2019s write behavior propagate unchanged. The wrapper does not convert them to repository-specific exceptions.\n\n**Notes (Logic & Behavior):**\n- `jstyleson.dump` writes using the standard `json.dump` behavior and does not preprocess, postprocess, flush, close, or otherwise manage the stream beyond the underlying serializer call.\n- It does not call `dispose`, `loads`, or `load`, and it does not add any custom relaxed-JSON serialization layer.\n\n### Component: Relationship to relaxed parsing\n\n`jstyleson.dumps` and `jstyleson.dump` exist for API symmetry with `jstyleson.loads` and `jstyleson.load`, but they are independent of the relaxed parsing pipeline. Comment stripping and trailing-comma normalization are input-only behaviors implemented by `dispose` and used by the parsing helpers; serialization depends only on the standard `json` module\u2019s writer behavior."}]}}
+{"instance_id": "ebeweber_flake8-mutable_pr8", "repo": "flake8-mutable", "github_url": "https://github.com/ebeweber/flake8-mutable", "language": "python", "workdir": "/workspace/flake8-mutable", "image_ref": "docker.io/aweaiteam/denovoswe:ebeweber_flake8-mutable_pr8", "base_commit": "9b7f0aa5fa579b63801e95e53e2b7c89d1ec49e0", "patch": "", "test_patch": "diff --git a/README.md b/README.md\nnew file mode 100644\nindex 0000000..713ad07\n--- /dev/null\n+++ b/README.md\n@@ -0,0 +1,35 @@\n+flake8-mutable\n+--------------\n+\n+[](https://pypi.python.org/pypi/flake8-mutable)\n+\n+#### Motivation\n+\n+Python's default arguments are evaluated at definition as opposed to when the function is invoked. This leads to unexpected behavior, as mutations persist between calls. For a more detailed explanation, see [The Hitchhiker's Guide to Python](http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments).\n+\n+#### Example\n+\n+```\n+def fnc(a, b={}):\n+ pass\n+\n+foo.py:2:1: M511 - mutable default arg of type Dict\n+```\n+\n+#### Installation\n+\n+```\n+pip install flake8-mutable\n+```\n+\n+#### Changes\n+\n+##### [1.1.0] 2016-11-26\n+- Callables\n+\n+##### [1.0.6] 2016-11-26\n+- added MANIFEST.in\n+\n+#### License\n+\n+[MIT](https://opensource.org/licenses/MIT)\ndiff --git a/tests/__init__.py b/tests/__init__.py\nnew file mode 100644\nindex 0000000..e69de29\ndiff --git a/tests/mutable_defaults_test.py b/tests/mutable_defaults_test.py\nnew file mode 100644\nindex 0000000..2504560\n--- /dev/null\n+++ b/tests/mutable_defaults_test.py\n@@ -0,0 +1,51 @@\n+import ast\n+import pytest\n+\n+from mutable_defaults import MutableDefaultChecker\n+\n+\n+@pytest.mark.parametrize('code,error_count', [\n+ ('def foo(bar={}): pass', 1),\n+ ('def foo(bar=[]): pass', 1),\n+ ('def foo(): pass', 0),\n+ ('def foo(a, b, c=False): pass', 0),\n+ (\n+ '\\n'.join([\n+ 'def foo():',\n+ ' def bar(a={}):',\n+ ' pass',\n+ ' pass',\n+ ]),\n+ 1\n+ ),\n+ ('def foo(bar=[], baz={}): pass', 2),\n+ ('def foo(bar=range(10)): pass', 1),\n+ ('def foo(bar=set()): pass', 1),\n+ (\n+ '\\n'.join([\n+ 'def foo():',\n+ ' return True',\n+ 'def bar(a=foo()):',\n+ ' pass',\n+ ]),\n+ 1\n+ ),\n+ ('', 0),\n+], ids=(\n+ 'dict',\n+ 'list',\n+ 'empty_arg_list',\n+ 'valid_args_and_kwargs',\n+ 'nested_function',\n+ 'multiple_mutable_defaults',\n+ 'builtin_callable_with_value',\n+ 'builtin_callable_without_value',\n+ 'user_defined_callable',\n+ 'empty_tree',\n+))\n+def test_mutable_defaults(code, error_count):\n+ tree = ast.parse(code)\n+ assert (\n+ len(list(MutableDefaultChecker(tree, 'filename').run())) ==\n+ error_count\n+ )\n", "document": "## 1. Overview\n\n`flake8-mutable` is a small Flake8 extension for catching one specific Python correctness issue: mutable default argument values in function definitions. It is designed to run as part of normal Flake8 linting, where it inspects each file\u2019s Python AST and reports defaults that can retain state across calls instead of being recreated at invocation time.\n\nThe repository is primarily a linter plugin rather than a standalone application or general-purpose library. Its main interface is Flake8\u2019s extension system: once installed, the checker is discovered through the `flake8.extension` entry point and contributes an `M511` diagnostic during standard Flake8 runs. The implementation focuses on function definitions and flags defaults expressed as mutable container literals or callable expressions, producing a message that identifies the offending default node type.\n\nMajor repository behavior includes:\n- **Flake8 integration** through a registered extension entry point, so the checker runs automatically inside existing lint workflows.\n- **AST-based analysis** of Python source files to find function default values without executing user code.\n- **Targeted mutable-default detection** for `dict`, `list`, `set`, and call-based defaults.\n- **Actionable lint output** via the `M511` error code, reported at the function definition line for use in editor, CI, and command-line Flake8 output.\n\nIn practice, users interact with this project by installing it into the same environment as Flake8 and then running their usual lint command; `flake8-mutable` extends that workflow with an additional safeguard against a common Python gotcha.\n\n## Flake8 plugin registration\n\n`flake8-mutable` is distributed as a Flake8 extension that exposes a single checker class from the top-level `mutable_defaults` module. The registration contract is the setuptools `flake8.extension` entry point mapping the selector `M90` to `mutable_defaults:MutableDefaultChecker`.\n\n### Component: Runtime plugin class\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the class referenced by the Flake8 entry point and instantiated by Flake8 for each parsed file.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name: str = 'flake-mutable'\n version: str = __version__\n\n def __init__(self, tree, filename): ...\n def run(self): ...\n```\n\n**Module version contract:**\n- The top-level `mutable_defaults` module defines `__version__ = '1.1.0'`.\n- `MutableDefaultChecker.version` must reference that same value, so the class advertises version `'1.1.0'` to Flake8.\n\n**Constructor:**\n```python\ndef __init__(self, tree, filename): ...\n```\n\n**Parameters:**\n- `tree`: parsed Python AST object for the file being checked.\n- `filename`: required by this repository\u2019s Flake8 checker constructor shape. It must be accepted even though this implementation does not use it for registration or linting behavior.\n\n**Returns/Raises:**\n- The constructor returns `None` in normal Python object-initialization fashion.\n- No custom exception type is part of the public contract.\n\n**Method:**\n```python\ndef run(self): ...\n```\n\n**Registration-level behavior:**\n- `run()` must exist on the registered checker class and return an iterable/generator suitable for Flake8 consumption.\n- The yielded items, when present, are Flake8-style 4-tuples. Detailed detection rules and exact diagnostic contents are documented in the linting/reporting abilities; this registration section only requires that the entry-point class exposes the standard checker method.\n\n### Component: Packaging entry point\n\nThe package metadata must install a single top-level module named `mutable_defaults` and register its checker with Flake8.\n\n**Minimal packaging contract:**\n- Distribution name: `flake8-mutable`.\n- Version: `1.1.0`, consistent with `mutable_defaults.__version__`.\n- Top-level module packaging: `py_modules=['mutable_defaults']`, so `from mutable_defaults import MutableDefaultChecker` works after installation.\n- Runtime dependency: `flake8`.\n- Flake8 entry point group: `flake8.extension`.\n- Exact entry point string:\n ```text\n M90 = mutable_defaults:MutableDefaultChecker\n ```\n\n**Notes (Logic & Behavior):**\n- `M90` is the setuptools/Flake8 entry-point selector used to discover the plugin. It is not the lint diagnostic code emitted by the checker.\n- The checker\u2019s emitted lint code is `M511`, which belongs to the reporting behavior rather than the packaging registration key.\n- Generated installation metadata, such as egg-info entry-point files, should be treated as derivative output of the packaging configuration. It should mirror the same `flake8.extension` registration, but it does not need to be hand-authored as a separate source interface.\n- No additional public plugin classes are registered by this repository.\n\n## Mutable default argument detection\n\nThis ability analyzes a parsed Python AST for normal function definitions and reports default argument expressions whose AST node kind is treated as mutable by this plugin. The public interface for this workflow is `mutable_defaults.MutableDefaultChecker`, the same checker class used by Flake8 when the plugin is registered.\n\n### Component: Public checker interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `mutable_defaults.MutableDefaultChecker`\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename): ...\n def run(self): ...\n```\n\n**Constructor parameters:**\n- `tree`: a parsed AST object suitable for traversal with the standard `ast` module, typically the result of `ast.parse(...)`. The checker stores this value as `self.tree` for later scanning.\n- `filename`: a required second constructor argument for Flake8 checker compatibility. It must be accepted but has no effect on detection and is not part of the reported results.\n\n**Returns / raises:**\n- Constructing the checker returns an instance and performs no custom validation.\n- The class defines no custom exception types. Missing required constructor arguments or an invalid object passed as `tree` may fail with normal Python/`ast` exceptions.\n\n### Component: Detection scope\n\n`MutableDefaultChecker.run()` is the scanning entry point.\n\n**Signature:**\n```python\ndef run(self): ...\n```\n\n**Return value:**\n- `run()` is a generator-style method: calling it returns an iterator and does not return a prebuilt list.\n- Iterating over it yields one Flake8-compatible 4-tuple for each offending default:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n- `line_number` is the line number of the enclosing normal function definition.\n- The column value is always `0`.\n- The final tuple element is the checker class object, exactly `type(self)`, not the checker instance and not a string.\n\n**Included nodes:**\n- The checker traverses the whole supplied AST, so nested normal function definitions are included.\n- Only `ast.FunctionDef` nodes are considered.\n- For each included function, only defaults from `node.args.defaults` are checked. This covers regular positional / positional-or-keyword default arguments represented there by Python\u2019s AST.\n\n**Excluded nodes and defaults:**\n- `ast.AsyncFunctionDef` nodes are not part of this ability\u2019s scan.\n- Lambda expressions are not scanned.\n- Keyword-only defaults from `node.args.kw_defaults` are not scanned.\n- Functions with no defaults, or with defaults outside the fixed recognized node kinds below, yield no results.\n\n### Component: Recognized default-value node kinds\n\nDetection is AST-node-kind based, not semantic runtime mutability analysis. The fixed default expression categories reported by this ability are:\n\n- `ast.Dict`, for dictionary literal defaults such as `{}`.\n- `ast.List`, for list literal defaults such as `[]`.\n- `ast.Set`, for set literal defaults.\n- `ast.Call`, for any call expression used as a default value.\n\nBecause every `ast.Call` default is reported, both built-in calls such as `range(10)` or `set()` and user-defined calls such as `foo()` count as violations. The checker does not attempt to determine what the call returns.\n\nEach offending default produces its own yielded tuple. Therefore a single function with two recognized mutable defaults yields two results, while separate nested normal functions are counted independently as they are encountered during traversal.\n\n### Component: Minimal output contract for detected defaults\n\nFor each detected default, the yielded `error_message` uses the plugin\u2019s `M511` diagnostic wording and includes the AST class name of the offending default expression, for example:\n\n```text\nM511 - mutable default arg of type Dict\n```\n\nThe reported type suffix is the offending node\u2019s class name, such as `Dict`, `List`, `Set`, or `Call`. Detailed formatting of the lint diagnostic belongs to the lint-reporting behavior, but detection code must preserve this tuple schema so callers can consume `list(MutableDefaultChecker(tree, 'filename').run())` and receive one result per offending default.\n\n**Behavior examples:**\n- `def foo(bar={}): pass` yields one result.\n- `def foo(bar=[]): pass` yields one result.\n- `def foo(bar=[], baz={}): pass` yields two results.\n- `def foo(a, b, c=False): pass` yields no results.\n- A mutable default in an inner normal `def` is still reported.\n- `def foo(bar=range(10)): pass` yields one result because the default is an `ast.Call`.\n\n## Supported mutable default types\n\nThis ability defines exactly which default-value expression shapes are treated as mutable-default violations. The checker uses syntactic AST node kinds, not runtime type inference, so the supported set is small, explicit, and determines both which defaults are reported and which type names appear in the emitted `M511` messages.\n\n### Component: Supported AST default-expression categories\n\nThe checker recognizes these four AST node classes as violations when they appear as function parameter defaults:\n\n| AST node class | Default form covered | Message type suffix |\n| --- | --- | --- |\n| `ast.Dict` | dictionary literals such as `def fn(arg={}): ...` | `Dict` |\n| `ast.List` | list literals such as `def fn(arg=[]): ...` | `List` |\n| `ast.Set` | set literals such as `def fn(arg={1, 2}): ...` | `Set` |\n| `ast.Call` | any call expression used as a default, such as `range(10)`, `set()`, or `foo()` | `Call` |\n\n**Behavioral contract:**\n- This set is exhaustive for this repository version. Defaults whose AST node is not `ast.Call`, `ast.Dict`, `ast.List`, or `ast.Set` are not reported by this checker, even if they might be mutable at runtime.\n- Matching is syntactic. In particular, every default represented by `ast.Call` is reported regardless of the callable target or the callable\u2019s return value.\n- The classification is applied only to defaults found in `FunctionDef.args.defaults`. This version checks normal `ast.FunctionDef` nodes and does not broaden this supported-type rule to other AST locations such as annotations, decorators, lambda expressions, or keyword-only defaults.\n- The user-visible diagnostic uses the offending default node\u2019s AST class name, so these supported forms surface in messages as exactly `Dict`, `List`, `Set`, or `Call`.\n\n### Component: Checker API applying the classification\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that applies the supported-type classification while scanning a parsed AST.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> object: ...\n```\n\n**Parameters:**\n- `tree`: a parsed Python AST suitable for traversal with the standard `ast` module.\n- `filename`: accepted for the Flake8 plugin constructor contract; it does not affect supported-type classification.\n\n**Returns:**\n- `run()` returns an iterable/generator of Flake8-style 4-tuples:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n\n**Notes (Logic & Behavior):**\n- For each `ast.FunctionDef`, the checker inspects only `node.args.defaults`.\n- Each default whose node class is one of the four supported classes produces one separate result. A single function with two supported mutable defaults therefore yields two diagnostics.\n- Defaults outside the supported classes, such as a boolean default (`False`), produce no result.\n- Nested normal function definitions are included because the checker traverses the full AST.\n- The error message for a supported default follows the shared lint-reporting format `M511 - mutable default arg of type {TypeName}`, where `{TypeName}` is the AST class name listed above.\n- The checker defines no repository-specific exception type for this ability; normal operation with a parsed AST should simply yield zero or more diagnostics.\n\n### Component: Supporting classification state\n\nAn implementation may keep the four supported AST classes in a helper collection such as `mutable_types`, but that collection is supporting state rather than the public contract for this ability. The required behavior is that `MutableDefaultChecker` recognizes exactly `ast.Call`, `ast.Dict`, `ast.List`, and `ast.Set` defaults under the scope described above and reports their corresponding AST class names in `M511` diagnostics.\n\n## Lint error reporting\n\nThis ability defines the checker\u2019s outward lint-reporting contract: each detected mutable default argument is emitted as a Flake8-style `M511` diagnostic tuple, not as preformatted command-line text.\n\n### Component: Public reporting interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that turns previously identified mutable default arguments into iterable lint results. The emitted lint code is `M511`; this is distinct from the packaging entry point prefix `M90` used for Flake8 plugin discovery.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> Iterator[tuple[int, int, str, type]]: ...\n```\n\n**Constructor parameters:**\n- `tree`: parsed Python AST for the file being checked.\n- `filename`: accepted for the Flake8 checker constructor contract. Reporting behavior is based on the AST, not on this filename value.\n\n**Method: `run()`**\n- `run()` is a generator/iterator-style method. Callers may iterate over it directly or materialize it with `list(...)`.\n- It yields one 4-tuple per offending default argument.\n- If no reportable mutable defaults are present, the iterator simply yields no tuples; it does not need to return a list or emit placeholder values.\n\n### Component: Emitted diagnostic tuple schema\n\nEach violation yielded by `MutableDefaultChecker.run()` has exactly this shape:\n\n```python\n(line_number, 0, message, checker_class)\n```\n\nField contract:\n- `line_number`: the line number of the enclosing normal function definition that owns the offending default argument.\n- `0`: the checker\u2019s reported column value is always integer zero.\n- `message`: the exact diagnostic message string described below.\n- `checker_class`: the checker class object, i.e. `MutableDefaultChecker` as obtained through `type(self)`, not a checker instance and not a string.\n\nThe plugin itself yields column `0`. Flake8\u2019s command-line rendering may display that as column `1` in output such as `foo.py:2:1: M511 - mutable default arg of type Dict`; that `:1:` display is Flake8 formatting, not the tuple value returned by `run()`.\n\n### Component: Exact message contract\n\nThe user-visible message string must be formatted exactly as:\n\n```text\nM511 - mutable default arg of type {ASTClassName}\n```\n\n`{ASTClassName}` is the offending default expression node\u2019s class name. For the supported mutable-default categories documented elsewhere in this repository, the expected suffixes include:\n- `Dict` for dictionary literal defaults,\n- `List` for list literal defaults,\n- `Set` for set literal defaults,\n- `Call` for callable-expression defaults.\n\nFor example, a dictionary default reported on line 2 yields a tuple equivalent to:\n\n```python\n(2, 0, 'M511 - mutable default arg of type Dict', MutableDefaultChecker)\n```\n\nReporting is one tuple per offending default, so multiple reportable defaults in the same function signature produce multiple yielded tuples, each with the same function line number and its own type-specific message suffix. Nested normal function definitions are reportable when encountered by the checker\u2019s AST analysis. Defaults outside the supported mutable-default categories produce no lint tuple for this ability.", "problem_statement": "## 1. Overview\n\n`flake8-mutable` is a small Flake8 extension for catching one specific Python correctness issue: mutable default argument values in function definitions. It is designed to run as part of normal Flake8 linting, where it inspects each file\u2019s Python AST and reports defaults that can retain state across calls instead of being recreated at invocation time.\n\nThe repository is primarily a linter plugin rather than a standalone application or general-purpose library. Its main interface is Flake8\u2019s extension system: once installed, the checker is discovered through the `flake8.extension` entry point and contributes an `M511` diagnostic during standard Flake8 runs. The implementation focuses on function definitions and flags defaults expressed as mutable container literals or callable expressions, producing a message that identifies the offending default node type.\n\nMajor repository behavior includes:\n- **Flake8 integration** through a registered extension entry point, so the checker runs automatically inside existing lint workflows.\n- **AST-based analysis** of Python source files to find function default values without executing user code.\n- **Targeted mutable-default detection** for `dict`, `list`, `set`, and call-based defaults.\n- **Actionable lint output** via the `M511` error code, reported at the function definition line for use in editor, CI, and command-line Flake8 output.\n\nIn practice, users interact with this project by installing it into the same environment as Flake8 and then running their usual lint command; `flake8-mutable` extends that workflow with an additional safeguard against a common Python gotcha.\n\n## Flake8 plugin registration\n\n`flake8-mutable` is distributed as a Flake8 extension that exposes a single checker class from the top-level `mutable_defaults` module. The registration contract is the setuptools `flake8.extension` entry point mapping the selector `M90` to `mutable_defaults:MutableDefaultChecker`.\n\n### Component: Runtime plugin class\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the class referenced by the Flake8 entry point and instantiated by Flake8 for each parsed file.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name: str = 'flake-mutable'\n version: str = __version__\n\n def __init__(self, tree, filename): ...\n def run(self): ...\n```\n\n**Module version contract:**\n- The top-level `mutable_defaults` module defines `__version__ = '1.1.0'`.\n- `MutableDefaultChecker.version` must reference that same value, so the class advertises version `'1.1.0'` to Flake8.\n\n**Constructor:**\n```python\ndef __init__(self, tree, filename): ...\n```\n\n**Parameters:**\n- `tree`: parsed Python AST object for the file being checked.\n- `filename`: required by this repository\u2019s Flake8 checker constructor shape. It must be accepted even though this implementation does not use it for registration or linting behavior.\n\n**Returns/Raises:**\n- The constructor returns `None` in normal Python object-initialization fashion.\n- No custom exception type is part of the public contract.\n\n**Method:**\n```python\ndef run(self): ...\n```\n\n**Registration-level behavior:**\n- `run()` must exist on the registered checker class and return an iterable/generator suitable for Flake8 consumption.\n- The yielded items, when present, are Flake8-style 4-tuples. Detailed detection rules and exact diagnostic contents are documented in the linting/reporting abilities; this registration section only requires that the entry-point class exposes the standard checker method.\n\n### Component: Packaging entry point\n\nThe package metadata must install a single top-level module named `mutable_defaults` and register its checker with Flake8.\n\n**Minimal packaging contract:**\n- Distribution name: `flake8-mutable`.\n- Version: `1.1.0`, consistent with `mutable_defaults.__version__`.\n- Top-level module packaging: `py_modules=['mutable_defaults']`, so `from mutable_defaults import MutableDefaultChecker` works after installation.\n- Runtime dependency: `flake8`.\n- Flake8 entry point group: `flake8.extension`.\n- Exact entry point string:\n ```text\n M90 = mutable_defaults:MutableDefaultChecker\n ```\n\n**Notes (Logic & Behavior):**\n- `M90` is the setuptools/Flake8 entry-point selector used to discover the plugin. It is not the lint diagnostic code emitted by the checker.\n- The checker\u2019s emitted lint code is `M511`, which belongs to the reporting behavior rather than the packaging registration key.\n- Generated installation metadata, such as egg-info entry-point files, should be treated as derivative output of the packaging configuration. It should mirror the same `flake8.extension` registration, but it does not need to be hand-authored as a separate source interface.\n- No additional public plugin classes are registered by this repository.\n\n## Mutable default argument detection\n\nThis ability analyzes a parsed Python AST for normal function definitions and reports default argument expressions whose AST node kind is treated as mutable by this plugin. The public interface for this workflow is `mutable_defaults.MutableDefaultChecker`, the same checker class used by Flake8 when the plugin is registered.\n\n### Component: Public checker interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `mutable_defaults.MutableDefaultChecker`\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename): ...\n def run(self): ...\n```\n\n**Constructor parameters:**\n- `tree`: a parsed AST object suitable for traversal with the standard `ast` module, typically the result of `ast.parse(...)`. The checker stores this value as `self.tree` for later scanning.\n- `filename`: a required second constructor argument for Flake8 checker compatibility. It must be accepted but has no effect on detection and is not part of the reported results.\n\n**Returns / raises:**\n- Constructing the checker returns an instance and performs no custom validation.\n- The class defines no custom exception types. Missing required constructor arguments or an invalid object passed as `tree` may fail with normal Python/`ast` exceptions.\n\n### Component: Detection scope\n\n`MutableDefaultChecker.run()` is the scanning entry point.\n\n**Signature:**\n```python\ndef run(self): ...\n```\n\n**Return value:**\n- `run()` is a generator-style method: calling it returns an iterator and does not return a prebuilt list.\n- Iterating over it yields one Flake8-compatible 4-tuple for each offending default:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n- `line_number` is the line number of the enclosing normal function definition.\n- The column value is always `0`.\n- The final tuple element is the checker class object, exactly `type(self)`, not the checker instance and not a string.\n\n**Included nodes:**\n- The checker traverses the whole supplied AST, so nested normal function definitions are included.\n- Only `ast.FunctionDef` nodes are considered.\n- For each included function, only defaults from `node.args.defaults` are checked. This covers regular positional / positional-or-keyword default arguments represented there by Python\u2019s AST.\n\n**Excluded nodes and defaults:**\n- `ast.AsyncFunctionDef` nodes are not part of this ability\u2019s scan.\n- Lambda expressions are not scanned.\n- Keyword-only defaults from `node.args.kw_defaults` are not scanned.\n- Functions with no defaults, or with defaults outside the fixed recognized node kinds below, yield no results.\n\n### Component: Recognized default-value node kinds\n\nDetection is AST-node-kind based, not semantic runtime mutability analysis. The fixed default expression categories reported by this ability are:\n\n- `ast.Dict`, for dictionary literal defaults such as `{}`.\n- `ast.List`, for list literal defaults such as `[]`.\n- `ast.Set`, for set literal defaults.\n- `ast.Call`, for any call expression used as a default value.\n\nBecause every `ast.Call` default is reported, both built-in calls such as `range(10)` or `set()` and user-defined calls such as `foo()` count as violations. The checker does not attempt to determine what the call returns.\n\nEach offending default produces its own yielded tuple. Therefore a single function with two recognized mutable defaults yields two results, while separate nested normal functions are counted independently as they are encountered during traversal.\n\n### Component: Minimal output contract for detected defaults\n\nFor each detected default, the yielded `error_message` uses the plugin\u2019s `M511` diagnostic wording and includes the AST class name of the offending default expression, for example:\n\n```text\nM511 - mutable default arg of type Dict\n```\n\nThe reported type suffix is the offending node\u2019s class name, such as `Dict`, `List`, `Set`, or `Call`. Detailed formatting of the lint diagnostic belongs to the lint-reporting behavior, but detection code must preserve this tuple schema so callers can consume `list(MutableDefaultChecker(tree, 'filename').run())` and receive one result per offending default.\n\n**Behavior examples:**\n- `def foo(bar={}): pass` yields one result.\n- `def foo(bar=[]): pass` yields one result.\n- `def foo(bar=[], baz={}): pass` yields two results.\n- `def foo(a, b, c=False): pass` yields no results.\n- A mutable default in an inner normal `def` is still reported.\n- `def foo(bar=range(10)): pass` yields one result because the default is an `ast.Call`.\n\n## Supported mutable default types\n\nThis ability defines exactly which default-value expression shapes are treated as mutable-default violations. The checker uses syntactic AST node kinds, not runtime type inference, so the supported set is small, explicit, and determines both which defaults are reported and which type names appear in the emitted `M511` messages.\n\n### Component: Supported AST default-expression categories\n\nThe checker recognizes these four AST node classes as violations when they appear as function parameter defaults:\n\n| AST node class | Default form covered | Message type suffix |\n| --- | --- | --- |\n| `ast.Dict` | dictionary literals such as `def fn(arg={}): ...` | `Dict` |\n| `ast.List` | list literals such as `def fn(arg=[]): ...` | `List` |\n| `ast.Set` | set literals such as `def fn(arg={1, 2}): ...` | `Set` |\n| `ast.Call` | any call expression used as a default, such as `range(10)`, `set()`, or `foo()` | `Call` |\n\n**Behavioral contract:**\n- This set is exhaustive for this repository version. Defaults whose AST node is not `ast.Call`, `ast.Dict`, `ast.List`, or `ast.Set` are not reported by this checker, even if they might be mutable at runtime.\n- Matching is syntactic. In particular, every default represented by `ast.Call` is reported regardless of the callable target or the callable\u2019s return value.\n- The classification is applied only to defaults found in `FunctionDef.args.defaults`. This version checks normal `ast.FunctionDef` nodes and does not broaden this supported-type rule to other AST locations such as annotations, decorators, lambda expressions, or keyword-only defaults.\n- The user-visible diagnostic uses the offending default node\u2019s AST class name, so these supported forms surface in messages as exactly `Dict`, `List`, `Set`, or `Call`.\n\n### Component: Checker API applying the classification\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that applies the supported-type classification while scanning a parsed AST.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> object: ...\n```\n\n**Parameters:**\n- `tree`: a parsed Python AST suitable for traversal with the standard `ast` module.\n- `filename`: accepted for the Flake8 plugin constructor contract; it does not affect supported-type classification.\n\n**Returns:**\n- `run()` returns an iterable/generator of Flake8-style 4-tuples:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n\n**Notes (Logic & Behavior):**\n- For each `ast.FunctionDef`, the checker inspects only `node.args.defaults`.\n- Each default whose node class is one of the four supported classes produces one separate result. A single function with two supported mutable defaults therefore yields two diagnostics.\n- Defaults outside the supported classes, such as a boolean default (`False`), produce no result.\n- Nested normal function definitions are included because the checker traverses the full AST.\n- The error message for a supported default follows the shared lint-reporting format `M511 - mutable default arg of type {TypeName}`, where `{TypeName}` is the AST class name listed above.\n- The checker defines no repository-specific exception type for this ability; normal operation with a parsed AST should simply yield zero or more diagnostics.\n\n### Component: Supporting classification state\n\nAn implementation may keep the four supported AST classes in a helper collection such as `mutable_types`, but that collection is supporting state rather than the public contract for this ability. The required behavior is that `MutableDefaultChecker` recognizes exactly `ast.Call`, `ast.Dict`, `ast.List`, and `ast.Set` defaults under the scope described above and reports their corresponding AST class names in `M511` diagnostics.\n\n## Lint error reporting\n\nThis ability defines the checker\u2019s outward lint-reporting contract: each detected mutable default argument is emitted as a Flake8-style `M511` diagnostic tuple, not as preformatted command-line text.\n\n### Component: Public reporting interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that turns previously identified mutable default arguments into iterable lint results. The emitted lint code is `M511`; this is distinct from the packaging entry point prefix `M90` used for Flake8 plugin discovery.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> Iterator[tuple[int, int, str, type]]: ...\n```\n\n**Constructor parameters:**\n- `tree`: parsed Python AST for the file being checked.\n- `filename`: accepted for the Flake8 checker constructor contract. Reporting behavior is based on the AST, not on this filename value.\n\n**Method: `run()`**\n- `run()` is a generator/iterator-style method. Callers may iterate over it directly or materialize it with `list(...)`.\n- It yields one 4-tuple per offending default argument.\n- If no reportable mutable defaults are present, the iterator simply yields no tuples; it does not need to return a list or emit placeholder values.\n\n### Component: Emitted diagnostic tuple schema\n\nEach violation yielded by `MutableDefaultChecker.run()` has exactly this shape:\n\n```python\n(line_number, 0, message, checker_class)\n```\n\nField contract:\n- `line_number`: the line number of the enclosing normal function definition that owns the offending default argument.\n- `0`: the checker\u2019s reported column value is always integer zero.\n- `message`: the exact diagnostic message string described below.\n- `checker_class`: the checker class object, i.e. `MutableDefaultChecker` as obtained through `type(self)`, not a checker instance and not a string.\n\nThe plugin itself yields column `0`. Flake8\u2019s command-line rendering may display that as column `1` in output such as `foo.py:2:1: M511 - mutable default arg of type Dict`; that `:1:` display is Flake8 formatting, not the tuple value returned by `run()`.\n\n### Component: Exact message contract\n\nThe user-visible message string must be formatted exactly as:\n\n```text\nM511 - mutable default arg of type {ASTClassName}\n```\n\n`{ASTClassName}` is the offending default expression node\u2019s class name. For the supported mutable-default categories documented elsewhere in this repository, the expected suffixes include:\n- `Dict` for dictionary literal defaults,\n- `List` for list literal defaults,\n- `Set` for set literal defaults,\n- `Call` for callable-expression defaults.\n\nFor example, a dictionary default reported on line 2 yields a tuple equivalent to:\n\n```python\n(2, 0, 'M511 - mutable default arg of type Dict', MutableDefaultChecker)\n```\n\nReporting is one tuple per offending default, so multiple reportable defaults in the same function signature produce multiple yielded tuples, each with the same function line number and its own type-specific message suffix. Nested normal function definitions are reportable when encountered by the checker\u2019s AST analysis. Defaults outside the supported mutable-default categories produce no lint tuple for this ability.", "pypi_name": "flake8-mutable", "import_names": ["mutable_defaults"], "passed_ptp": ["tests/mutable_defaults_test.py::test_mutable_defaults[dict]", "tests/mutable_defaults_test.py::test_mutable_defaults[list]", "tests/mutable_defaults_test.py::test_mutable_defaults[empty_arg_list]", "tests/mutable_defaults_test.py::test_mutable_defaults[valid_args_and_kwargs]", "tests/mutable_defaults_test.py::test_mutable_defaults[nested_function]", "tests/mutable_defaults_test.py::test_mutable_defaults[multiple_mutable_defaults]", "tests/mutable_defaults_test.py::test_mutable_defaults[builtin_callable_with_value]", "tests/mutable_defaults_test.py::test_mutable_defaults[builtin_callable_without_value]", "tests/mutable_defaults_test.py::test_mutable_defaults[user_defined_callable]", "tests/mutable_defaults_test.py::test_mutable_defaults[empty_tree]"], "failed_ptp": [], "test_binary_archive_b64": "", "expected_coverage_percent": 100.0, "responses_create_params": {"input": [{"role": "user", "content": "## 1. Overview\n\n`flake8-mutable` is a small Flake8 extension for catching one specific Python correctness issue: mutable default argument values in function definitions. It is designed to run as part of normal Flake8 linting, where it inspects each file\u2019s Python AST and reports defaults that can retain state across calls instead of being recreated at invocation time.\n\nThe repository is primarily a linter plugin rather than a standalone application or general-purpose library. Its main interface is Flake8\u2019s extension system: once installed, the checker is discovered through the `flake8.extension` entry point and contributes an `M511` diagnostic during standard Flake8 runs. The implementation focuses on function definitions and flags defaults expressed as mutable container literals or callable expressions, producing a message that identifies the offending default node type.\n\nMajor repository behavior includes:\n- **Flake8 integration** through a registered extension entry point, so the checker runs automatically inside existing lint workflows.\n- **AST-based analysis** of Python source files to find function default values without executing user code.\n- **Targeted mutable-default detection** for `dict`, `list`, `set`, and call-based defaults.\n- **Actionable lint output** via the `M511` error code, reported at the function definition line for use in editor, CI, and command-line Flake8 output.\n\nIn practice, users interact with this project by installing it into the same environment as Flake8 and then running their usual lint command; `flake8-mutable` extends that workflow with an additional safeguard against a common Python gotcha.\n\n## Flake8 plugin registration\n\n`flake8-mutable` is distributed as a Flake8 extension that exposes a single checker class from the top-level `mutable_defaults` module. The registration contract is the setuptools `flake8.extension` entry point mapping the selector `M90` to `mutable_defaults:MutableDefaultChecker`.\n\n### Component: Runtime plugin class\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the class referenced by the Flake8 entry point and instantiated by Flake8 for each parsed file.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name: str = 'flake-mutable'\n version: str = __version__\n\n def __init__(self, tree, filename): ...\n def run(self): ...\n```\n\n**Module version contract:**\n- The top-level `mutable_defaults` module defines `__version__ = '1.1.0'`.\n- `MutableDefaultChecker.version` must reference that same value, so the class advertises version `'1.1.0'` to Flake8.\n\n**Constructor:**\n```python\ndef __init__(self, tree, filename): ...\n```\n\n**Parameters:**\n- `tree`: parsed Python AST object for the file being checked.\n- `filename`: required by this repository\u2019s Flake8 checker constructor shape. It must be accepted even though this implementation does not use it for registration or linting behavior.\n\n**Returns/Raises:**\n- The constructor returns `None` in normal Python object-initialization fashion.\n- No custom exception type is part of the public contract.\n\n**Method:**\n```python\ndef run(self): ...\n```\n\n**Registration-level behavior:**\n- `run()` must exist on the registered checker class and return an iterable/generator suitable for Flake8 consumption.\n- The yielded items, when present, are Flake8-style 4-tuples. Detailed detection rules and exact diagnostic contents are documented in the linting/reporting abilities; this registration section only requires that the entry-point class exposes the standard checker method.\n\n### Component: Packaging entry point\n\nThe package metadata must install a single top-level module named `mutable_defaults` and register its checker with Flake8.\n\n**Minimal packaging contract:**\n- Distribution name: `flake8-mutable`.\n- Version: `1.1.0`, consistent with `mutable_defaults.__version__`.\n- Top-level module packaging: `py_modules=['mutable_defaults']`, so `from mutable_defaults import MutableDefaultChecker` works after installation.\n- Runtime dependency: `flake8`.\n- Flake8 entry point group: `flake8.extension`.\n- Exact entry point string:\n ```text\n M90 = mutable_defaults:MutableDefaultChecker\n ```\n\n**Notes (Logic & Behavior):**\n- `M90` is the setuptools/Flake8 entry-point selector used to discover the plugin. It is not the lint diagnostic code emitted by the checker.\n- The checker\u2019s emitted lint code is `M511`, which belongs to the reporting behavior rather than the packaging registration key.\n- Generated installation metadata, such as egg-info entry-point files, should be treated as derivative output of the packaging configuration. It should mirror the same `flake8.extension` registration, but it does not need to be hand-authored as a separate source interface.\n- No additional public plugin classes are registered by this repository.\n\n## Mutable default argument detection\n\nThis ability analyzes a parsed Python AST for normal function definitions and reports default argument expressions whose AST node kind is treated as mutable by this plugin. The public interface for this workflow is `mutable_defaults.MutableDefaultChecker`, the same checker class used by Flake8 when the plugin is registered.\n\n### Component: Public checker interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `mutable_defaults.MutableDefaultChecker`\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename): ...\n def run(self): ...\n```\n\n**Constructor parameters:**\n- `tree`: a parsed AST object suitable for traversal with the standard `ast` module, typically the result of `ast.parse(...)`. The checker stores this value as `self.tree` for later scanning.\n- `filename`: a required second constructor argument for Flake8 checker compatibility. It must be accepted but has no effect on detection and is not part of the reported results.\n\n**Returns / raises:**\n- Constructing the checker returns an instance and performs no custom validation.\n- The class defines no custom exception types. Missing required constructor arguments or an invalid object passed as `tree` may fail with normal Python/`ast` exceptions.\n\n### Component: Detection scope\n\n`MutableDefaultChecker.run()` is the scanning entry point.\n\n**Signature:**\n```python\ndef run(self): ...\n```\n\n**Return value:**\n- `run()` is a generator-style method: calling it returns an iterator and does not return a prebuilt list.\n- Iterating over it yields one Flake8-compatible 4-tuple for each offending default:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n- `line_number` is the line number of the enclosing normal function definition.\n- The column value is always `0`.\n- The final tuple element is the checker class object, exactly `type(self)`, not the checker instance and not a string.\n\n**Included nodes:**\n- The checker traverses the whole supplied AST, so nested normal function definitions are included.\n- Only `ast.FunctionDef` nodes are considered.\n- For each included function, only defaults from `node.args.defaults` are checked. This covers regular positional / positional-or-keyword default arguments represented there by Python\u2019s AST.\n\n**Excluded nodes and defaults:**\n- `ast.AsyncFunctionDef` nodes are not part of this ability\u2019s scan.\n- Lambda expressions are not scanned.\n- Keyword-only defaults from `node.args.kw_defaults` are not scanned.\n- Functions with no defaults, or with defaults outside the fixed recognized node kinds below, yield no results.\n\n### Component: Recognized default-value node kinds\n\nDetection is AST-node-kind based, not semantic runtime mutability analysis. The fixed default expression categories reported by this ability are:\n\n- `ast.Dict`, for dictionary literal defaults such as `{}`.\n- `ast.List`, for list literal defaults such as `[]`.\n- `ast.Set`, for set literal defaults.\n- `ast.Call`, for any call expression used as a default value.\n\nBecause every `ast.Call` default is reported, both built-in calls such as `range(10)` or `set()` and user-defined calls such as `foo()` count as violations. The checker does not attempt to determine what the call returns.\n\nEach offending default produces its own yielded tuple. Therefore a single function with two recognized mutable defaults yields two results, while separate nested normal functions are counted independently as they are encountered during traversal.\n\n### Component: Minimal output contract for detected defaults\n\nFor each detected default, the yielded `error_message` uses the plugin\u2019s `M511` diagnostic wording and includes the AST class name of the offending default expression, for example:\n\n```text\nM511 - mutable default arg of type Dict\n```\n\nThe reported type suffix is the offending node\u2019s class name, such as `Dict`, `List`, `Set`, or `Call`. Detailed formatting of the lint diagnostic belongs to the lint-reporting behavior, but detection code must preserve this tuple schema so callers can consume `list(MutableDefaultChecker(tree, 'filename').run())` and receive one result per offending default.\n\n**Behavior examples:**\n- `def foo(bar={}): pass` yields one result.\n- `def foo(bar=[]): pass` yields one result.\n- `def foo(bar=[], baz={}): pass` yields two results.\n- `def foo(a, b, c=False): pass` yields no results.\n- A mutable default in an inner normal `def` is still reported.\n- `def foo(bar=range(10)): pass` yields one result because the default is an `ast.Call`.\n\n## Supported mutable default types\n\nThis ability defines exactly which default-value expression shapes are treated as mutable-default violations. The checker uses syntactic AST node kinds, not runtime type inference, so the supported set is small, explicit, and determines both which defaults are reported and which type names appear in the emitted `M511` messages.\n\n### Component: Supported AST default-expression categories\n\nThe checker recognizes these four AST node classes as violations when they appear as function parameter defaults:\n\n| AST node class | Default form covered | Message type suffix |\n| --- | --- | --- |\n| `ast.Dict` | dictionary literals such as `def fn(arg={}): ...` | `Dict` |\n| `ast.List` | list literals such as `def fn(arg=[]): ...` | `List` |\n| `ast.Set` | set literals such as `def fn(arg={1, 2}): ...` | `Set` |\n| `ast.Call` | any call expression used as a default, such as `range(10)`, `set()`, or `foo()` | `Call` |\n\n**Behavioral contract:**\n- This set is exhaustive for this repository version. Defaults whose AST node is not `ast.Call`, `ast.Dict`, `ast.List`, or `ast.Set` are not reported by this checker, even if they might be mutable at runtime.\n- Matching is syntactic. In particular, every default represented by `ast.Call` is reported regardless of the callable target or the callable\u2019s return value.\n- The classification is applied only to defaults found in `FunctionDef.args.defaults`. This version checks normal `ast.FunctionDef` nodes and does not broaden this supported-type rule to other AST locations such as annotations, decorators, lambda expressions, or keyword-only defaults.\n- The user-visible diagnostic uses the offending default node\u2019s AST class name, so these supported forms surface in messages as exactly `Dict`, `List`, `Set`, or `Call`.\n\n### Component: Checker API applying the classification\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that applies the supported-type classification while scanning a parsed AST.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> object: ...\n```\n\n**Parameters:**\n- `tree`: a parsed Python AST suitable for traversal with the standard `ast` module.\n- `filename`: accepted for the Flake8 plugin constructor contract; it does not affect supported-type classification.\n\n**Returns:**\n- `run()` returns an iterable/generator of Flake8-style 4-tuples:\n ```python\n (line_number, 0, error_message, type(self))\n ```\n\n**Notes (Logic & Behavior):**\n- For each `ast.FunctionDef`, the checker inspects only `node.args.defaults`.\n- Each default whose node class is one of the four supported classes produces one separate result. A single function with two supported mutable defaults therefore yields two diagnostics.\n- Defaults outside the supported classes, such as a boolean default (`False`), produce no result.\n- Nested normal function definitions are included because the checker traverses the full AST.\n- The error message for a supported default follows the shared lint-reporting format `M511 - mutable default arg of type {TypeName}`, where `{TypeName}` is the AST class name listed above.\n- The checker defines no repository-specific exception type for this ability; normal operation with a parsed AST should simply yield zero or more diagnostics.\n\n### Component: Supporting classification state\n\nAn implementation may keep the four supported AST classes in a helper collection such as `mutable_types`, but that collection is supporting state rather than the public contract for this ability. The required behavior is that `MutableDefaultChecker` recognizes exactly `ast.Call`, `ast.Dict`, `ast.List`, and `ast.Set` defaults under the scope described above and reports their corresponding AST class names in `M511` diagnostics.\n\n## Lint error reporting\n\nThis ability defines the checker\u2019s outward lint-reporting contract: each detected mutable default argument is emitted as a Flake8-style `M511` diagnostic tuple, not as preformatted command-line text.\n\n### Component: Public reporting interface\n\n**Import Path**: `from mutable_defaults import MutableDefaultChecker`\n\n#### Class: `MutableDefaultChecker`\n\n`MutableDefaultChecker` is the Flake8 checker class that turns previously identified mutable default arguments into iterable lint results. The emitted lint code is `M511`; this is distinct from the packaging entry point prefix `M90` used for Flake8 plugin discovery.\n\n**Signature:**\n```python\nclass MutableDefaultChecker(object):\n name = 'flake-mutable'\n version = __version__\n\n def __init__(self, tree: ast.AST, filename: str): ...\n def run(self) -> Iterator[tuple[int, int, str, type]]: ...\n```\n\n**Constructor parameters:**\n- `tree`: parsed Python AST for the file being checked.\n- `filename`: accepted for the Flake8 checker constructor contract. Reporting behavior is based on the AST, not on this filename value.\n\n**Method: `run()`**\n- `run()` is a generator/iterator-style method. Callers may iterate over it directly or materialize it with `list(...)`.\n- It yields one 4-tuple per offending default argument.\n- If no reportable mutable defaults are present, the iterator simply yields no tuples; it does not need to return a list or emit placeholder values.\n\n### Component: Emitted diagnostic tuple schema\n\nEach violation yielded by `MutableDefaultChecker.run()` has exactly this shape:\n\n```python\n(line_number, 0, message, checker_class)\n```\n\nField contract:\n- `line_number`: the line number of the enclosing normal function definition that owns the offending default argument.\n- `0`: the checker\u2019s reported column value is always integer zero.\n- `message`: the exact diagnostic message string described below.\n- `checker_class`: the checker class object, i.e. `MutableDefaultChecker` as obtained through `type(self)`, not a checker instance and not a string.\n\nThe plugin itself yields column `0`. Flake8\u2019s command-line rendering may display that as column `1` in output such as `foo.py:2:1: M511 - mutable default arg of type Dict`; that `:1:` display is Flake8 formatting, not the tuple value returned by `run()`.\n\n### Component: Exact message contract\n\nThe user-visible message string must be formatted exactly as:\n\n```text\nM511 - mutable default arg of type {ASTClassName}\n```\n\n`{ASTClassName}` is the offending default expression node\u2019s class name. For the supported mutable-default categories documented elsewhere in this repository, the expected suffixes include:\n- `Dict` for dictionary literal defaults,\n- `List` for list literal defaults,\n- `Set` for set literal defaults,\n- `Call` for callable-expression defaults.\n\nFor example, a dictionary default reported on line 2 yields a tuple equivalent to:\n\n```python\n(2, 0, 'M511 - mutable default arg of type Dict', MutableDefaultChecker)\n```\n\nReporting is one tuple per offending default, so multiple reportable defaults in the same function signature produce multiple yielded tuples, each with the same function line number and its own type-specific message suffix. Nested normal function definitions are reportable when encountered by the checker\u2019s AST analysis. Defaults outside the supported mutable-default categories produce no lint tuple for this ability."}]}}
+{"instance_id": "brandonschabell_datetransform_pr-1", "repo": "datetransform", "github_url": "https://github.com/brandonschabell/datetransform", "language": "python", "workdir": "/workspace/datetransform", "image_ref": "docker.io/aweaiteam/denovoswe:brandonschabell_datetransform_pr-1", "base_commit": "HEAD", "patch": "", "test_patch": "diff --git a/README.md b/README.md\nnew file mode 100644\nindex 0000000..a050d46\n--- /dev/null\n+++ b/README.md\n@@ -0,0 +1,23 @@\n+# datetransform\n+Feature engineering for dates\n+\n+[](https://badge.fury.io/py/datetransform)\n+[](https://pypi.python.org/pypi/datetransform/)\n+[](https://travis-ci.com/brandonschabell/datetransform)\n+[](https://codecov.io/gh/brandonschabell/datetransform)\n+\n+## Installation\n+`datetransform` requires Python 3.5+.\n+\n+```bash\n+pip install datetransform\n+```\n+\n+## Example Usage\n+```python\n+from datetransform.transform import add_date_features\n+import pandas as pd\n+\n+df = pd.read_csv('someFile.csv')\n+df = add_date_features(df, date_field_name='dateCol') # This dataframe now contains additional date features.\n+```\n\\ No newline at end of file\ndiff --git a/tests/test_transform.py b/tests/test_transform.py\nnew file mode 100644\nindex 0000000..4fc4620\n--- /dev/null\n+++ b/tests/test_transform.py\n@@ -0,0 +1,51 @@\n+import pandas as pd\n+\n+from datetransform import transform\n+\n+\n+def test_add_date_features():\n+ df = pd.DataFrame({'dateCol': ['2019-08-09 16:39:47']})\n+ df = transform.add_date_features(df, 'dateCol')\n+ assert df.columns.tolist() == ['dateCol',\n+ 'dateColYear',\n+ 'dateColMonth',\n+ 'dateColWeek',\n+ 'dateColDay',\n+ 'dateColDayOfWeek',\n+ 'dateColDayOfYear',\n+ 'dateColIsMonthEnd',\n+ 'dateColIsMonthStart',\n+ 'dateColIsQuarterEnd',\n+ 'dateColIsQuarterStart',\n+ 'dateColIsYearEnd',\n+ 'dateColIsYearStart',\n+ 'dateColHour',\n+ 'dateColMinute',\n+ 'dateColSecond']\n+\n+\n+def test_inplace_transform():\n+ df = pd.DataFrame({'dateCol': ['2019-08-09 16:39:47']})\n+ transform.add_date_features(df, 'dateCol', inplace=True)\n+ assert df.columns.tolist() == ['dateCol',\n+ 'dateColYear',\n+ 'dateColMonth',\n+ 'dateColWeek',\n+ 'dateColDay',\n+ 'dateColDayOfWeek',\n+ 'dateColDayOfYear',\n+ 'dateColIsMonthEnd',\n+ 'dateColIsMonthStart',\n+ 'dateColIsQuarterEnd',\n+ 'dateColIsQuarterStart',\n+ 'dateColIsYearEnd',\n+ 'dateColIsYearStart',\n+ 'dateColHour',\n+ 'dateColMinute',\n+ 'dateColSecond']\n+\n+\n+def test_not_inplace_transform():\n+ df = pd.DataFrame({'dateCol': ['2019-08-09 16:39:47']})\n+ transform.add_date_features(df, 'dateCol')\n+ assert df.columns.tolist() == ['dateCol']\n\\ No newline at end of file\n", "document": "## 1. Overview\n\n`datetransform` is a small Python library for date-oriented feature engineering in pandas DataFrames. Its purpose is to take a single date or timestamp column, normalize it into pandas datetime form, and expand it into a set of machine-learning-friendly calendar fields. Rather than providing a standalone application or service, the repository exposes a simple Python API that fits directly into notebook, script, and data-preparation workflows.\n\nThe main entry point is `add_date_features`, which accepts a DataFrame and the name of a source date column. It can parse string-like date values, preserve already-typed datetime columns, and then append derived fields such as year, month, week, day, weekday, day-of-year, and month-, quarter-, and year-boundary flags. When needed, the same transform can also extract hour, minute, and second values so timestamp columns contribute time-of-day information as well as calendar structure.\n\nMajor workflow in this repository:\n- **Date normalization**: convert a specified column to pandas datetime when it is not already in a datetime dtype.\n- **Calendar feature expansion**: generate a broad set of derived date-part columns from the source field.\n- **Optional time extraction**: include hour, minute, and second features for timestamp data.\n- **Flexible DataFrame handling**: either mutate the original DataFrame in place or return an augmented copy.\n\nIn practice, `datetransform` is best understood as a focused preprocessing component for tabular analytics and model-building pipelines that need consistent, repeatable date feature extraction.\n\n## Date column normalization\n\nThis ability is the normalization step of `datetransform`: before date-derived features are added, the selected DataFrame column is made usable through pandas datetime accessors. Normalization is part of the public `add_date_features` workflow, so callers may provide parseable string/object date columns as well as existing pandas datetime columns.\n\n### Component: Public normalization entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary tested package-module form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n- README/public direct form: `from datetransform.transform import add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters relevant to normalization:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the column to normalize and then use for feature extraction.\n- `time` (`bool`, default `True`): Controls later time-of-day feature creation; it does not disable the normalization step.\n- `inplace` (`bool`, default `False`): Selects which DataFrame object is normalized. With the default `False`, normalization occurs on a copied working DataFrame. With `True`, normalization occurs on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The working DataFrame after normalization and feature expansion. The original source column remains present in the returned DataFrame, but within the working DataFrame that column is converted to a pandas datetime-like dtype when conversion is needed.\n\n**Normalization contract:**\n- `add_date_features` ensures `df[date_field_name]` is datetime-like before any `.dt`-based feature extraction is performed.\n- If the source column is not already datetime-like, parseable values such as date/time strings are converted using pandas datetime parsing behavior.\n- If the source column is already datetime-like, it remains usable for pandas `.dt` access rather than being reparsed as strings.\n- Timezone-aware pandas datetime columns are accepted as already datetime-like and should remain valid for feature extraction.\n- The conversion updates the source column in the DataFrame object currently being operated on. Therefore, with `inplace=False`, the caller\u2019s original DataFrame is not normalized or expanded; with `inplace=True`, the caller\u2019s original DataFrame has its source column normalized before new feature columns are appended.\n\n**Failure behavior:**\n- `add_date_features` does not define repository-specific exception types and does not wrap pandas errors.\n- A missing `date_field_name` propagates the normal DataFrame indexing error.\n- Values that pandas cannot parse as datetimes, or columns that cannot support datetime accessor-based extraction after attempted conversion, propagate the corresponding pandas/numpy exception rather than being silently ignored or replaced.\n\n### Component: Supporting normalization helper\n\nA supporting helper named `make_date` centralizes the datetime coercion used by `add_date_features`. It should be treated as an implementation support point for this workflow rather than the primary documented user entry point. Its behavioral role is to inspect the selected column in the working DataFrame, leave datetime-like and timezone-aware datetime data usable as datetime data, and convert non-datetime parseable data into pandas datetime form so later calendar and time extraction can rely on `.dt` accessors.\n\nCalendar feature expansion and optional time component extraction both depend on this invariant: the selected source column in the working DataFrame is normalized before derived columns are computed.\n\n## Calendar feature expansion\n\nCalendar feature expansion is the core `datetransform` workflow that turns one normalized pandas date/timestamp column into a stable set of calendar-derived feature columns. The public entry point is `datetransform.transform.add_date_features`; it retains the source column, appends derived calendar fields in a fixed order, and returns the augmented `DataFrame`.\n\n### Component: Public calendar feature API\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Import Path**:\n- Primary tested form: `from datetransform import transform`, then call `transform.add_date_features(...)`.\n- Public README form: `from datetransform.transform import add_date_features`.\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): Input dataframe containing the source date column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, hour/minute/second columns are appended after the calendar columns. Calendar columns are always produced regardless of this flag.\n- `inplace` (`bool`, default `False`): Controls whether the original dataframe object is modified.\n\n**Returns:**\n- Always returns a `pd.DataFrame`.\n- With `inplace=False`, the returned dataframe is a copied dataframe; the original input dataframe is left unchanged.\n- With `inplace=True`, the passed dataframe is mutated and the same dataframe object is returned.\n\n**Source-column contract:**\n- The source column named by `date_field_name` remains present as the first column in the returned dataframe.\n- Before derived values are read, the source column is made datetime-compatible so pandas `.dt` calendar accessors can be used. In the returned dataframe, that retained source column reflects this normalized datetime-compatible form.\n\n### Component: Calendar columns and value semantics\n\nFor a source column named `dateCol`, `add_date_features` appends the following 12 calendar columns immediately after the retained source column, in exactly this order and before any optional time columns:\n\n1. `dateColYear`\n2. `dateColMonth`\n3. `dateColWeek`\n4. `dateColDay`\n5. `dateColDayOfWeek`\n6. `dateColDayOfYear`\n7. `dateColIsMonthEnd`\n8. `dateColIsMonthStart`\n9. `dateColIsQuarterEnd`\n10. `dateColIsQuarterStart`\n11. `dateColIsYearEnd`\n12. `dateColIsYearStart`\n\nFor any other `date_field_name`, the same suffixes are concatenated directly to that field name. The calendar values follow pandas datetime accessor semantics:\n\n| Output suffix | Value source |\n| --- | --- |\n| `Year` | `series.dt.year` |\n| `Month` | `series.dt.month` |\n| `Week` | `series.dt.week` / pandas week-of-year semantics, not a separately computed ISO-calendar dataframe |\n| `Day` | `series.dt.day` |\n| `DayOfWeek` | `series.dt.dayofweek` |\n| `DayOfYear` | `series.dt.dayofyear` |\n| `IsMonthEnd` | `series.dt.is_month_end` |\n| `IsMonthStart` | `series.dt.is_month_start` |\n| `IsQuarterEnd` | `series.dt.is_quarter_end` |\n| `IsQuarterStart` | `series.dt.is_quarter_start` |\n| `IsYearEnd` | `series.dt.is_year_end` |\n| `IsYearStart` | `series.dt.is_year_start` |\n\nWith the default `time=True`, the optional time columns are appended only after these calendar columns; time extraction is documented separately but must not alter the calendar column order.\n\n### Component: Failure behavior\n\n`datetransform.transform.add_date_features` does not add a repository-specific validation or exception layer for this ability. A missing `date_field_name`, an unparseable date column, or a column that cannot support pandas datetime access should surface the corresponding pandas/numpy exception rather than being silently ignored or converted into a custom error.\n\n## Time component extraction\n\nTime component extraction is the optional part of `datetransform` feature generation that adds time-of-day signals from a timestamp column. It is controlled by the public `add_date_features` workflow: calendar features are always produced, and the `time` flag only decides whether hour, minute, and second columns are appended.\n\n### Component: Public time-aware transform\n\n**Import Path**:\n- Primary module call form: `from datetransform import transform`, then `transform.add_date_features(...)`\n- Direct function form: `from datetransform.transform import add_date_features`\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When truthy, append the three time-of-day columns. When falsey, omit only those three columns; the standard calendar-derived columns are still added.\n- `inplace` (`bool`, default `False`): When `False`, operate on a copy and leave the original DataFrame unchanged. When `True`, mutate the passed DataFrame directly. The same rule applies to both the source-column datetime conversion and the added time columns.\n\n**Returns:**\n- `pd.DataFrame`: The transformed DataFrame. With `inplace=False`, this is an augmented copy. With `inplace=True`, this is the same DataFrame object after mutation.\n\n**Time output contract:**\n- Before feature extraction, the working DataFrame\u2019s `df[date_field_name]` is converted to a pandas datetime-like column when necessary. The returned DataFrame, or the original DataFrame in `inplace=True` mode, therefore contains the normalized datetime source column rather than leaving a parseable string column untouched.\n- Existing columns keep their original relative order, and new feature columns are appended.\n- For a source-only DataFrame with `date_field_name='dateCol'` and default `time=True`, the full column order is exactly:\n 1. `dateCol`\n 2. `dateColYear`\n 3. `dateColMonth`\n 4. `dateColWeek`\n 5. `dateColDay`\n 6. `dateColDayOfWeek`\n 7. `dateColDayOfYear`\n 8. `dateColIsMonthEnd`\n 9. `dateColIsMonthStart`\n 10. `dateColIsQuarterEnd`\n 11. `dateColIsQuarterStart`\n 12. `dateColIsYearEnd`\n 13. `dateColIsYearStart`\n 14. `dateColHour`\n 15. `dateColMinute`\n 16. `dateColSecond`\n- For other source column names, the same suffixes are concatenated directly to `date_field_name`, so the time-specific names are `f\"{date_field_name}Hour\"`, `f\"{date_field_name}Minute\"`, and `f\"{date_field_name}Second\"`.\n- The time values correspond to the pandas datetime hour, minute, and second components. For example, the timestamp string `'2019-08-09 16:39:47'` produces `Hour=16`, `Minute=39`, and `Second=47` in the generated time columns.\n- With `time=False`, the output stops after the fixed calendar feature set through `f\"{date_field_name}IsYearStart\"`; `Hour`, `Minute`, and `Second` columns are not added.\n\n**Raises / failure behavior:**\n- This API does not define repository-specific exception classes or wrap pandas failures.\n- A missing `date_field_name` propagates the normal DataFrame column-access error.\n- Unparseable values or invalid datetime-access operations propagate the corresponding pandas/numpy errors.\n\n### Component: Datetime preparation dependency\n\nTime extraction depends on an internal normalization step that makes the source column compatible with pandas datetime accessors before reading hour, minute, and second. Parseable string/object columns are converted in the working DataFrame, while already datetime-like columns, including timezone-aware datetime columns, are accepted as datetime inputs. This normalization behavior is observable through `add_date_features`; it does not need to be called separately for time extraction.\n\n## In-place or copied transforms\n\nThis ability controls whether `datetransform` appends generated date/time features to a new `pandas.DataFrame` or directly to the caller\u2019s existing frame. The behavior is governed by the `inplace` parameter on the public `add_date_features` workflow, and it applies to both datetime normalization and feature-column creation.\n\n### Component: Public transform entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary public function import: `from datetransform.transform import add_date_features`\n- Supported module import form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, include `Hour`, `Minute`, and `Second` columns in addition to the calendar columns.\n- `inplace` (`bool`, default `False`): Selects whether the transform operates on a copy or on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The DataFrame containing the original source column plus generated feature columns.\n- With `inplace=False`, the returned value is a different DataFrame object from the caller\u2019s input.\n- With `inplace=True`, the returned value is the same DataFrame object that was passed in, after mutation.\n\n**Raises:**\n- No repository-specific exceptions are defined for this mode. Missing columns, unparseable date values, or pandas datetime-accessor failures should surface as the corresponding pandas/numpy exceptions.\n\n**Notes (copy-vs-mutate contract):**\n- `inplace=False` is the default and is side-effect-free with respect to the caller\u2019s DataFrame object. All normalization and feature creation happen on the returned copy; the original object keeps its original columns and its source date column is not coerced on that object.\n- `inplace=True` mutates the passed DataFrame directly. The same object gains the generated columns, and any needed datetime coercion of `date_field_name` occurs on that original object.\n- Both modes return a DataFrame. In-place mode must not return `None`.\n- The original source column remains present in the working DataFrame; generated columns are appended after it rather than replacing it.\n\n### Component: Generated columns on the selected working frame\n\nThe copy/in-place choice affects which DataFrame receives the normal `add_date_features` output schema; it does not change the feature names or their order. For a source column named `dateCol` and the default `time=True`, the working DataFrame has these columns after transformation:\n\n1. `dateCol`\n2. `dateColYear`\n3. `dateColMonth`\n4. `dateColWeek`\n5. `dateColDay`\n6. `dateColDayOfWeek`\n7. `dateColDayOfYear`\n8. `dateColIsMonthEnd`\n9. `dateColIsMonthStart`\n10. `dateColIsQuarterEnd`\n11. `dateColIsQuarterStart`\n12. `dateColIsYearEnd`\n13. `dateColIsYearStart`\n14. `dateColHour`\n15. `dateColMinute`\n16. `dateColSecond`\n\nWhen `inplace=False`, this schema appears only on the returned DataFrame. When `inplace=True`, this schema appears on the caller\u2019s original DataFrame as well as on the returned same object.\n\n### Component: Supporting normalization behavior\n\nA supporting datetime-normalization step runs before feature extraction. For this ability, its required behavior is that it acts only on the DataFrame object selected by `add_date_features`: the copied working frame in default mode, or the original frame in in-place mode. This keeps source-column coercion consistent with the same copy-vs-mutate contract as the appended feature columns.", "problem_statement": "## 1. Overview\n\n`datetransform` is a small Python library for date-oriented feature engineering in pandas DataFrames. Its purpose is to take a single date or timestamp column, normalize it into pandas datetime form, and expand it into a set of machine-learning-friendly calendar fields. Rather than providing a standalone application or service, the repository exposes a simple Python API that fits directly into notebook, script, and data-preparation workflows.\n\nThe main entry point is `add_date_features`, which accepts a DataFrame and the name of a source date column. It can parse string-like date values, preserve already-typed datetime columns, and then append derived fields such as year, month, week, day, weekday, day-of-year, and month-, quarter-, and year-boundary flags. When needed, the same transform can also extract hour, minute, and second values so timestamp columns contribute time-of-day information as well as calendar structure.\n\nMajor workflow in this repository:\n- **Date normalization**: convert a specified column to pandas datetime when it is not already in a datetime dtype.\n- **Calendar feature expansion**: generate a broad set of derived date-part columns from the source field.\n- **Optional time extraction**: include hour, minute, and second features for timestamp data.\n- **Flexible DataFrame handling**: either mutate the original DataFrame in place or return an augmented copy.\n\nIn practice, `datetransform` is best understood as a focused preprocessing component for tabular analytics and model-building pipelines that need consistent, repeatable date feature extraction.\n\n## Date column normalization\n\nThis ability is the normalization step of `datetransform`: before date-derived features are added, the selected DataFrame column is made usable through pandas datetime accessors. Normalization is part of the public `add_date_features` workflow, so callers may provide parseable string/object date columns as well as existing pandas datetime columns.\n\n### Component: Public normalization entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary tested package-module form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n- README/public direct form: `from datetransform.transform import add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters relevant to normalization:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the column to normalize and then use for feature extraction.\n- `time` (`bool`, default `True`): Controls later time-of-day feature creation; it does not disable the normalization step.\n- `inplace` (`bool`, default `False`): Selects which DataFrame object is normalized. With the default `False`, normalization occurs on a copied working DataFrame. With `True`, normalization occurs on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The working DataFrame after normalization and feature expansion. The original source column remains present in the returned DataFrame, but within the working DataFrame that column is converted to a pandas datetime-like dtype when conversion is needed.\n\n**Normalization contract:**\n- `add_date_features` ensures `df[date_field_name]` is datetime-like before any `.dt`-based feature extraction is performed.\n- If the source column is not already datetime-like, parseable values such as date/time strings are converted using pandas datetime parsing behavior.\n- If the source column is already datetime-like, it remains usable for pandas `.dt` access rather than being reparsed as strings.\n- Timezone-aware pandas datetime columns are accepted as already datetime-like and should remain valid for feature extraction.\n- The conversion updates the source column in the DataFrame object currently being operated on. Therefore, with `inplace=False`, the caller\u2019s original DataFrame is not normalized or expanded; with `inplace=True`, the caller\u2019s original DataFrame has its source column normalized before new feature columns are appended.\n\n**Failure behavior:**\n- `add_date_features` does not define repository-specific exception types and does not wrap pandas errors.\n- A missing `date_field_name` propagates the normal DataFrame indexing error.\n- Values that pandas cannot parse as datetimes, or columns that cannot support datetime accessor-based extraction after attempted conversion, propagate the corresponding pandas/numpy exception rather than being silently ignored or replaced.\n\n### Component: Supporting normalization helper\n\nA supporting helper named `make_date` centralizes the datetime coercion used by `add_date_features`. It should be treated as an implementation support point for this workflow rather than the primary documented user entry point. Its behavioral role is to inspect the selected column in the working DataFrame, leave datetime-like and timezone-aware datetime data usable as datetime data, and convert non-datetime parseable data into pandas datetime form so later calendar and time extraction can rely on `.dt` accessors.\n\nCalendar feature expansion and optional time component extraction both depend on this invariant: the selected source column in the working DataFrame is normalized before derived columns are computed.\n\n## Calendar feature expansion\n\nCalendar feature expansion is the core `datetransform` workflow that turns one normalized pandas date/timestamp column into a stable set of calendar-derived feature columns. The public entry point is `datetransform.transform.add_date_features`; it retains the source column, appends derived calendar fields in a fixed order, and returns the augmented `DataFrame`.\n\n### Component: Public calendar feature API\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Import Path**:\n- Primary tested form: `from datetransform import transform`, then call `transform.add_date_features(...)`.\n- Public README form: `from datetransform.transform import add_date_features`.\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): Input dataframe containing the source date column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, hour/minute/second columns are appended after the calendar columns. Calendar columns are always produced regardless of this flag.\n- `inplace` (`bool`, default `False`): Controls whether the original dataframe object is modified.\n\n**Returns:**\n- Always returns a `pd.DataFrame`.\n- With `inplace=False`, the returned dataframe is a copied dataframe; the original input dataframe is left unchanged.\n- With `inplace=True`, the passed dataframe is mutated and the same dataframe object is returned.\n\n**Source-column contract:**\n- The source column named by `date_field_name` remains present as the first column in the returned dataframe.\n- Before derived values are read, the source column is made datetime-compatible so pandas `.dt` calendar accessors can be used. In the returned dataframe, that retained source column reflects this normalized datetime-compatible form.\n\n### Component: Calendar columns and value semantics\n\nFor a source column named `dateCol`, `add_date_features` appends the following 12 calendar columns immediately after the retained source column, in exactly this order and before any optional time columns:\n\n1. `dateColYear`\n2. `dateColMonth`\n3. `dateColWeek`\n4. `dateColDay`\n5. `dateColDayOfWeek`\n6. `dateColDayOfYear`\n7. `dateColIsMonthEnd`\n8. `dateColIsMonthStart`\n9. `dateColIsQuarterEnd`\n10. `dateColIsQuarterStart`\n11. `dateColIsYearEnd`\n12. `dateColIsYearStart`\n\nFor any other `date_field_name`, the same suffixes are concatenated directly to that field name. The calendar values follow pandas datetime accessor semantics:\n\n| Output suffix | Value source |\n| --- | --- |\n| `Year` | `series.dt.year` |\n| `Month` | `series.dt.month` |\n| `Week` | `series.dt.week` / pandas week-of-year semantics, not a separately computed ISO-calendar dataframe |\n| `Day` | `series.dt.day` |\n| `DayOfWeek` | `series.dt.dayofweek` |\n| `DayOfYear` | `series.dt.dayofyear` |\n| `IsMonthEnd` | `series.dt.is_month_end` |\n| `IsMonthStart` | `series.dt.is_month_start` |\n| `IsQuarterEnd` | `series.dt.is_quarter_end` |\n| `IsQuarterStart` | `series.dt.is_quarter_start` |\n| `IsYearEnd` | `series.dt.is_year_end` |\n| `IsYearStart` | `series.dt.is_year_start` |\n\nWith the default `time=True`, the optional time columns are appended only after these calendar columns; time extraction is documented separately but must not alter the calendar column order.\n\n### Component: Failure behavior\n\n`datetransform.transform.add_date_features` does not add a repository-specific validation or exception layer for this ability. A missing `date_field_name`, an unparseable date column, or a column that cannot support pandas datetime access should surface the corresponding pandas/numpy exception rather than being silently ignored or converted into a custom error.\n\n## Time component extraction\n\nTime component extraction is the optional part of `datetransform` feature generation that adds time-of-day signals from a timestamp column. It is controlled by the public `add_date_features` workflow: calendar features are always produced, and the `time` flag only decides whether hour, minute, and second columns are appended.\n\n### Component: Public time-aware transform\n\n**Import Path**:\n- Primary module call form: `from datetransform import transform`, then `transform.add_date_features(...)`\n- Direct function form: `from datetransform.transform import add_date_features`\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When truthy, append the three time-of-day columns. When falsey, omit only those three columns; the standard calendar-derived columns are still added.\n- `inplace` (`bool`, default `False`): When `False`, operate on a copy and leave the original DataFrame unchanged. When `True`, mutate the passed DataFrame directly. The same rule applies to both the source-column datetime conversion and the added time columns.\n\n**Returns:**\n- `pd.DataFrame`: The transformed DataFrame. With `inplace=False`, this is an augmented copy. With `inplace=True`, this is the same DataFrame object after mutation.\n\n**Time output contract:**\n- Before feature extraction, the working DataFrame\u2019s `df[date_field_name]` is converted to a pandas datetime-like column when necessary. The returned DataFrame, or the original DataFrame in `inplace=True` mode, therefore contains the normalized datetime source column rather than leaving a parseable string column untouched.\n- Existing columns keep their original relative order, and new feature columns are appended.\n- For a source-only DataFrame with `date_field_name='dateCol'` and default `time=True`, the full column order is exactly:\n 1. `dateCol`\n 2. `dateColYear`\n 3. `dateColMonth`\n 4. `dateColWeek`\n 5. `dateColDay`\n 6. `dateColDayOfWeek`\n 7. `dateColDayOfYear`\n 8. `dateColIsMonthEnd`\n 9. `dateColIsMonthStart`\n 10. `dateColIsQuarterEnd`\n 11. `dateColIsQuarterStart`\n 12. `dateColIsYearEnd`\n 13. `dateColIsYearStart`\n 14. `dateColHour`\n 15. `dateColMinute`\n 16. `dateColSecond`\n- For other source column names, the same suffixes are concatenated directly to `date_field_name`, so the time-specific names are `f\"{date_field_name}Hour\"`, `f\"{date_field_name}Minute\"`, and `f\"{date_field_name}Second\"`.\n- The time values correspond to the pandas datetime hour, minute, and second components. For example, the timestamp string `'2019-08-09 16:39:47'` produces `Hour=16`, `Minute=39`, and `Second=47` in the generated time columns.\n- With `time=False`, the output stops after the fixed calendar feature set through `f\"{date_field_name}IsYearStart\"`; `Hour`, `Minute`, and `Second` columns are not added.\n\n**Raises / failure behavior:**\n- This API does not define repository-specific exception classes or wrap pandas failures.\n- A missing `date_field_name` propagates the normal DataFrame column-access error.\n- Unparseable values or invalid datetime-access operations propagate the corresponding pandas/numpy errors.\n\n### Component: Datetime preparation dependency\n\nTime extraction depends on an internal normalization step that makes the source column compatible with pandas datetime accessors before reading hour, minute, and second. Parseable string/object columns are converted in the working DataFrame, while already datetime-like columns, including timezone-aware datetime columns, are accepted as datetime inputs. This normalization behavior is observable through `add_date_features`; it does not need to be called separately for time extraction.\n\n## In-place or copied transforms\n\nThis ability controls whether `datetransform` appends generated date/time features to a new `pandas.DataFrame` or directly to the caller\u2019s existing frame. The behavior is governed by the `inplace` parameter on the public `add_date_features` workflow, and it applies to both datetime normalization and feature-column creation.\n\n### Component: Public transform entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary public function import: `from datetransform.transform import add_date_features`\n- Supported module import form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, include `Hour`, `Minute`, and `Second` columns in addition to the calendar columns.\n- `inplace` (`bool`, default `False`): Selects whether the transform operates on a copy or on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The DataFrame containing the original source column plus generated feature columns.\n- With `inplace=False`, the returned value is a different DataFrame object from the caller\u2019s input.\n- With `inplace=True`, the returned value is the same DataFrame object that was passed in, after mutation.\n\n**Raises:**\n- No repository-specific exceptions are defined for this mode. Missing columns, unparseable date values, or pandas datetime-accessor failures should surface as the corresponding pandas/numpy exceptions.\n\n**Notes (copy-vs-mutate contract):**\n- `inplace=False` is the default and is side-effect-free with respect to the caller\u2019s DataFrame object. All normalization and feature creation happen on the returned copy; the original object keeps its original columns and its source date column is not coerced on that object.\n- `inplace=True` mutates the passed DataFrame directly. The same object gains the generated columns, and any needed datetime coercion of `date_field_name` occurs on that original object.\n- Both modes return a DataFrame. In-place mode must not return `None`.\n- The original source column remains present in the working DataFrame; generated columns are appended after it rather than replacing it.\n\n### Component: Generated columns on the selected working frame\n\nThe copy/in-place choice affects which DataFrame receives the normal `add_date_features` output schema; it does not change the feature names or their order. For a source column named `dateCol` and the default `time=True`, the working DataFrame has these columns after transformation:\n\n1. `dateCol`\n2. `dateColYear`\n3. `dateColMonth`\n4. `dateColWeek`\n5. `dateColDay`\n6. `dateColDayOfWeek`\n7. `dateColDayOfYear`\n8. `dateColIsMonthEnd`\n9. `dateColIsMonthStart`\n10. `dateColIsQuarterEnd`\n11. `dateColIsQuarterStart`\n12. `dateColIsYearEnd`\n13. `dateColIsYearStart`\n14. `dateColHour`\n15. `dateColMinute`\n16. `dateColSecond`\n\nWhen `inplace=False`, this schema appears only on the returned DataFrame. When `inplace=True`, this schema appears on the caller\u2019s original DataFrame as well as on the returned same object.\n\n### Component: Supporting normalization behavior\n\nA supporting datetime-normalization step runs before feature extraction. For this ability, its required behavior is that it acts only on the DataFrame object selected by `add_date_features`: the copied working frame in default mode, or the original frame in in-place mode. This keeps source-column coercion consistent with the same copy-vs-mutate contract as the appended feature columns.", "pypi_name": "datetransform", "import_names": ["datetransform"], "passed_ptp": ["tests/test_transform.py::test_add_date_features", "tests/test_transform.py::test_inplace_transform", "tests/test_transform.py::test_not_inplace_transform"], "failed_ptp": [], "test_binary_archive_b64": "", "expected_coverage_percent": 94.7368, "responses_create_params": {"input": [{"role": "user", "content": "## 1. Overview\n\n`datetransform` is a small Python library for date-oriented feature engineering in pandas DataFrames. Its purpose is to take a single date or timestamp column, normalize it into pandas datetime form, and expand it into a set of machine-learning-friendly calendar fields. Rather than providing a standalone application or service, the repository exposes a simple Python API that fits directly into notebook, script, and data-preparation workflows.\n\nThe main entry point is `add_date_features`, which accepts a DataFrame and the name of a source date column. It can parse string-like date values, preserve already-typed datetime columns, and then append derived fields such as year, month, week, day, weekday, day-of-year, and month-, quarter-, and year-boundary flags. When needed, the same transform can also extract hour, minute, and second values so timestamp columns contribute time-of-day information as well as calendar structure.\n\nMajor workflow in this repository:\n- **Date normalization**: convert a specified column to pandas datetime when it is not already in a datetime dtype.\n- **Calendar feature expansion**: generate a broad set of derived date-part columns from the source field.\n- **Optional time extraction**: include hour, minute, and second features for timestamp data.\n- **Flexible DataFrame handling**: either mutate the original DataFrame in place or return an augmented copy.\n\nIn practice, `datetransform` is best understood as a focused preprocessing component for tabular analytics and model-building pipelines that need consistent, repeatable date feature extraction.\n\n## Date column normalization\n\nThis ability is the normalization step of `datetransform`: before date-derived features are added, the selected DataFrame column is made usable through pandas datetime accessors. Normalization is part of the public `add_date_features` workflow, so callers may provide parseable string/object date columns as well as existing pandas datetime columns.\n\n### Component: Public normalization entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary tested package-module form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n- README/public direct form: `from datetransform.transform import add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters relevant to normalization:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the column to normalize and then use for feature extraction.\n- `time` (`bool`, default `True`): Controls later time-of-day feature creation; it does not disable the normalization step.\n- `inplace` (`bool`, default `False`): Selects which DataFrame object is normalized. With the default `False`, normalization occurs on a copied working DataFrame. With `True`, normalization occurs on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The working DataFrame after normalization and feature expansion. The original source column remains present in the returned DataFrame, but within the working DataFrame that column is converted to a pandas datetime-like dtype when conversion is needed.\n\n**Normalization contract:**\n- `add_date_features` ensures `df[date_field_name]` is datetime-like before any `.dt`-based feature extraction is performed.\n- If the source column is not already datetime-like, parseable values such as date/time strings are converted using pandas datetime parsing behavior.\n- If the source column is already datetime-like, it remains usable for pandas `.dt` access rather than being reparsed as strings.\n- Timezone-aware pandas datetime columns are accepted as already datetime-like and should remain valid for feature extraction.\n- The conversion updates the source column in the DataFrame object currently being operated on. Therefore, with `inplace=False`, the caller\u2019s original DataFrame is not normalized or expanded; with `inplace=True`, the caller\u2019s original DataFrame has its source column normalized before new feature columns are appended.\n\n**Failure behavior:**\n- `add_date_features` does not define repository-specific exception types and does not wrap pandas errors.\n- A missing `date_field_name` propagates the normal DataFrame indexing error.\n- Values that pandas cannot parse as datetimes, or columns that cannot support datetime accessor-based extraction after attempted conversion, propagate the corresponding pandas/numpy exception rather than being silently ignored or replaced.\n\n### Component: Supporting normalization helper\n\nA supporting helper named `make_date` centralizes the datetime coercion used by `add_date_features`. It should be treated as an implementation support point for this workflow rather than the primary documented user entry point. Its behavioral role is to inspect the selected column in the working DataFrame, leave datetime-like and timezone-aware datetime data usable as datetime data, and convert non-datetime parseable data into pandas datetime form so later calendar and time extraction can rely on `.dt` accessors.\n\nCalendar feature expansion and optional time component extraction both depend on this invariant: the selected source column in the working DataFrame is normalized before derived columns are computed.\n\n## Calendar feature expansion\n\nCalendar feature expansion is the core `datetransform` workflow that turns one normalized pandas date/timestamp column into a stable set of calendar-derived feature columns. The public entry point is `datetransform.transform.add_date_features`; it retains the source column, appends derived calendar fields in a fixed order, and returns the augmented `DataFrame`.\n\n### Component: Public calendar feature API\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Import Path**:\n- Primary tested form: `from datetransform import transform`, then call `transform.add_date_features(...)`.\n- Public README form: `from datetransform.transform import add_date_features`.\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): Input dataframe containing the source date column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, hour/minute/second columns are appended after the calendar columns. Calendar columns are always produced regardless of this flag.\n- `inplace` (`bool`, default `False`): Controls whether the original dataframe object is modified.\n\n**Returns:**\n- Always returns a `pd.DataFrame`.\n- With `inplace=False`, the returned dataframe is a copied dataframe; the original input dataframe is left unchanged.\n- With `inplace=True`, the passed dataframe is mutated and the same dataframe object is returned.\n\n**Source-column contract:**\n- The source column named by `date_field_name` remains present as the first column in the returned dataframe.\n- Before derived values are read, the source column is made datetime-compatible so pandas `.dt` calendar accessors can be used. In the returned dataframe, that retained source column reflects this normalized datetime-compatible form.\n\n### Component: Calendar columns and value semantics\n\nFor a source column named `dateCol`, `add_date_features` appends the following 12 calendar columns immediately after the retained source column, in exactly this order and before any optional time columns:\n\n1. `dateColYear`\n2. `dateColMonth`\n3. `dateColWeek`\n4. `dateColDay`\n5. `dateColDayOfWeek`\n6. `dateColDayOfYear`\n7. `dateColIsMonthEnd`\n8. `dateColIsMonthStart`\n9. `dateColIsQuarterEnd`\n10. `dateColIsQuarterStart`\n11. `dateColIsYearEnd`\n12. `dateColIsYearStart`\n\nFor any other `date_field_name`, the same suffixes are concatenated directly to that field name. The calendar values follow pandas datetime accessor semantics:\n\n| Output suffix | Value source |\n| --- | --- |\n| `Year` | `series.dt.year` |\n| `Month` | `series.dt.month` |\n| `Week` | `series.dt.week` / pandas week-of-year semantics, not a separately computed ISO-calendar dataframe |\n| `Day` | `series.dt.day` |\n| `DayOfWeek` | `series.dt.dayofweek` |\n| `DayOfYear` | `series.dt.dayofyear` |\n| `IsMonthEnd` | `series.dt.is_month_end` |\n| `IsMonthStart` | `series.dt.is_month_start` |\n| `IsQuarterEnd` | `series.dt.is_quarter_end` |\n| `IsQuarterStart` | `series.dt.is_quarter_start` |\n| `IsYearEnd` | `series.dt.is_year_end` |\n| `IsYearStart` | `series.dt.is_year_start` |\n\nWith the default `time=True`, the optional time columns are appended only after these calendar columns; time extraction is documented separately but must not alter the calendar column order.\n\n### Component: Failure behavior\n\n`datetransform.transform.add_date_features` does not add a repository-specific validation or exception layer for this ability. A missing `date_field_name`, an unparseable date column, or a column that cannot support pandas datetime access should surface the corresponding pandas/numpy exception rather than being silently ignored or converted into a custom error.\n\n## Time component extraction\n\nTime component extraction is the optional part of `datetransform` feature generation that adds time-of-day signals from a timestamp column. It is controlled by the public `add_date_features` workflow: calendar features are always produced, and the `time` flag only decides whether hour, minute, and second columns are appended.\n\n### Component: Public time-aware transform\n\n**Import Path**:\n- Primary module call form: `from datetransform import transform`, then `transform.add_date_features(...)`\n- Direct function form: `from datetransform.transform import add_date_features`\n\n#### Function: `datetransform.transform.add_date_features`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When truthy, append the three time-of-day columns. When falsey, omit only those three columns; the standard calendar-derived columns are still added.\n- `inplace` (`bool`, default `False`): When `False`, operate on a copy and leave the original DataFrame unchanged. When `True`, mutate the passed DataFrame directly. The same rule applies to both the source-column datetime conversion and the added time columns.\n\n**Returns:**\n- `pd.DataFrame`: The transformed DataFrame. With `inplace=False`, this is an augmented copy. With `inplace=True`, this is the same DataFrame object after mutation.\n\n**Time output contract:**\n- Before feature extraction, the working DataFrame\u2019s `df[date_field_name]` is converted to a pandas datetime-like column when necessary. The returned DataFrame, or the original DataFrame in `inplace=True` mode, therefore contains the normalized datetime source column rather than leaving a parseable string column untouched.\n- Existing columns keep their original relative order, and new feature columns are appended.\n- For a source-only DataFrame with `date_field_name='dateCol'` and default `time=True`, the full column order is exactly:\n 1. `dateCol`\n 2. `dateColYear`\n 3. `dateColMonth`\n 4. `dateColWeek`\n 5. `dateColDay`\n 6. `dateColDayOfWeek`\n 7. `dateColDayOfYear`\n 8. `dateColIsMonthEnd`\n 9. `dateColIsMonthStart`\n 10. `dateColIsQuarterEnd`\n 11. `dateColIsQuarterStart`\n 12. `dateColIsYearEnd`\n 13. `dateColIsYearStart`\n 14. `dateColHour`\n 15. `dateColMinute`\n 16. `dateColSecond`\n- For other source column names, the same suffixes are concatenated directly to `date_field_name`, so the time-specific names are `f\"{date_field_name}Hour\"`, `f\"{date_field_name}Minute\"`, and `f\"{date_field_name}Second\"`.\n- The time values correspond to the pandas datetime hour, minute, and second components. For example, the timestamp string `'2019-08-09 16:39:47'` produces `Hour=16`, `Minute=39`, and `Second=47` in the generated time columns.\n- With `time=False`, the output stops after the fixed calendar feature set through `f\"{date_field_name}IsYearStart\"`; `Hour`, `Minute`, and `Second` columns are not added.\n\n**Raises / failure behavior:**\n- This API does not define repository-specific exception classes or wrap pandas failures.\n- A missing `date_field_name` propagates the normal DataFrame column-access error.\n- Unparseable values or invalid datetime-access operations propagate the corresponding pandas/numpy errors.\n\n### Component: Datetime preparation dependency\n\nTime extraction depends on an internal normalization step that makes the source column compatible with pandas datetime accessors before reading hour, minute, and second. Parseable string/object columns are converted in the working DataFrame, while already datetime-like columns, including timezone-aware datetime columns, are accepted as datetime inputs. This normalization behavior is observable through `add_date_features`; it does not need to be called separately for time extraction.\n\n## In-place or copied transforms\n\nThis ability controls whether `datetransform` appends generated date/time features to a new `pandas.DataFrame` or directly to the caller\u2019s existing frame. The behavior is governed by the `inplace` parameter on the public `add_date_features` workflow, and it applies to both datetime normalization and feature-column creation.\n\n### Component: Public transform entry point\n\n#### Function: `add_date_features`\n\n**Import Path**:\n- Primary public function import: `from datetransform.transform import add_date_features`\n- Supported module import form: `from datetransform import transform`, then call `transform.add_date_features(...)`\n\n**Signature:**\n```python\ndef add_date_features(\n df: pd.DataFrame,\n date_field_name: str,\n time=True,\n inplace=False,\n) -> pd.DataFrame:\n ...\n```\n\n**Parameters:**\n- `df` (`pd.DataFrame`): DataFrame containing the source date or timestamp column.\n- `date_field_name` (`str`): Name of the source column to normalize and expand.\n- `time` (`bool`, default `True`): When true, include `Hour`, `Minute`, and `Second` columns in addition to the calendar columns.\n- `inplace` (`bool`, default `False`): Selects whether the transform operates on a copy or on the original `df` object.\n\n**Returns:**\n- `pd.DataFrame`: The DataFrame containing the original source column plus generated feature columns.\n- With `inplace=False`, the returned value is a different DataFrame object from the caller\u2019s input.\n- With `inplace=True`, the returned value is the same DataFrame object that was passed in, after mutation.\n\n**Raises:**\n- No repository-specific exceptions are defined for this mode. Missing columns, unparseable date values, or pandas datetime-accessor failures should surface as the corresponding pandas/numpy exceptions.\n\n**Notes (copy-vs-mutate contract):**\n- `inplace=False` is the default and is side-effect-free with respect to the caller\u2019s DataFrame object. All normalization and feature creation happen on the returned copy; the original object keeps its original columns and its source date column is not coerced on that object.\n- `inplace=True` mutates the passed DataFrame directly. The same object gains the generated columns, and any needed datetime coercion of `date_field_name` occurs on that original object.\n- Both modes return a DataFrame. In-place mode must not return `None`.\n- The original source column remains present in the working DataFrame; generated columns are appended after it rather than replacing it.\n\n### Component: Generated columns on the selected working frame\n\nThe copy/in-place choice affects which DataFrame receives the normal `add_date_features` output schema; it does not change the feature names or their order. For a source column named `dateCol` and the default `time=True`, the working DataFrame has these columns after transformation:\n\n1. `dateCol`\n2. `dateColYear`\n3. `dateColMonth`\n4. `dateColWeek`\n5. `dateColDay`\n6. `dateColDayOfWeek`\n7. `dateColDayOfYear`\n8. `dateColIsMonthEnd`\n9. `dateColIsMonthStart`\n10. `dateColIsQuarterEnd`\n11. `dateColIsQuarterStart`\n12. `dateColIsYearEnd`\n13. `dateColIsYearStart`\n14. `dateColHour`\n15. `dateColMinute`\n16. `dateColSecond`\n\nWhen `inplace=False`, this schema appears only on the returned DataFrame. When `inplace=True`, this schema appears on the caller\u2019s original DataFrame as well as on the returned same object.\n\n### Component: Supporting normalization behavior\n\nA supporting datetime-normalization step runs before feature extraction. For this ability, its required behavior is that it acts only on the DataFrame object selected by `add_date_features`: the copied working frame in default mode, or the original frame in in-place mode. This keeps source-column coercion consistent with the same copy-vs-mutate contract as the appended feature columns."}]}}
diff --git a/resources_servers/denovo_swe/data/example_metrics.json b/resources_servers/denovo_swe/data/example_metrics.json
new file mode 100644
index 00000000000..061e442a70f
--- /dev/null
+++ b/resources_servers/denovo_swe/data/example_metrics.json
@@ -0,0 +1,106 @@
+{
+ "name": "example",
+ "type": "example",
+ "jsonl_fpath": "resources_servers/denovo_swe/data/example.jsonl",
+ "num_repeats": 1,
+ "source": null,
+ "gitlab_identifier": null,
+ "huggingface_identifier": null,
+ "license": null,
+ "Number of examples": 5,
+ "Number of tools": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "Json-dumped number of words (proxy for token count)": {
+ "Total # non-null values": 5,
+ "Average": 2004.6,
+ "Min": 1884.0,
+ "Max": 2151.0,
+ "Standard deviation": 99.57
+ },
+ "Number of turns": {
+ "Total # non-null values": 5,
+ "Average": 1.0,
+ "Min": 1.0,
+ "Max": 1.0,
+ "Standard deviation": 0.0
+ },
+ "Temperature": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "instance_id": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "repo": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "github_url": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "language": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "workdir": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "image_ref": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "base_commit": {
+ "unique_count": 4,
+ "total_count": 5
+ },
+ "patch": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "test_patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "document": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "problem_statement": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "pypi_name": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "import_names": {
+ "unique_count": 4,
+ "total_count": 4
+ },
+ "passed_ptp": {
+ "unique_count": 18,
+ "total_count": 18
+ },
+ "test_binary_archive_b64": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "expected_coverage_percent": {
+ "Total # non-null values": 5,
+ "Average": 92.39,
+ "Min": 77.78,
+ "Max": 100.0,
+ "Standard deviation": 9.27
+ }
+}
\ No newline at end of file
diff --git a/resources_servers/denovo_swe/data/example_rollouts.jsonl b/resources_servers/denovo_swe/data/example_rollouts.jsonl
new file mode 100644
index 00000000000..b9bf213fe02
--- /dev/null
+++ b/resources_servers/denovo_swe/data/example_rollouts.jsonl
@@ -0,0 +1,5 @@
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "nkantar_keysort_pr-1", "language": "python", "test_results": {"_test_completed": true, "passed": 2, "failed": 0, "errors": 0, "total_expected": 2, "pass_rate": 1.0, "accepted": true, "reward": "1", "expected_coverage_percent": 100.0, "per_file": {"tests/test_attrsort.py": {"expected": 1, "passed": 1, "failed": 0, "errors": 0, "exit": 0, "collected": 1, "missing_ids": 0, "collection_failed": false, "output_tail": ". [100%]\n1 passed in 0.00s\n"}, "tests/test_keysort.py": {"expected": 1, "passed": 1, "failed": 0, "errors": 0, "exit": 0, "collected": 1, "missing_ids": 0, "collection_failed": false, "output_tail": ". [100%]\n1 passed in 0.00s\n"}}, "duration": 3.1354385821614414}, "test_output": "Your branch is up to date with 'origin/main'.\n___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___\n{\n \"_test_completed\": true,\n \"passed\": 2,\n \"failed\": 0,\n \"errors\": 0,\n \"total_expected\": 2,\n \"pass_rate\": 1.0,\n \"accepted\": true,\n \"reward\": \"1\",\n \"expected_coverage_percent\": 100.0,\n \"per_file\": {\n \"tests/test_attrsort.py\": {\n \"expected\": 1,\n \"passed\": 1,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 1,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \". [100%]\\n1 passed in 0.00s\\n\"\n },\n \"tests/test_keysort.py\": {\n \"expected\": 1,\n \"passed\": 1,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 1,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \". [100%]\\n1 passed in 0.00s\\n\"\n }\n },\n \"duration\": 3.1354385821614414\n}___NEMO_GYM_DENOVO_SWE_REPORT_END___\n", "error": null, "eval_sandbox_start_time_taken": 13.589493036270142, "patch_verification_time_taken": 28.817501306533813, "_ng_task_index": 0, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "oliverlambson_fastnanoid_pr9", "language": "python", "test_results": {"_test_completed": true, "passed": 1, "failed": 0, "errors": 0, "total_expected": 1, "pass_rate": 1.0, "accepted": true, "reward": "1", "expected_coverage_percent": 77.7778, "per_file": {"tests/test_fastnanoid.py": {"expected": 1, "passed": 1, "failed": 0, "errors": 0, "exit": 0, "collected": 1, "missing_ids": 0, "collection_failed": false, "output_tail": ". [100%]\n1 passed in 0.00s\n"}}, "duration": 1.8736914049368352}, "test_output": "___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___\n{\n \"_test_completed\": true,\n \"passed\": 1,\n \"failed\": 0,\n \"errors\": 0,\n \"total_expected\": 1,\n \"pass_rate\": 1.0,\n \"accepted\": true,\n \"reward\": \"1\",\n \"expected_coverage_percent\": 77.7778,\n \"per_file\": {\n \"tests/test_fastnanoid.py\": {\n \"expected\": 1,\n \"passed\": 1,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 1,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \". [100%]\\n1 passed in 0.00s\\n\"\n }\n },\n \"duration\": 1.8736914049368352\n}___NEMO_GYM_DENOVO_SWE_REPORT_END___\n", "error": null, "eval_sandbox_start_time_taken": 11.93303894996643, "patch_verification_time_taken": 62.79063940048218, "_ng_task_index": 1, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "linjackson78_jstyleson_pr3", "language": "python", "test_results": {"_test_completed": true, "passed": 2, "failed": 0, "errors": 0, "total_expected": 2, "pass_rate": 1.0, "accepted": true, "reward": "1", "expected_coverage_percent": 89.4118, "per_file": {"tests/jstyleson_test.py": {"expected": 2, "passed": 2, "failed": 0, "errors": 0, "exit": 0, "collected": 2, "missing_ids": 0, "collection_failed": false, "output_tail": ".. [100%]\n2 passed in 0.00s\n"}}, "duration": 2.75971683091484}, "test_output": "___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___\n{\n \"_test_completed\": true,\n \"passed\": 2,\n \"failed\": 0,\n \"errors\": 0,\n \"total_expected\": 2,\n \"pass_rate\": 1.0,\n \"accepted\": true,\n \"reward\": \"1\",\n \"expected_coverage_percent\": 89.4118,\n \"per_file\": {\n \"tests/jstyleson_test.py\": {\n \"expected\": 2,\n \"passed\": 2,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 2,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \".. [100%]\\n2 passed in 0.00s\\n\"\n }\n },\n \"duration\": 2.75971683091484\n}___NEMO_GYM_DENOVO_SWE_REPORT_END___\n", "error": null, "eval_sandbox_start_time_taken": 11.580904960632324, "patch_verification_time_taken": 28.828298330307007, "_ng_task_index": 2, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "ebeweber_flake8-mutable_pr8", "language": "python", "test_results": {"_test_completed": true, "passed": 10, "failed": 0, "errors": 0, "total_expected": 10, "pass_rate": 1.0, "accepted": true, "reward": "1", "expected_coverage_percent": 100.0, "per_file": {"tests/mutable_defaults_test.py": {"expected": 10, "passed": 10, "failed": 0, "errors": 0, "exit": 0, "collected": 10, "missing_ids": 0, "collection_failed": false, "output_tail": ".......... [100%]\n10 passed in 0.01s\n"}}, "duration": 1.593610994052142}, "test_output": "___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___\n{\n \"_test_completed\": true,\n \"passed\": 10,\n \"failed\": 0,\n \"errors\": 0,\n \"total_expected\": 10,\n \"pass_rate\": 1.0,\n \"accepted\": true,\n \"reward\": \"1\",\n \"expected_coverage_percent\": 100.0,\n \"per_file\": {\n \"tests/mutable_defaults_test.py\": {\n \"expected\": 10,\n \"passed\": 10,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 10,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \".......... [100%]\\n10 passed in 0.01s\\n\"\n }\n },\n \"duration\": 1.593610994052142\n}___NEMO_GYM_DENOVO_SWE_REPORT_END___\n", "error": null, "eval_sandbox_start_time_taken": 12.448364734649658, "patch_verification_time_taken": 28.79856777191162, "_ng_task_index": 3, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "brandonschabell_datetransform_pr-1", "language": "python", "test_results": {"_test_completed": true, "passed": 3, "failed": 0, "errors": 0, "total_expected": 3, "pass_rate": 1.0, "accepted": true, "reward": "1", "expected_coverage_percent": 94.7368, "per_file": {"tests/test_transform.py": {"expected": 3, "passed": 3, "failed": 0, "errors": 0, "exit": 0, "collected": 3, "missing_ids": 0, "collection_failed": false, "output_tail": "... [100%]\n=============================== warnings summary ===============================\ntests/test_transform.py::test_add_date_features\ntests/test_transform.py::test_inplace_transform\ntests/test_transform.py::test_not_inplace_transform\n /workspace/datetransform/datetransform/transform.py:14: FutureWarning: Series.dt.weekofyear and Series.dt.week have been deprecated. Please use Series.dt.isocalendar().week instead.\n df[date_field_name + n.replace('_', '')] = getattr(field.dt, n.lower())\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n3 passed, 3 warnings in 0.21s\n"}}, "duration": 9.226358050946146}, "test_output": "Your branch is up to date with 'origin/master'.\n___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___\n{\n \"_test_completed\": true,\n \"passed\": 3,\n \"failed\": 0,\n \"errors\": 0,\n \"total_expected\": 3,\n \"pass_rate\": 1.0,\n \"accepted\": true,\n \"reward\": \"1\",\n \"expected_coverage_percent\": 94.7368,\n \"per_file\": {\n \"tests/test_transform.py\": {\n \"expected\": 3,\n \"passed\": 3,\n \"failed\": 0,\n \"errors\": 0,\n \"exit\": 0,\n \"collected\": 3,\n \"missing_ids\": 0,\n \"collection_failed\": false,\n \"output_tail\": \"... [100%]\\n=============================== warnings summary ===============================\\ntests/test_transform.py::test_add_date_features\\ntests/test_transform.py::test_inplace_transform\\ntests/test_transform.py::test_not_inplace_transform\\n /workspace/datetransform/datetransform/transform.py:14: FutureWarning: Series.dt.weekofyear and Series.dt.week have been deprecated. Please use Series.dt.isocalendar().week instead.\\n df[date_field_name + n.replace('_', '')] = getattr(field.dt, n.lower())\\n\\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\\n3 passed, 3 warnings in 0.21s\\n\"\n }\n },\n \"duration\": 9.226358050946146\n}___NEMO_GYM_DENOVO_SWE_REPORT_END___\n", "error": null, "eval_sandbox_start_time_taken": 12.406269550323486, "patch_verification_time_taken": 42.29620337486267, "_ng_task_index": 4, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}}
diff --git a/resources_servers/denovo_swe/data/supported_instance_ids.txt b/resources_servers/denovo_swe/data/supported_instance_ids.txt
new file mode 100644
index 00000000000..f987b61f12d
--- /dev/null
+++ b/resources_servers/denovo_swe/data/supported_instance_ids.txt
@@ -0,0 +1,3076 @@
+0b01001001_spectree_pr-1
+10sr_flake8-no-implicit-concat_pr-1
+20c_ctl_pr-1
+23andme_yamale_pr-1
+2gis_k8s-handle_pr-1
+4catalyzer_flask-annex_pr-1
+4n4nd_prometheus-api-client-python_pr-1
+4subsea_waveresponse-python_pr-1
+a-luna_fastapi-redis-cache_pr-1
+a-parida12_pdf2dcm_pr-1
+a2aproject_a2a-python_pr472
+aarande_nexradaws_pr-1
+aaronn_django-rest-framework-passwordless_pr133
+aashish-khub_nearestneighbors_pr-1
+abdelrahman0w_ouro_pr-1
+abe-winter_automigrate_pr-1
+abersheeran_a2wsgi_pr-1
+abhishekbhakat_airflow-mcp-server_pr-1
+abs-tudelft_vhdeps_pr-1
+absent1706_sqlalchemy-mixins_pr73
+academic-innovation_django-lti_pr-1
+accruent_robotframework-zoomba_pr-1
+achimnol_aiotools_pr-1
+acksmaggart_columnar_pr-1
+acorg_seqgen_pr-1
+acsone_manifestoo-core_pr-1
+adafruit_adafruit_circuitpython_requests_pr217
+adafruit_circup_pr-1
+adamchainz_blacken-docs_pr-1
+adamchainz_django-cors-headers_pr451
+adamchainz_django-perf-rec_pr1
+adamchainz_ec2-metadata_pr572
+adamchainz_flake8-tidy-imports_pr505
+adamchainz_patchy_pr524
+adamchainz_pip-lock_pr-1
+adamchainz_time-machine_pr-1
+adamchainz_treepoem_pr595
+adamghill_django-unicorn_pr697
+adamjstewart_fiscalyear_pr25
+adamtheturtle_pip-check-reqs_pr189
+adap_flower_pr2992
+adbar_simplemma_pr-1
+addisonelliott_pyqt5ac_pr-1
+adlarkin_mjpl_pr-1
+adrianusler_massaction_pr-1
+aequitas_python-rflink_pr-1
+aeturrell_skimpy_pr-1
+aevri_ropecli_pr-1
+afeld_sodapy_pr-1
+afroisalreadyinu_miniboss_pr-1
+agencyenterprise_docstring-auditor_pr-1
+agent-hellboy_gunicorn-prometheus-exporter_pr-1
+agentops-ai_tokencost_pr119
+agh-a2s_pyhms_pr-1
+agilescientific_striplog_pr-1
+ahawker_ulid_pr476
+ahayworth_python_awair_pr-1
+ahknight_httpsig_pr15
+ahopkins_mayim_pr-1
+ai4s2s_lilio_pr-1
+aiida-vasp_parsevasp_pr-1
+aiidalab_aiidalab_pr-1
+aiidateam_reentry_pr-1
+aio-libs_aiohttp-jinja2_pr-1
+aio-libs_aiohttp-sse_pr-1
+aio-libs_aioodbc_pr289
+aio-libs_aiorwlock_pr503
+aio-libs_aiozipkin_pr385
+aio-libs_async-lru_pr-1
+aio-libs_janus_pr-1
+aiogram_aiogram_pr-1
+aiokitchen_aiomisc_pr233
+aiplan4eu_embedded-systems-bridge_pr-1
+aisk_pick_pr-1
+akikuno_cstag_pr-1
+aklajnert_changelogd_pr-1
+akx_pylint-to-ruff_pr-1
+alan-turing-institute_setvis_pr-1
+alankan886_supermemo2_pr-1
+alation_allie-sdk_pr-1
+albertyw_git-browse_pr-1
+aleksanderwww_abcd-graph_pr-1
+alephdata_followthemoney_pr-1
+alerta_python-alerta-client_pr-1
+alex-sherman_unsync_pr41
+alex9smith_gdelt-doc-api_pr-1
+alex_pretend_pr14
+alex_rply_pr101
+alexander-akhmetov_python-telegram_pr408
+alexei-kornienko_schematics_to_swagger_pr-1
+alexgolec_schwab-py_pr-1
+alexgolec_tda-api_pr-1
+alexis-benoist_eralchemy_pr120
+alexprengere_currencyconverter_pr28
+alfonsrv_mail-parser-reply_pr-1
+ali-ramadhan_matplotloom_pr-1
+alisaifee_flask-limiter_pr-1
+allo-media_text2num_pr-1
+allrod5_parameters-validation_pr-1
+alm0ra_mockafka-py_pr-1
+almarklein_asgineer_pr-1
+almarklein_timetagger_cli_pr-1
+almas-ali_envist_pr-1
+almenscorner_intunecd_pr-1
+alonfnt_notata_pr-1
+alonfnt_tsnex_pr-1
+alpacahq_alpaca-py_pr634
+alpacahq_alpaca-trade-api-python_pr483
+alphahm_adhanpy_pr-1
+alpinweis_pycircleci_pr-1
+altair-viz_altair_pr3647
+altcha-org_altcha-lib-py_pr-1
+altschool_dynamic-rest_pr286
+alugowski_matrepr_pr-1
+alvinwan_texsoup_pr-1
+alysivji_finite-state-machine_pr-1
+amadeus4dev_amadeus-python_pr-1
+amanda-f-ndsu_byte_le_royale_2023_pr-1
+amazon-braket_autoqasm_pr-1
+ambv_retype_pr-1
+ami-iit_liecasadi_pr-1
+amirziai_flatten_pr61
+amitdev_lru-dict_pr74
+amjith_fuzzyfinder_pr29
+amorey_starlette-wtf_pr-1
+amplify-education_python-hcl2_pr-1
+andersinno_python-database-sanitizer_pr-1
+andrasmaroy_pconf_pr-1
+andreihar_taibun_pr-1
+andrenarchy_stellar-observatory_pr-1
+andreroggeri_pynubank_pr410
+andrewgodwin_urlman_pr12
+andrewsayre_pyheos_pr-1
+andrewvillazon_pbipy_pr-1
+andrewyates_profane_pr-1
+andrewyng_aisuite_pr28
+andrivet_python-asn1_pr285
+andy-z_ged4py_pr-1
+angr_claripy_pr-1
+anitagraser_movingpandas_pr482
+anmarkoulis_clickup-to-jira_pr-1
+anntzer_defopt_pr132
+anntzer_mplcursors_pr54
+ansatzcapital_dilib_pr-1
+ansys_ansys-tools-visualization-interface_pr419
+ansys_pypim_pr-1
+ansys_pysherlock_pr-1
+anthropics_claude-agent-sdk-python_pr298
+antirotor_speedcopy_pr-1
+antonagestam_abcattrs_pr-1
+antonkueltz_fastecdsa_pr97
+antonosika_gpt-engineer_pr1191
+aodag_eqassertions_pr-1
+apetrynet_pyfdl_pr-1
+apeworx_ethpm-types_pr-1
+apeworx_evm-trace_pr-1
+apollo-roboto_python-pathschema_pr-1
+app-sre_rh-aws-saml-login_pr-1
+appium_python-client_pr701
+appthreat_atom-tools_pr-1
+appthreat_vulnerability-db_pr-1
+apptuitai_apptuit-py_pr-1
+apryor6_flask_accepts_pr-1
+ar4s_flake8_tuple_pr19
+aradi_fypp_pr-1
+aredwood_zonefile-parser_pr-1
+arena-ai_structured-logprobs_pr-1
+aresponses_aresponses_pr81
+ariebovenberg_whenever_pr297
+arkecosystem_python-crypto_pr-1
+arkq_flake8-requirements_pr91
+arkx_mpyq_pr33
+arm_metis_pr-1
+armmbed_mbed-tools_pr-1
+arnaoutlab_diversity_pr-1
+arnaudmiribel_streamlit-extras_pr274
+art1415926535_graphene-sqlalchemy-filter_pr-1
+artificial-life-lab_population-dynamics_pr-1
+arvkevi_kneed_pr65
+arxivtimes_arxivtimesindicator_pr-1
+aryadhruv_llmworkbook_pr-1
+asem000_pytreeclass_pr-1
+asf-transfer_burr_pr193
+asfhyp3_hyp3-sdk_pr-1
+asottile_add-trailing-comma_pr236
+asottile_aspy.refactor_imports_pr106
+asottile_astpretty_pr100
+asottile_blacken-docs_pr375
+asottile_cfgv_pr122
+asottile_classify-imports_pr139
+asottile_covdefaults_pr63
+asottile_dead_pr-1
+asottile_flake8-2020_pr75
+asottile_flake8-typing-imports_pr179
+asottile_onigurumacffi_pr24
+asottile_pyupgrade_pr1017
+asottile_re-assert_pr54
+asottile_reorder-python-imports_pr289
+asottile_setup-cfg-fmt_pr-1
+asottile_yesqa_pr-1
+aspectumapp_osm2geojson_pr55
+assertpy_assertpy_pr152
+astamminger_zotero-bibtize_pr-1
+astanin_python-tabulate_pr342
+astrabert_opencode-client_pr-1
+astrojuanlu_sphinx-github-role_pr-1
+astronomer_airflow-provider-great-expectations_pr164
+astronomer_astro-provider-anyscale_pr-1
+astronomer_astro-provider-ray_pr-1
+astropenguin_pandas-dataclasses_pr-1
+astropenguin_xarray-custom_pr-1
+astropenguin_xarray-dataclasses_pr-1
+astropenguin_xarray-units_pr-1
+astropy_astropy-healpix_pr252
+astropy_pytest-astropy-header_pr34
+astropy_pyvo_pr323
+astropy_sphinx-automodapi_pr142
+asuiu_streamerate_pr15
+asyncgui_asyncgui_pr135
+asyncgui_asynckivy_pr193
+atac_pychapter10_pr-1
+athackst_mkdocs-simple-plugin_pr-1
+atlas-outreach-data-tools_atlasopenmagic_pr-1
+atlassian-labs_observe_pr-1
+atlassian_asap-authentication-python_pr130
+attwad_python-osc_pr185
+aurzenligl_prophy_pr33
+aurzenligl_pytest-logger_pr36
+austind_retryhttp_pr30
+authlib_authlib_pr827
+authlib_joserfc_pr63
+autoinvent_magql_pr-1
+autoscrape-labs_pydoll_pr234
+avast_pytest-docker_pr115
+avendesora_pythonbible_pr-1
+averbis_averbis-python-api_pr-1
+avian2_jsonmerge_pr29
+aviate-labs_node-monitor_pr-1
+avihad_twistes_pr-1
+aviramha_ormsgpack_pr456
+avrae_draconic_pr-1
+awdeorio_mailmerge_pr-1
+awelzel_flake8-gl-codeclimate_pr-1
+awolverp_cachebox_pr37
+aws-samples_sample-python-helper-aws-appconfig_pr-1
+aws_aws-dynamodb-encryption-python_pr16
+aws_aws-encryption-sdk-cli_pr158
+aws_aws-encryption-sdk-python_pr158
+aws_aws-secretsmanager-caching-python_pr5
+awsdocs_aws-doc-sdk-examples-tools_pr-1
+awslabs_amazon-kinesis-client-python_pr279
+awslabs_amazon-sns-python-extended-client-lib_pr23
+awslabs_amazon-sqs-python-extended-client-lib_pr8
+awslabs_aws-advanced-python-wrapper_pr61
+awslabs_aws-cfn-template-flip_pr111
+awslabs_aws-embedded-metrics-python_pr113
+awslabs_aws-lambda-builders_pr61
+awslabs_aws-serverlessrepo-python_pr30
+awslabs_git-remote-s3_pr44
+awtkns_fastapi-crudrouter_pr48
+azure-samples_cosmic-food-rag-app_pr-1
+azure_msrest-for-python_pr247
+azure_msrestazure-for-python_pr121
+bachya_aioambient_pr-1
+bachya_ecowitt2mqtt_pr-1
+bachya_regenmaschine_pr-1
+bachya_simplisafe-python_pr-1
+backstage_mkdocs-techdocs-core_pr279
+bagerard_flake8-in-file-ignores_pr-1
+bahlo_ing-ynab_pr-1
+balancap_arrowbic_pr-1
+baloise_gitopscli_pr-1
+balthazarneveu_interactive_pipe_pr-1
+bambinos_formulae_pr115
+banesullivan_scooby_pr139
+banksalad_k-format_pr-1
+barrust_pyprobables_pr128
+barrust_pyspellchecker_pr-1
+basnijholt_slurm-usage_pr13
+bastibe_python-soundfile_pr462
+bastikr_boolean.py_pr96
+batfish_pybatfish_pr-1
+bazingagin_npc_gzip_pr37
+bcwaldon_warlock_pr55
+bdaiinstitute_spatialmath-python_pr166
+bdraco_bluetooth-data-tools_pr155
+bdraco_nexia_pr-1
+bearyinnovative_bearychat.py_pr-1
+beautyyuyanli_tooluser_pr-1
+beetbox_mediafile_pr86
+belerico_py-asciimath_pr6
+bellockk_alphashape_pr48
+benardi_touvlo_pr-1
+benavlabs_crudadmin_pr-1
+benavlabs_fastcrud_pr245
+benhovinga_aamva_barcode_library_pr-1
+benhoyt_graphyte_pr18
+benmaier_binpacking_pr-1
+benmoran56_esper_pr116
+bennylope_pydiscourse_pr97
+bentoml_simple_di_pr23
+berkeleyautomation_python-fcl_pr89
+berkerpeksag_astor_pr222
+best-doctor_flake8-class-attributes-order_pr31
+best-doctor_flake8-functions_pr8
+betcode-org_betfair_pr-1
+betodealmeida_python-rison_pr7
+bharel_asynciolimiter_pr22
+bharel_mkdocs-render-swagger-plugin_pr28
+bhomnick_django-nonrelated-inlines_pr2
+bhrutledge_zkeys_pr-1
+bigbag_starlette-request-id_pr1
+bigjason_django-choices_pr46
+biocommons_biocommons.seqrepo_pr200
+biocommons_hgvs_pr775
+biocpy_genomicranges_pr-1
+biocpy_multiassayexperiment_pr-1
+bioio-devs_bioio_pr-1
+biojppm_rapidyaml_pr551
+biolink_biolink-model-toolkit_pr-1
+bionlplab_bioc_pr5
+biopandas_biopandas_pr116
+bjodah_chempy_pr-1
+bjoernricks_python-quilt_pr23
+blairconrad_dicognito_pr-1
+blake-r_pytest-durations_pr36
+blambright_qstylizer_pr9
+blaze_datashape_pr-1
+bloomberg_attrs-strict_pr79
+bloomberg_pytest-memray_pr107
+bluebrain_dir-content-diff_pr-1
+bluesky_bluesky-darkframes_pr-1
+bluesky_scanspec_pr27
+blueswen_mkdocs-swagger-ui-tag_pr26
+bluetooth-devices_async_interrupt_pr13
+bluetooth-devices_bluetooth-adapters_pr102
+bluetooth-devices_bluetooth-data-tools_pr-1
+bluetooth-devices_fnv-hash-fast_pr66
+bluetooth-devices_govee-ble_pr-1
+bluetooth-devices_habluetooth_pr302
+bluetooth-devices_inkbird-ble_pr-1
+bluetooth-devices_mopeka-iot-ble_pr-1
+bluetooth-devices_oralb-ble_pr-1
+bluetooth-devices_ulid-transform_pr27
+bluetooth-devices_usb-devices_pr10
+bluetooth-devices_xiaomi-ble_pr-1
+blurry-dev_blurry_pr-1
+bmcfee_resampy_pr123
+bo4e_bo4e-python_pr-1
+bobfang1992_pytomlpp_pr81
+bobthemighty_punq_pr211
+bookbot-kids_g2p_id_pr-1
+bookieio_breadability_pr35
+bottlepy_bottle_pr1459
+bouke_docx-mailmerge_pr43
+box_box-python-sdk_pr716
+box_flaky_pr201
+bpython_curtsies_pr192
+bradshjg_flask-githubapp_pr-1
+braedon_prometheus-es-exporter_pr-1
+brainblend-ai_atomic-agents_pr147
+brainlesion_brats_pr-1
+brandon-rhodes_python-skyfield_pr51
+brandonschabell_datetransform_pr-1
+brandonschabell_urlpath_pr20
+breid48_cacheing_pr27
+brendanarnold_py-fortranformat_pr31
+brendanhasz_dagio_pr1
+brentp_cyvcf2_pr317
+breqdev_flask-discord-interactions_pr-1
+bretello_fancycompleter_pr19
+brettcannon_gidgethub_pr225
+brettcannon_microvenv_pr-1
+breuleux_ovld_pr3
+brianhelba_zipfile-deflate64_pr26
+brianpugh_autoregistry_pr35
+briggysmalls_pyflipdot_pr-1
+brightway-lca_brightway2-analyzer_pr-1
+brightway-lca_brightway2-data_pr246
+brightway-lca_stats_arrays_pr19
+broadinstitute_cromshell_pr-1
+broadinstitute_cromwell-tools_pr-1
+brocksam_pyproprop_pr-1
+browniebroke_deezer-python_pr-1
+browser-history_browser-history_pr-1
+browserbase_stagehand-python_pr20
+brunobrown_flet-asp_pr-1
+bskinn_flake8-absolute-import_pr19
+btclib-org_btclib_pr-1
+btel_svg_utils_pr104
+bugen_pypipe_pr12
+bugov_aiohttp-basicauth-middleware_pr-1
+buildkite_test-collector-python_pr71
+buriy_python-readability_pr190
+burnash_gspread_pr1531
+buyalsky_ordered-hash-set_pr-1
+bxparks_bigquery-schema-generator_pr99
+bytecodealliance_wasmtime-py_pr320
+byteskeptical_sftpretty_pr1
+c2nes_javalang_pr70
+c4urself_bump2version_pr234
+cadifyai_tool2schema_pr-1
+cagtayfabry_pytcs_pr-1
+caiofcm_filter_pandoc_run_py_pr-1
+caleb531_automata_pr-1
+callowayproject_bump-my-version_pr355
+calston_tensor_pr-1
+camunda-community-hub_pyzeebe_pr-1
+cangyuanli_checkedframe_pr-1
+canonical_data-platform-helpers_pr37
+canonical_jubilant_pr230
+canonical_pylxd_pr299
+canopen-python_canopen_pr-1
+capitalone_datacompy_pr450
+capsulecorplab_mindgraph_pr-1
+carbonplan_xarray-schema_pr38
+careless25_text2digits_pr44
+carletes_mock-ssh-server_pr32
+carletonurocketry_ground-station_pr-1
+carsales_pyheif_pr89
+carsdotcom_skelebot_pr-1
+carsongee_pytest-pylint_pr193
+carsonyl_pypac_pr84
+casabre_pyvisa-proxy_pr-1
+casbin_pycasbin_pr406
+caselit_falcon-auth2_pr-1
+catchemal_doddle_pr-1
+caveconnectome_caveclient_pr-1
+cbornet_blockbuster_pr39
+ccbest_geostructures_pr-1
+cccaballero_manolo_bot_pr-1
+cdayz_blacksheep-prometheus_pr-1
+cdgriffith_puremagic_pr113
+cdriehuys_django-rest-email-auth_pr-1
+cdriehuys_django-simple-email-auth_pr-1
+cdrx_faktory_python_worker_pr40
+cds-astro_ipyaladin_pr-1
+ceb10n_pydantic-settings-aws_pr-1
+censys_censys-python_pr687
+ceph_ceph-medic_pr-1
+cert-polska_karton_pr-1
+cesbit_pyleri_pr24
+cevans87_atools_pr7
+cfmtech_pytest-monitor_pr61
+cgoldberg_xvfbwrapper_pr66
+ch00k_ffmpy_pr-1
+chadrosenquist_logging-test-case_pr3
+chakki-works_seqeval_pr63
+chaostoolkit-incubator_chaostoolkit-aws_pr-1
+chaostoolkit_chaostoolkit_pr250
+chargebee_chargebee-python_pr101
+chendaniely_pyprojroot_pr48
+chezou_tabula-py_pr-1
+childsish_dynamic-yaml_pr32
+chilipp_docrep_pr19
+chimpler_pyhocon_pr322
+chipsalliance_f4pga-sdf-timing_pr-1
+chireiden_python-ass_pr-1
+choderalab_pymbar_pr569
+chrahunt_hlp_pr-1
+chrisdoherty4_python-case-converter_pr-1
+chrisguidry_pytest-opentelemetry_pr35
+chrisjsewell_pytest-notebook_pr41
+chrisjsewell_sphinx-autodoc2_pr40
+chriskuehl_lazy-build_pr-1
+christianhelle_autofaker_pr58
+christippett_ssm-parameter-store_pr5
+christophebedard_dco-check_pr-1
+cicwak_fastsio_pr-1
+cisagov_check-cve-2019-19781_pr-1
+ciscorn_starlette-graphene3_pr31
+cjne_pymyenergi_pr63
+cjrh_aiorun_pr80
+claffin_cloudproxy_pr98
+clamsproject_clams-python_pr-1
+clarkduvall_serpy_pr57
+clarketm_wait-for-it_pr-1
+clarkperkins_click-shell_pr41
+claudep_swiss-qr-bill_pr-1
+cldf_csvw_pr51
+cleder_crepr_pr-1
+clemense_yourdfpy_pr51
+click-contrib_click-didyoumean_pr26
+click-contrib_click-help-colors_pr22
+click-contrib_click-option-group_pr50
+click-contrib_sphinx-click_pr138
+climateimpactlab_impactlab-tools_pr-1
+clld_clldutils_pr102
+cloud-custodian_cel-python_pr137
+cloudevents_sdk-python_pr232
+cloudtools_awacs_pr248
+cloudtools_troposphere_pr2343
+cmungall_json-flattener_pr6
+cneud_alto-tools_pr-1
+cobaltine_json-fingerprint_pr-1
+cobrateam_django-htmlmin_pr150
+codait_exchange-metadata-converter_pr-1
+coddingtonbear_django-measurement_pr-1
+coddingtonbear_python-measurement_pr60
+code-lab-org_tatc_pr-1
+code42_py42_pr-1
+codedawi_pytest-schema_pr2
+codereclaimers_neat-python_pr99
+codesankalp_dsalgo_pr-1
+codingjoe_django-pictures_pr-1
+codingjoe_django-select2_pr295
+codingjoe_django-stdimage_pr324
+codingjoe_relint_pr-1
+codingjoe_ssdp_pr10
+codrsquad_pickley_pr5
+codrsquad_setupmeta_pr91
+cogeotiff_rio-faux_pr-1
+cognitedata_expression_pr224
+cohere-ai_cohere-compass-sdk_pr168
+coinbase_coinbase-advanced-py_pr81
+cole_aiosmtplib_pr297
+colin-b_keepachangelog_pr-1
+colinfike_easy-ptvsd_pr-1
+combinatrix-ai_prompttrail_pr-1
+commit-check_commit-check_pr322
+community-of-python_stompman_pr-1
+compas-dev_compas_pr1174
+complianceascode_auditree-harvest_pr-1
+compomics_psm_utils_pr-1
+con_duct_pr-1
+con_tinuous_pr-1
+conda-forge_conda-forge-repodata-patches-feedstock_pr-1
+conda_menuinst_pr-1
+configcat_python-sdk_pr62
+connorferster_handcalcs_pr210
+containerbuildsystem_dockerfile-parse_pr130
+containers_olot_pr-1
+contentful_contentful-management.py_pr119
+contentful_rich-text-renderer.py_pr13
+copier-org_copier-template-extensions_pr12
+coqui-ai_coqpit_pr19
+core-gatech-group_serpent-tools_pr-1
+corenting_immutabledict_pr307
+coreofscience_python-bibx_pr-1
+coreyjs_nhl-api-py_pr-1
+coroa_pandas-indexing_pr-1
+corteva_geocube_pr180
+corteva_msal-requests-auth_pr-1
+corydolphin_flask-cors_pr391
+cosmoquester_transformers-tf-finetune_pr-1
+couyang24_neuralink_pr-1
+coverahealth_dataspec_pr-1
+cphyc_matplotlib-label-lines_pr153
+crackedngineer_hack_ip_pr-1
+craffel_pretty-midi_pr241
+craigjmidwinter_total-connect-client_pr-1
+craigthomas_chip8assembler_pr-1
+crate_crate-operator_pr-1
+crate_crate-python_pr168
+crate_sqlalchemy-cratedb_pr203
+crccheck_project_runpy_pr-1
+crflynn_voting_pr-1
+criccomini_proto-schema-parser_pr-1
+cronofy_pycronofy_pr108
+crossgl_crosstl_pr-1
+crs4_repo2rocrate_pr20
+crusaderky_recursive_diff_pr31
+cs01_pygdbmi_pr-1
+csachs_pyproject-flake8_pr29
+csala_mdformat-pyproject_pr-1
+cscorley_whatthepatch_pr63
+csparpa_pyowm_pr444
+csurfer_rake-nltk_pr62
+cta-observatory_lstmcpipe_pr-1
+cta-observatory_pyirf_pr-1
+ctxswitch_qhost_pr-1
+ctz_hpke-py_pr-1
+cucumber_cucumber-expressions_pr288
+currencycloud_currencycloud-python_pr-1
+cvxgrp_cvxball_pr-1
+cvxgrp_cvxcla_pr-1
+cvxgrp_cvxrisk_pr-1
+cvxgrp_pymde_pr-1
+cwacek_python-jsonschema-objects_pr-1
+cycodelabs_raven_pr-1
+cyllab_ccinput_pr-1
+d-rickyy-b_pastepwn_pr-1
+d0c-s4vage_gramfuzz_pr-1
+d11wtq_dockerpty_pr56
+d9pouces_rubymarshal_pr-1
+da4089_simplefix_pr62
+daffidwilde_matching_pr-1
+dafnifacility_cli_pr-1
+dahlia-lib_dahlia_pr-1
+dajiaji_pyhpke_pr16
+dajiaji_pyseto_pr8
+daler_gffutils_pr-1
+dalibo_pgtoolkit_pr-1
+dalito_ucumvert_pr-1
+damnever_pigar_pr67
+dan1994_pyzshcomplete_pr-1
+dandi_dandi-schema_pr-1
+dandi_dandischema_pr341
+danielavdar_dev-kit-mcp-server_pr-1
+danielfm_pybreaker_pr97
+danielweidman_pixmob-ir-reverse-engineering_pr48
+danishm_mritopng_pr-1
+danvk_pyjsonselect_pr7
+danvk_webdiff_pr-1
+darosior_python-bip32_pr-1
+dasbasti_pysmarthashtag_pr-1
+dask-contrib_dask-deltatable_pr99
+dask-contrib_dask-histogram_pr-1
+dask_cachey_pr23
+dask_dask-jobqueue_pr690
+dask_zict_pr-1
+daskol_mpl-typst_pr-1
+data-8_datascience_pr-1
+data-exp-lab_inheritance_explorer_pr-1
+data61_clkhash_pr-1
+databio_yacman_pr68
+datacrunch-io_datacrunch-python_pr-1
+datafolklabs_cement_pr647
+datalad_datalad-catalog_pr-1
+datamade_probablepeople_pr7
+datamade_pyhacrf_pr48
+datamllab_rlcard_pr280
+datamol-io_datamol_pr226
+datasciencecampus_census21api_pr-1
+datastax-labs_sperf_pr-1
+datastax_python-driver_pr1243
+datavaluepeople_kotsu_pr-1
+datopian_giftless_pr-1
+david-wobrock_sqlvalidator_pr-1
+davidbuchanan314_millipds_pr-1
+davideganna_datamorphers_pr-1
+davidesarra_jupyter_spaces_pr-1
+davidvujic_poetry-multiproject-plugin_pr75
+dbatten5_maison_pr377
+dbcli_litecli_pr234
+dbcli_pgcli_pr1504
+dbt-labs_dbt-adapters_pr384
+dbt-labs_dbt-common_pr323
+dbt-labs_dbt-jobs-as-code_pr-1
+dcbaker_jsonstreams_pr-1
+ddelange_retrie_pr-1
+ddmee_polling2_pr27
+dedupeio_dedupe_pr-1
+dedupeio_pylbfgs_pr19
+deepcharles_ruptures_pr25
+deeplime-io_onecode_pr-1
+deeplook_sparklines_pr37
+deepmind_dm_pix_pr39
+deepset-ai_haystack-experimental_pr398
+deepwalker_trafaret_pr110
+defnull_multipart_pr30
+delfick_python-dict2xml_pr27
+delph-in_pydelphin_pr-1
+delta-io_delta-rs_pr3931
+delta-io_delta-sharing_pr801
+deltares_pandamesh_pr-1
+deltares_pyflwdir_pr-1
+denisart_graphql-query_pr41
+denisorehovsky_django-rest-polymorphic_pr38
+denvercoder1_table2ascii_pr-1
+denysmoskalenko_vt2pbf_pr-1
+dephell_dephell_specifier_pr-1
+deppen8_pandas-vet_pr-1
+derb12_pybaselines_pr13
+destag_at-date_pr-1
+devcyclehq_python-server-sdk_pr91
+devcyclehq_python-server-sdk_pr99
+developmentseed_cogeo-mosaic_pr241
+developmentseed_geojson-pydantic_pr175
+developmentseed_label-maker_pr-1
+developmentseed_morecantile_pr192
+developmentseed_starlette-cramjam_pr13
+developmentseed_supermorecado_pr5
+devolo_ssllabs_pr37
+devopshq_artifactory-cleanup_pr-1
+devopshq_artifactory_pr-1
+devopsmakers_python-grafannotate_pr-1
+devrimcavusoglu_pybboxes_pr24
+dfop02_html4docx_pr-1
+dgilland_cacheout_pr39
+dhatim_python-license-check_pr125
+dhi_mikeio_pr-1
+dhi_tsod_pr-1
+dhiatn_confluent-avro-py_pr-1
+di_calver_pr-1
+di_id_pr340
+di_pip-api_pr208
+diaoul_babelfish_pr-1
+didactic-meme_pyfuncol_pr-1
+didix21_mdutils_pr117
+diogomatoschaves_geneal_pr-1
+direct-phonology_dphon_pr-1
+disconnect3d_cint_pr18
+disqus_python-phabricator_pr-1
+distributed-text-services_mydapytains_pr-1
+diyan_pywinrm_pr383
+dizballanze_gray_pr-1
+django-cas-ng_django-cas-ng_pr364
+django-hijack_django-hijack_pr651
+django-predicate_django-predicate_pr-1
+django_asgiref_pr-1
+djangoflow_django-df-auth_pr-1
+djgroen_flee_pr-1
+djk2_django-tables2-column-shifter_pr-1
+dknowles2_pydrawise_pr-1
+dknowles2_pyschlage_pr-1
+dkratzert_shelxfile_pr-1
+dlce-eva_python-nexus_pr-1
+dlr-eoc_ukis-pysat_pr-1
+dlwh_draccus_pr50
+dmand_hdrpy_pr3
+dmerejkowsky_tbump_pr170
+dmoggles_blueskysocial_pr-1
+dmontagu_fastapi-utils_pr310
+dnvgl_qats_pr-1
+docling-project_docling-core_pr442
+docopt_docopt_pr35
+dogukanurker_tamga_pr-1
+doist_todoist-api-python_pr-1
+domdfcoding_dom_toml_pr56
+dondebonair_slack-machine_pr841
+dontpanico_fastapi-distributed-websocket_pr-1
+dontshavetheyak_cloud-radar_pr-1
+dorthu_openapi3_pr57
+dpath-maintainers_dpath-python_pr181
+dr-prodigy_python-holidays_pr-1
+dralshehri_hijridate_pr25
+dreamlab_memoize_pr37
+drgarcia1986_simple-settings_pr260
+dribia_deepl-haystack_pr-1
+drivendataorg_typenames_pr-1
+drmfinlay_pyjsgf_pr-1
+dropbox_pyannotate_pr64
+dropbox_stone_pr349
+dstl_stone-soup_pr1153
+duckinator_bork_pr-1
+duckinator_emanate_pr-1
+dudenr33_pyinstaller-versionfile_pr-1
+duke-gcb_bespin-cli_pr-1
+duke-gcb_lando_pr-1
+dungdm93_sqlalchemy-trino_pr37
+duqtools_duqtools_pr-1
+durandtibo_batchtensor_pr435
+durandtibo_coola_pr691
+durandtibo_hya_pr535
+durandtibo_minrecord_pr307
+durandtibo_objectory_pr533
+dwavesystems_dwave_networkx_pr243
+dwavesystems_penaltymodel_pr-1
+dylanwal_unit_parse_pr-1
+dynatrace-oss_api-client-python_pr-1
+dynotx_liminal-orm_pr-1
+eadwincode_django-ninja-jwt_pr157
+earthlab_abc-classroom_pr-1
+earwig_mwparserfromhell_pr337
+easy-as-python_django-webmention_pr-1
+ebarti_cortex-xdr-client_pr-1
+ebellocchia_bip_utils_pr18
+ebeweber_flake8-mutable_pr8
+ebroecker_canmatrix_pr543
+echo724_notion2md_pr35
+ecies_py_pr409
+ecmwf_cfgrib_pr407
+ecmwf_earthkit-meteo_pr71
+ecmwf_earthkit-utils_pr8
+ecmwf_ecmwf-datastores-client_pr12
+ecmwf_findlibs_pr22
+ecmwf_multiurl_pr-1
+ecog-io_iso15118_pr-1
+ecordell_pymacaroons_pr60
+edaniszewski_pylint-quotes_pr19
+edd313_ndicts_pr3
+edgars-supe_beets-importreplace_pr-1
+edgi-govdata-archiving_wayback_pr-1
+edihasaj_tuspyserver_pr81
+edinburgh-genome-foundry_dnachisel_pr59
+edinburghgenomics_clarity_scripts_pr-1
+edinburghgenomics_pyclarity-lims_pr-1
+edmondchuc_flask-htmx_pr30
+edoburu_sphinxcontrib-django_pr48
+educreations_django-ormcache_pr-1
+eecs485staff_madoop_pr-1
+eerimoq_bincopy_pr46
+eerimoq_bitstruct_pr27
+eeue56_slack-today-i-did_pr-1
+eficode_robotframework-oxygen_pr-1
+efrag-eu_digital-template-to-xbrl-converter_pr-1
+eigenein_protobuf_pr191
+ejulio_spider-feeder_pr-1
+ekampf_pymaybe_pr6
+ekzhu_setsimilaritysearch_pr-1
+elastic_ecs-logging-python_pr-1
+elastic_elastic-transport-python_pr263
+elastic_elasticsearch-dsl-py_pr-1
+elcorto_psweep_pr-1
+eli64s_readme-ai_pr90
+elife-asu_pyinform_pr-1
+elixir-cloud-aai_drs-filer_pr-1
+elucidation_mapf-multiagent-robot-planning_pr-1
+emergentmethods_datasieve_pr12
+emilstenstrom_conllu_pr-1
+emlearn_emlearn_pr117
+empaeconversion_aurora-unicycler_pr-1
+en0_dnry-config_pr-1
+encode_apistar_pr649
+encode_httpcore_pr1000
+encode_orm_pr91
+encode_starlette_pr3057
+encode_typesystem_pr77
+encode_uvicorn_pr2658
+enowars_enochecker_pr-1
+entelecheia_ekonlpy_pr-1
+enter-at_python-aws-lambda-handlers_pr-1
+entilzha_pyfunctional_pr183
+eoda-dev_py-maplibregl_pr123
+epics-containers_pvi_pr-1
+epicserve_django-cache-url_pr24
+epignatelli_navix_pr-1
+epsy_clize_pr81
+equinor_weblog_pr-1
+eralchemy_eralchemy_pr56
+erezlife_html2docx_pr41
+erezsh_runtype_pr70
+eric-volz_defichainpython_pr-1
+erikbern_ann-benchmarks_pr362
+erikrose_parsimonious_pr250
+erkue_htlogicalgates_pr-1
+eshaan7_flask-shell2http_pr-1
+esphome_aioesphomeapi_pr1438
+espressif_conventional-precommit-linter_pr-1
+espressif_idf-build-apps_pr186
+esss_barril_pr-1
+esss_conda-devenv_pr-1
+esss_oop-ext_pr-1
+ethereum_eth-abi_pr214
+ethereum_eth-keyfile_pr56
+ethereum_eth-keys_pr105
+ethereum_eth-tester_pr269
+ethereum_eth-utils_pr322
+ethereum_hexbytes_pr47
+ethereum_py-geth_pr255
+ethereum_trio-run-in-process_pr-1
+etianen_aiohttp-wsgi_pr23
+etianen_logot_pr-1
+etingof_apacheconfig_pr-1
+etingof_pyasn1_pr-1
+ettoreleandrotognoli_python-cdi_pr-1
+etuzon_python-nrt-pytest-soft-asserts_pr21
+europython_discord_pr-1
+evergreen-ci_evergreen.py_pr138
+evergreen-ci_shrub.py_pr28
+ewatercycle_era5cli_pr-1
+ewels_mkdocs-quiz_pr-1
+executablebooks_jupyter-book_pr449
+executablebooks_jupyter-cache_pr135
+executablebooks_markdown-it-py_pr362
+executablebooks_mdit-py-plugins_pr-1
+executablebooks_myst-nb_pr641
+executablebooks_sphinx-design_pr224
+executablebooks_sphinx-external-toc_pr94
+executablebooks_sphinx-remove-toctrees_pr6
+explodinglabs_jsonrpcclient_pr220
+explodinglabs_jsonrpcserver_pr257
+explosion_murmurhash_pr47
+explosion_preshed_pr40
+explosion_spacy-curated-transformers_pr14
+explosion_srsly_pr114
+explosion_thinc_pr585
+explosion_weasel_pr93
+exxamalte_python-georss-qld-bushfire-alert-client_pr-1
+eyeseast_geocode-sqlite_pr-1
+eyurtsev_kor_pr308
+ezbz_gitlabber_pr147
+fabienarcellier_alfred-cli_pr-1
+fabiocaccamo_django-admin-interface_pr110
+fabiocaccamo_python-codicefiscale_pr-1
+facebookincubator_submitit_pr1787
+facebookresearch_fairseq2_pr362
+facebookresearch_nevergrad_pr125
+facelessuser_bracex_pr43
+facelessuser_pyspelling_pr211
+fadel_pytorch_ema_pr8
+fair-software_fairtally_pr-1
+fake-useragent_fake-useragent_pr454
+faradayinstitution_bpx_pr-1
+farridav_django-jazzmin_pr180
+fastapi-practices_sqlalchemy-crud-plus_pr-1
+fastapi_asyncer_pr202
+fastapiutils_fastapi-utils_pr310
+fastavro_fastavro_pr499
+fastdatascience_drug_named_entity_recognition_pr22
+fatiando_verde_pr326
+fbchat-dev_fbchat_pr-1
+fbruzzesi_iso-week-date_pr128
+fcurella_jsx-lexer_pr20
+fedarko_wotplot_pr-1
+fedora-python_lxml_html_clean_pr19
+feldroy_air_pr273
+felix-hilden_tekore_pr-1
+felixlindstrom_python-salesforce-api_pr28
+fepegar_torchio_pr-1
+fetchai_cosmpy_pr86
+fetzerch_kasserver_pr-1
+ffdev-info_jsonid_pr-1
+fgmacedo_python-statemachine_pr335
+fidelity_spock_pr-1
+fillipe-gsm_python-tsp_pr40
+findsimilar_find-similar_pr-1
+firebase_firebase-admin-python_pr384
+firebolt-db_firebolt-sdk_pr21
+firefighterblu3_python-pam_pr-1
+firefly-cpp_fireflyalgorithm_pr-1
+fischerfredl_flask-expects-json_pr-1
+fitnr_visvalingamwyatt_pr-1
+fizyk_port-for_pr331
+fjarri-eth_pons_pr-1
+fla9ua_markdown_to_mrkdwn_pr22
+flake8-implicit-str-concat_flake8-implicit-str-concat_pr69
+flasgger_flasgger_pr462
+flatironinstitute_nomad_pr-1
+flavors_django-graphql-jwt_pr280
+flet-dev_flet_pr3449
+flexmeasures_flexmeasures-client_pr-1
+flexrpl_runon_pr-1
+flexxui_pscript_pr70
+florents-tselai_warcdb_pr-1
+florian-huber_pickydict_pr-1
+florianludwig_rueckenwind_pr-1
+florimondmanca_asgi-lifespan_pr59
+florimondmanca_fountain-lang_pr-1
+florimondmanca_httpx-sse_pr37
+flrs_blend_modes_pr32
+fluxth_endec_pr60
+flywhl_logis_pr-1
+fmi-faim_faim-ipa_pr-1
+fmicompbio_ez_zarr_pr-1
+fniessink_next-action_pr-1
+fnl_segtok_pr15
+fnl_syntok_pr24
+fnproject_fdk-python_pr-1
+fohrloop_wakepy_pr479
+folio-fse_folioclient_pr-1
+fonttools_ttfautohint-py_pr-1
+fonttools_ufolib2_pr53
+formencode_formencode_pr184
+fox-it_dissect.cstruct_pr139
+fox-it_dissect.esedb_pr49
+fox-it_dissect.util_pr99
+foxglove_foxglove-python_pr-1
+fpgmaas_deptry_pr443
+francof2a_fxpmath_pr63
+frankie567_starlette-csrf_pr4
+franneck94_tensorcross_pr-1
+fraymio_modis-tools_pr-1
+freakboy3742_pyxero_pr396
+frederickjansen_polyline_pr8
+fredrikaverpil_creosote_pr323
+frequenz-floss_frequenz-channels-python_pr-1
+frequenz-floss_frequenz-repo-config-python_pr-1
+frictionlessdata_datapackage-py_pr262
+frictionlessdata_goodtables-py_pr-1
+frictionlessdata_tableschema-py_pr276
+frictionlessdata_tabulator-py_pr344
+frispete_keyrings.cryptfile_pr30
+fronzbot_blinkpy_pr-1
+froozzy_pg_stage_pr-1
+frostming_findpython_pr34
+frostming_marko_pr242
+frostming_unearth_pr166
+fsspec_filesystem_spec_pr1920
+fsspec_s3fs_pr208
+fugue-project_triad_pr130
+fuhrysteve_marshmallow-jsonschema_pr176
+fulder_pki-tools_pr127
+fundakol_behave-xray_pr-1
+funkelab_motile_pr-1
+funnel-io_json-normalize_pr19
+fxsjy_jieba_pr788
+fzakaria_nix-auto-follow_pr-1
+gabriel-russo_cbers4asat_pr-1
+gadomski_antimeridian_pr-1
+gagebenne_pydexcom_pr-1
+gahjelle_pyconfs_pr24
+gahjelle_pyplugs_pr41
+galaxyproject_galaxy-language-server_pr-1
+galaxyproject_pulsar_pr-1
+gaogaotiantian_dowhen_pr70
+gaogaotiantian_objprint_pr121
+gateway-experiments_hadoop-yarn-api-python-client_pr-1
+gauge-sh_tach_pr26
+gavinying_modpoll_pr-1
+gazpachoking_jsonref_pr66
+gb-libs_pydantic-geojson_pr59
+gehirninc_python-jwt_pr33
+geigr_ipytone_pr-1
+genotrance_fru-tool_pr-1
+geo7_mypy_clean_slate_pr-1
+geomet_geomet_pr103
+geopandas_dask-geopandas_pr-1
+geopandas_xyzservices_pr76
+geopython_pygeofilter_pr111
+georgebv_drf-pydantic_pr43
+geospace-code_pymap3d_pr100
+geotab_mygeotab-python_pr133
+getludic_ludic_pr102
+getmoto_py-partiql-parser_pr28
+getsentry_pytest-responses_pr13
+getsentry_responses_pr776
+gguridi_iab-tcf_pr10
+ghazi-git_drf-standardized-errors_pr104
+giampaolo_pyftpdlib_pr656
+gijzelaerr_python-snap7_pr561
+gisce_markdown-blockdiag_pr-1
+gispocoding_flake8-qgis_pr-1
+gistart_asyncio-pool_pr10
+git-quick-stats_git-py-stats_pr-1
+gitguardian_ggshield_pr493
+glassflow_clickhouse-etl-py-sdk_pr-1
+glentner_cmdkit_pr2
+globalfishingwatch_ais-tools_pr-1
+globality-corp_flake8-logging-format_pr72
+globocom_azkaban-cli_pr-1
+glotzerlab_parsnip_pr45
+glotzerlab_signac_pr-1
+glue-viz_echo_pr-1
+glut23_webvtt-py_pr68
+gmplot_gmplot_pr187
+gmr_pamqp_pr52
+goabonga_terragrunt-generator_pr-1
+godatadriven_pydantic-avro_pr144
+gogoair_lavatory_pr-1
+golosegor_pyspark-nested-fields-functions_pr11
+goodmami_wn_pr288
+google-deepmind_mctx_pr-1
+google-research_arxiv-latex-cleaner_pr102
+google_budoux_pr906
+google_cloud-forensics-utils_pr-1
+google_duet_pr-1
+google_google-visualization-python_pr43
+google_importlab_pr63
+google_latexify_py_pr210
+google_mediapy_pr60
+google_pasta_pr11
+google_pinject_pr54
+google_pre-commit-tool-hooks_pr-1
+google_project-ocean_pr-1
+google_pycnite_pr34
+google_pyu2f_pr10
+google_rax_pr88
+google_subpar_pr99
+google_textfsm_pr132
+googleapis_google-resumable-media-python_pr346
+googleapis_proto-plus-python_pr519
+googleapis_python-bigquery-magics_pr-1
+googleapis_python-documentai-toolbox_pr334
+googleapis_python-ndb_pr-1
+googleapis_python-pubsub_pr1427
+googleapis_python-runtimeconfig_pr265
+googlecloudplatform_cloud-sql-python-connector_pr-1
+googlecloudplatform_functions-framework-python_pr387
+googlefonts_fontmake_pr1154
+googlefonts_picosvg_pr-1
+googlefonts_ufomerge_pr-1
+googlemaps_google-maps-services-python_pr-1
+goose3_goose3_pr214
+gorakhargosh_watchdog_pr1102
+gordon-code_cuid2_pr2
+gorilla-co_s3pypi_pr-1
+gpt-engineer-org_gpt-engineer_pr1198
+gradio-app_groovy_pr1
+grafana-toolbox_grafana-client_pr156
+graphql-python_gql_pr328
+graphql-python_graphene-django_pr1539
+graphql-python_graphene-federation_pr4
+graphql-python_graphene-mongo_pr-1
+graphql-python_graphql-core_pr241
+graphql-python_graphql-server-core_pr39
+greynoise-intelligence_pygreynoise_pr-1
+grimme-lab_mindlessgen_pr-1
+griptape-ai_griptape_pr157
+gristlabs_asttokens_pr167
+grm_py-smart-gardena_pr58
+grokzen_pykwalify_pr188
+growthbook_growthbook-python_pr77
+grpc-requests_grpc_requests_pr46
+gruebel_pycep_pr328
+grumbit_aws_cron_expression_validator_pr19
+gtalarico_pyairtable_pr422
+gtaylor_python-colormath_pr38
+gtsystem_python-remotezip_pr-1
+guillermo-navas-palencia_ropwr_pr9
+gunthercox_mathparse_pr-1
+gurumitts_pylutron-caseta_pr-1
+gustavwilliam_bestpy_pr-1
+guysalt_python-inquirer3_pr112
+gvalkov_python-ansimarkup_pr11
+gweis_isodate_pr64
+h-0-0_slune_pr-1
+h0rv_d2-python_pr1
+h2non_filetype.py_pr-1
+h2non_jsonpath-ng_pr-1
+h2non_pook_pr98
+h2oai_authn-py_pr18
+h2oai_cloud-discovery-py_pr8
+h5io_h5io_pr107
+h5netcdf_h5netcdf_pr297
+h5py_h5py_pr2731
+hackebrot_labels_pr-1
+hackebrot_poyo_pr25
+hackebrot_pytest-cookies_pr63
+haddocking_arctic3d_pr-1
+hadialqattan_pycln_pr277
+haesleinhuepf_napari-segment-blobs-and-things-with-membranes_pr-1
+hakancelikdev_unimport_pr289
+hallerpatrick_frosch_pr-1
+hamdanal_rich-argparse_pr154
+hapy-lang_hapy_pr-1
+har07_sastrawi_pr6
+haralyzer_haralyzer_pr-1
+harlowja_fasteners_pr108
+harrymander_dataclasses-struct_pr-1
+harrymwinters_fastapi-oidc_pr-1
+has2k1_mizani_pr18
+hashberg-io_multiformats_pr16
+hashberg-io_typing-validation_pr20
+hashedin_jinjasql_pr24
+havok2063_boolean_parser_pr-1
+havok2063_fuzzy_types_pr-1
+hde_python-lambda-local_pr82
+hdembinski_jacobi_pr42
+hdwallet-io_python-hdwallet_pr73
+healthjoy_async-firebase_pr-1
+heavenshell_py-doq_pr-1
+heavenshell_py-sqlalchemy_seed_pr-1
+heftieproject_zarr-benchmarks_pr-1
+helpingstar_pika-zoo_pr-1
+helsinki-nlp_opusfilter_pr-1
+helxplatform_dug_pr-1
+hepdata_hepdata_lib_pr-1
+heremaps_flexible-polyline_pr83
+hetznercloud_hcloud-python_pr597
+hexdecimal_python-tcod-ecs_pr-1
+hh-h_aiohttp-swagger3_pr109
+hightouchio_airflow-provider-hightouch_pr9
+hinthornw_dydantic_pr4
+hochfrequenz_ahbicht_pr-1
+holgern_pyedflib_pr277
+holoviz-dev_pyct_pr98
+home-assistant-libs_aioecowitt_pr-1
+home-assistant-libs_home-assistant-bluetooth_pr34
+home-assistant-libs_python-supervisor-client_pr177
+home-assistant-libs_voluptuous-openapi_pr66
+home-assistant-libs_voluptuous-serialize_pr159
+honeybadger-io_honeybadger-python_pr225
+honeycombio_libhoney-py_pr121
+horejsek_python-fastjsonschema_pr196
+hthiery_python-fritzhome_pr-1
+httpdss_structkit_pr-1
+hu-macsy_simexpal_pr-1
+huashengdun_webssh_pr340
+huggingface_pytorch-transformers_pr733
+hugovk_norwegianblue_pr-1
+hugovk_pypistats_pr438
+hukkin_tomli-w_pr69
+hultenvp_soliscloud_api_pr-1
+humio_python-humio_pr29
+hunyadi_strong_typing_pr3
+hussein-awala_spark-on-k8s_pr138
+hvalev_py-markdown-table_pr15
+hynek_argon2-cffi_pr190
+hynek_environ-config_pr100
+hynek_hatch-fancy-pypi-readme_pr64
+hynek_pem_pr75
+hynek_prometheus-async_pr85
+hynek_svcs_pr139
+hyperiongray_python-chrome-devtools-protocol_pr25
+hypothesis_bouncer_pr-1
+i-am-bee_beeai-framework_pr-1
+i2mint_dol_pr60
+iai-group_dialoguekit_pr-1
+iamdual_ua-generator_pr52
+iamjackg_md2cf_pr101
+iamkubi_pydactyl_pr-1
+iamlikeme_rainflow_pr48
+ianare_exif-py_pr237
+ianlini_flatten-dict_pr55
+ibm_differential-privacy-library_pr98
+ibm_import-tracker_pr-1
+ibm_mcp-context-forge_pr457
+ibm_python-itoolkit_pr-1
+ibm_python-sdk-core_pr-1
+icekhan13_purplecaffeine_pr-1
+idealista_prom2teams_pr-1
+identitypython_jwtconnect-python-cryptojwt_pr-1
+ideoforms_isobar_pr-1
+idlesign_vininfo_pr30
+idsia_sacred_pr941
+ieeh-tu-dresden_power-system-data-model_pr-1
+ifduyue_python-xxhash_pr51
+igorbenav_fastcrud_pr245
+ihmwg_python-ihm_pr158
+ihmwg_python-modelcif_pr28
+iiif-prezi_iiif-prezi3_pr-1
+ikalnytskyi_holocron_pr-1
+ikalnytskyi_picobox_pr100
+ikalnytskyi_sphinxcontrib-redoc_pr32
+ikegami-yukino_jaconv_pr25
+ilevkivskyi_com2ann_pr-1
+illuin-tech_opyoid_pr-1
+iloveitaly_funcy-pipe_pr-1
+iloveitaly_llm-ide-rules_pr-1
+iluvcapra_pycmx_pr-1
+imageio_imageio-ffmpeg_pr29
+imageio_imageio_pr162
+imgix_imgix-python_pr-1
+imnotjames_cachetools-async_pr5
+imperialcollegelondon_pycsvy_pr-1
+imperialcollegelondon_python-template_pr-1
+incatools_kgcl_pr-1
+inception-project_pycaprio_pr-1
+indigo-dc_udocker_pr389
+infer-actively_pymdp_pr147
+infinidat_munch_pr-1
+influxdb_influxdb-python_pr926
+informasjonsforvaltning_datacatalogtordf_pr-1
+ing-bank_sparse_dot_topn_pr104
+ingeotec_b4msa_pr-1
+inm-6_python-odmltables_pr-1
+inmatrix_ai-papers-reader_pr-1
+innot_argparsedecorator_pr-1
+insomnes_aqute_pr-1
+interpretml_slicer_pr6
+intility_fastapi-azure-auth_pr145
+intrepidcs_python_ics_pr225
+intuit_oauth-pythonclient_pr1
+inveniosoftware_invenio-jsonschemas_pr-1
+inveniosoftware_invenio-records_pr-1
+inveniosoftware_inveniordm-py_pr-1
+invoice-x_invoice2data_pr197
+inyutin_aiohttp_retry_pr65
+ioc-fang_ioc_fanger_pr72
+ionelmc_python-tblib_pr85
+ioos_gliderpy_pr-1
+ioxiocom_pyjwt-key-fetcher_pr21
+ipazc_mtcnn_pr133
+ipfs-shipyard_py-ipfs-http-client_pr278
+ipinfo_python_pr14
+ipld_py-cid_pr41
+irfm_divhretention_pr-1
+iris-hep_func_adl_pr-1
+iris-hep_qastle_pr-1
+irnas_irnas-east-software_pr-1
+irskep_autowt_pr-1
+isaacharrisholt_quiffen_pr-1
+isac322_loopmon_pr1
+isaiahharvi_sigkit_pr-1
+ishepard_pydriller_pr9
+isidentical_refactor_pr-1
+iterative_dvc-render_pr151
+iterative_dvc-task_pr142
+iterative_gto_pr485
+iterative_scmrepo_pr282
+ithaka_apiron_pr-1
+ivankorobkov_python-inject_pr71
+iwatkot_py3xui_pr-1
+iwpnd_flashgeotext_pr-1
+j-cpelletier_webcomix_pr-1
+j535d165_recordlinkage_pr135
+jabesq_netatmo-api-python_pr-1
+jacebrowning_yorm_pr41
+jackdewinter_application_properties_pr193
+jacksmith15_json-ref-dict_pr26
+jacobdomagala_staticanalysis_pr-1
+jacobschaer_python-doipclient_pr60
+jadchaar_sec-edgar-downloader_pr142
+jahwag_claudesync_pr28
+jaidevd_numerizer_pr-1
+jakevdp_mpld3_pr535
+jakobgm_patito_pr121
+jakubplichta_grafana-dashboard-builder_pr-1
+jameslamb_pydistcheck_pr-1
+jamesls_jmeslog_pr-1
+jamielennox_requests-mock_pr-1
+jan-mue_geometer_pr-1
+janehmueller_python-json-config_pr-1
+janericnitschke_pymend_pr-1
+janluke_cloup_pr191
+janusassetallocation_loman_pr86
+jason-ash_pyesg_pr-1
+jaspersui_fastapi-injectable_pr-1
+jawah_charset_normalizer_pr638
+jawah_kiss-headers_pr-1
+jawah_qh3_pr76
+jaxvanyang_dotbackup_pr-1
+jaylinski_kodi-addon-soundcloud_pr-1
+jazzband_django-analytical_pr164
+jazzband_geojson_pr215
+jazzband_icalevents_pr152
+jbasko_configmanager_pr-1
+jborchma_qtrade_pr-1
+jborean93_pypsexec_pr22
+jborean93_pypsrp_pr144
+jborean93_requests-credssp_pr24
+jborean93_smbprotocol_pr327
+jboss-dockerfiles_dogen_pr-1
+jbradberry_universe_pr-1
+jc2k_aiohomekit_pr-1
+jcassady_groq-qa-generator_pr-1
+jclds139_hdf5storage_pr6
+jcrist_msgspec_pr605
+jcrobak_parquet-python_pr76
+jd-boyd_sexpdata_pr66
+jdasoftwaregroup_rle-array_pr-1
+jdepoix_youtube-transcript-api_pr10
+jdillard_sphinx-llms-txt_pr-1
+jdkandersson_flake8-docstrings-complete_pr-1
+jdmacleod_vfx-seqtools_pr-1
+jdongian_python-jamo_pr37
+jeanralphaviles_comment_parser_pr39
+jedymatt_sqlalchemyseed_pr-1
+jefersondaniel_pydantic-mongo_pr96
+jefflirion_adb_shell_pr-1
+jefflirion_python-androidtv_pr-1
+jeffsiver_fastapi-route-logger_pr-1
+jeking3_tempenv_pr22
+jendrikseipp_vulture_pr378
+jeremymcrae_bgen_pr3
+jerry-git_pytest-split_pr103
+jfhbrook_pyee_pr160
+jflatdb_jflatdb_pr-1
+jg-rp_python-jsonpath-rfc9535_pr17
+jg-rp_python-jsonpath_pr29
+jic-dtool_dtoolcore_pr-1
+jitsi_jiwer_pr112
+jkimbo_graphql-sync-dataloaders_pr7
+jkrhb_sdf-wot-converter-py_pr-1
+jlhood_github-codebuild-logs_pr-1
+jllorencetti_pytest-deadfixtures_pr38
+jlusiardi_tlv8_python_pr-1
+jmcs_ecological_pr-1
+jmkeyes_keyrings.codeartifact_pr11
+jmrivas86_django-json-widget_pr115
+jmwri_ioccontainer_pr-1
+joaovitorsilvestre_graphene-mongodb_pr-1
+joaquinamatrodrigo_skforecast_pr3
+jobec_rfc5424-logging-handler_pr16
+jodal_biip_pr372
+jodal_pykka_pr240
+joecummings_gitmine_pr-1
+joegasewicz_bobtail_pr-1
+joelee2012_claircli_pr-1
+joergbuchwald_ogs6py_pr-1
+joestump_python-oauth2_pr222
+joeyespo_grip_pr-1
+johannesbuchner_imagehash_pr166
+john-kurkowski_tldextract_pr-1
+johnpaton_airbase_pr-1
+johnsyweb_python_sparse_list_pr-1
+johnwmillr_lyricsgenius_pr-1
+joke2k_django-environ_pr-1
+jonathanslenders_pyvim_pr130
+jonathf_chaospy_pr359
+jonathf_numpoly_pr81
+jongracecox_anybadge_pr59
+jonhue_activeft_pr-1
+jonpecar_qrcodeimagesorter_pr-1
+jordaneremieff_mangum_pr280
+jorenham_optype_pr-1
+jorgepz_cablenets_pr-1
+jorisroovers_gitlint_pr453
+joseph-roitman_pytest-snapshot_pr56
+joshdata_python-email-validator_pr163
+josheppinette_python-logfmter_pr55
+joshuadavidthomas_django-bird_pr-1
+joshy_striprtf_pr47
+jpadilla_django-rest-framework-xml_pr23
+jpadilla_django-rest-framework-yaml_pr13
+jparise_vesta_pr-1
+jpmorganchase_py-avro-schema_pr-1
+jpoullet2000_atlasclient_pr109
+jrast_littlefs-python_pr143
+jriddy_zerial_pr-1
+jrycw_turtle-island_pr-1
+jsbronder_asyncio-dgram_pr14
+jsfehler_flake8-multiline-containers_pr128
+jsh9_markdown-toc-creator_pr-1
+jsh9_pydoclint_pr277
+jsonpickle_jsonpickle_pr455
+jtesta_ssh-audit_pr252
+juanifioren_django-oidc-provider_pr-1
+jubatus_jubatus-python-client_pr-1
+judgmentlabs_judgeval_pr169
+juftin_hatch-pip-compile_pr62
+juliusfrost_dreamer-pytorch_pr-1
+jumptrading_luddite_pr11
+juniper_py-junos-eznc_pr-1
+jupyter-server_jupyter-scheduler_pr513
+jupyter-server_jupyter_server_fileid_pr81
+jupyter-widgets-contrib_ipysheet_pr90
+jupyter-widgets_ipydatagrid_pr527
+jupyter-widgets_ipywidgets_pr3942
+jupyter_jupyter-packaging_pr-1
+jupyter_jupyter_core_pr149
+jupyter_jupyter_server_pr415
+jupyter_nbclassic_pr375
+jupyter_nbconvert_pr1591
+jupyterhub_chartpress_pr-1
+jupyterhub_kubespawner_pr463
+jupyterhub_ltiauthenticator_pr-1
+jupyterhub_nativeauthenticator_pr-1
+jupyterhub_nbgitpuller_pr-1
+jupyterhub_oauthenticator_pr798
+jupyterhub_simpervisor_pr19
+jupyterlab-contrib_jupyter-archive_pr118
+jupyterlab-contrib_jupyterlab_code_formatter_pr333
+jupyterlab_hatch-nodejs-version_pr-1
+justinchuby_onnx-safetensors_pr-1
+justintime50_github-archive_pr-1
+jwbargsten_pytest-archon_pr34
+jwodder_check-wheel-contents_pr25
+jwodder_click-loglevel_pr17
+jwodder_interleave_pr12
+jwodder_javaproperties_pr60
+jwodder_outgoing_pr-1
+jwodder_permutation_pr5
+jwodder_pypi-simple_pr48
+jwodder_pyrepo_pr-1
+jwplayer_jwplatform-py_pr-1
+jxtech_wechatpy_pr581
+kaiko-ai_typedspark_pr355
+kaizendorks_pymongo_inmemory_pr-1
+kakulukia_pypugjs_pr83
+kalekundert_autoclasstoc_pr40
+kamilest_meds-evaluation_pr-1
+kanicreampasta_pybit-lib_pr-1
+kapouille_mongoquery_pr28
+karandash8_make-argocd-fly_pr-1
+karanlvm_pyward_pr-1
+karask_python-bitcoin-utils_pr166
+karpetrosyan_hishel_pr353
+kaste_mockito-python_pr-1
+kblin_ncbi-genome-download_pr82
+kcl-bmeis_spectrumdevice_pr-1
+keeprocking_pygelf_pr12
+keewis_blackdoc_pr-1
+keis_base58_pr63
+kellerza_pysma_pr-1
+kelproject_pykube_pr128
+kelsin_mysql-mimic_pr69
+kenaco_auto-changelog_pr-1
+kenkundert_inform_pr5
+kennethreitz_delegator_pr68
+kennethreitz_responder_pr555
+kennknowles_python-jsonpath-rw_pr96
+kensho-technologies_pyctcdecode_pr106
+keon_algorithms_pr868
+kevin1024_pytest-httpbin_pr80
+kevinzakka_mink_pr-1
+kexue-z_nonebot-plugin-htmlrender_pr-1
+khornberg_octokit.py_pr-1
+kielx_anygrabber_pr-1
+kilnfi_eth-validator-watcher_pr-1
+kinverarity1_lasio_pr-1
+kiorky_croniter_pr181
+kivy_plyer_pr828
+kiwicom_structlog-sentry_pr109
+kiwiz_gkeepapi_pr153
+kkroening_ffmpeg-python_pr494
+klen_peewee_migrate_pr-1
+klieret_wandb-offline-sync-hook_pr-1
+kludex_mangum_pr280
+kludex_no-optional_pr-1
+kludex_starlette_pr672
+kmbhm1_supabase-pydantic_pr-1
+kmiq_coinbase-advanced-python_pr-1
+knio_pynmea2_pr-1
+knovichikhin_pyiso8583_pr35
+knowledge-graph-hub_kg-covid-19_pr-1
+koaning_clumper_pr-1
+koaning_doubtlab_pr-1
+koaning_fh-altair_pr-1
+kodemore_chili_pr-1
+kodemore_kink_pr71
+koladev32_drf-simple-apikey_pr-1
+kolonialno_django-api-decorator_pr41
+konradhalas_dacite_pr272
+konstantint_matplotlib-venn_pr77
+koulanurag_ma-gym_pr34
+kozea_cairocffi_pr227
+kozea_cssselect2_pr24
+kpetremann_mqtt-exporter_pr-1
+kpfleming_jinjanator-plugins_pr29
+kpfleming_jinjanator_pr57
+kplindegaard_smbus2_pr92
+kpn_combadge_pr-1
+kratsg_itksn_pr-1
+kratsg_pylibmagic_pr17
+kreneskyp_jsonschema-pydantic_pr8
+kronenthaler_mod-pbxproj_pr-1
+ku-nlp_rhoknp_pr-1
+kubernetes-sigs_jobset_pr-1
+kuimono_openapi-schema-pydantic_pr11
+kumaraditya303_aioshutil_pr11
+kura_yarg_pr4
+kurtbrose_pyjks_pr41
+kvas-it_pytest-console-scripts_pr77
+kylchiu_sporkfish_pr-1
+kylejameswalker_yamlsettings_pr-1
+kyleking_mdformat-admon_pr26
+kyleking_mdformat-mkdocs_pr64
+kyligence_kylinpy_pr39
+kyoto7250_mdpd_pr-1
+l-vo_photos-picker_pr-1
+labd_wagtail-2fa_pr-1
+lace_polliwog_pr-1
+laike9m_pdir2_pr67
+laixintao_flameshow_pr77
+lancetnik_fastdepends_pr-1
+landscapeio_requirements-detector_pr52
+langchain-ai_langchain-mcp-adapters_pr191
+langchain-ai_langchain-milvus_pr48
+langchain-ai_langchain-pinecone_pr-1
+langchain-ai_langgraph-supervisor-py_pr184
+lanpa_tensorboard-pytorch_pr541
+lanpa_tensorboardx_pr-1
+larq_zookeeper_pr-1
+lasp_cdflib_pr287
+lasselindqvist_robotframework-imaplibrary2_pr40
+lastmile-ai_aiconfig_pr1464
+laterpay_laterpay-client-python_pr-1
+launchplatform_beanhub-cli_pr-1
+laurent-laporte-pro_deprecated_pr-1
+laurents_slowapi_pr160
+lavagetto_k8sh_pr-1
+leapbeyond_scrubadub_pr54
+learningequality_le-utils_pr-1
+leibniz-hbi_tegracli_pr-1
+leocalm_avro_validator_pr34
+leonidessaguisagjr_filehash_pr1
+lepture_authlib_pr827
+lepture_flask-oauthlib_pr385
+lepture_mistune_pr395
+leshchenko1979_fast_bitrix24_pr-1
+leshchenko1979_perscache_pr-1
+lesscpy_lesscpy_pr118
+levii_dataclass-type-validator_pr15
+levlaz_circleci.py_pr-1
+lewisfogden_heavylight_pr-1
+lextudio_pysnmp_pr94
+lgienapp_aquarel_pr37
+liang2kl_mkdocs-blogging-plugin_pr-1
+libretexts_ngshare_pr-1
+librick_uplift-ble_pr-1
+lidatong_dataclasses-json_pr532
+life4_textdistance_pr84
+lightning-ai_lit-llama_pr-1
+lightstep_otel-launcher-python_pr-1
+lignum-vitae_biobase_pr-1
+lingster_drf-api-tracking_pr61
+linjackson78_jstyleson_pr3
+linkedin_asciietch_pr-1
+linkedin_shiv_pr249
+linkml_linkml-runtime_pr480
+linode_linode_api4-python_pr290
+liormizr_s3path_pr196
+liran-funaro_objsize_pr9
+liran-funaro_sphinx-markdown-builder_pr41
+lirsacc_statsd_client_python_pr2
+list-family_ansq_pr-1
+litestar-org_polyfactory_pr643
+litl_backoff_pr189
+ljleb_sd-webui-neutral-prompt_pr-1
+ljvmiranda921_pyswarms_pr426
+lk-geimfari_mimesis_pr1477
+lki_chinese-calendar_pr-1
+llybin_drf-recaptcha_pr38
+lmmx_czkawka_pr6
+lmmx_polars-config-meta_pr-1
+lnbits_bolt11_pr-1
+lobis_hvps_pr-1
+localstack_plux_pr34
+localstack_py-avro-schema_pr10
+logandk_serverless-wsgi_pr273
+logdna_python_pr107
+lojack5_structured_pr-1
+long2ice_fastapi-cache_pr425
+loonghao_wecom-bot-mcp-server_pr-1
+lord63_choosealicense-cli_pr-1
+lordgolias_sqf_pr-1
+lovasoa_marshmallow_dataclass_pr219
+loyada_typedpy_pr232
+lsc-unicamp_spinner_pr-1
+lsstdesc_sacc_pr-1
+lucas-c_pre-commit-hooks_pr-1
+lucemia_dot_pr-1
+lucianopaz_compress_pickle_pr41
+lucidsushi_gs_pip_install_pr-1
+ludeeus_awesomeversion_pr423
+luke-poeppel_decitala_pr-1
+lundberg_respx_pr264
+luno_luno-python_pr-1
+luolingchun_flask-openapi3_pr243
+luozhouyang_python-string-similarity_pr23
+lxneng_xpinyin_pr50
+lyft_confidant_pr444
+lyft_linty_fresh_pr-1
+lzakharov_csv2md_pr-1
+m-burst_flake8-pytest-style_pr363
+m-vdb_pep440-version-utils_pr13
+m0r13n_pyais_pr-1
+m3dev_thunderbolt_pr-1
+maansaake_rabbitmq_client_pr-1
+maartenbreddels_ipyvolume_pr392
+maasglobal_sustainable-mobility-api_pr-1
+mabel-dev_orso_pr59
+macbre_mobify_pr-1
+machine-learning-for-medical-language_ctakes-client-py_pr-1
+machow_databackend_pr4
+macports_upt-macports_pr-1
+madcowd_ell_pr242
+madpah_serializable_pr178
+maecproject_python-maec_pr90
+magic-wormhole_magic-wormhole-transit-relay_pr-1
+magic-wormhole_magic-wormhole_pr671
+magmax_python-inquirer_pr687
+mahmoudimus_nose-timer_pr89
+maif_arta_pr-1
+maif_meteole_pr-1
+mailtrap_mailtrap-python_pr-1
+mainekuehn_usim_pr-1
+maistodos_python-creditcard_pr-1
+maki-nage_distogram_pr6
+makridenko_supadantic_pr-1
+maldoinc_wireup_pr-1
+malte-soe_dataclass-cli_pr-1
+malwarefrank_dnfile_pr88
+mam-dev_security-constraints_pr-1
+mammothb_symspellpy_pr181
+mangiucugna_json_repair_pr151
+manimcommunity_manimpango_pr-1
+manimozaffar_aioclock_pr-1
+manmartgarc_stochatreat_pr-1
+manrajgrover_halo_pr131
+mantle-convection-constrained_terratools_pr-1
+mapado_haversine_pr79
+mapbox_cligj_pr31
+mapbox_mapbox-sdk-py_pr139
+mapbox_mercantile_pr130
+mapbox_pygeobuf_pr50
+mapbox_snuggs_pr17
+mapiv_pypcd4_pr-1
+mar10_nutree_pr18
+marcelm_cutadapt_pr-1
+marcelotrevisani_souschef_pr-1
+marcogorelli_cython-lint_pr-1
+marcusjellinghaus_mcp_server_filesystem_pr-1
+marcusm117_mctk_pr-1
+marcuxyz_curlify2_pr14
+mardiros_blacksmith_pr-1
+mariusvniekerk_condax_pr-1
+mark-adams_pytest-test-groups_pr32
+markdrago_pgsanity_pr16
+marketsquare_robot-framework-mainframe-3270-library_pr-1
+marketsquare_robotframework-requests_pr-1
+marketsquare_robotframework-sherlock_pr-1
+markkho_msdm_pr-1
+markokr_rarfile_pr63
+markusressel_container-app-conf_pr-1
+markusressel_telegram-click_pr-1
+marl_pysox_pr124
+maroba_findiff_pr67
+marshallward_f90nml_pr180
+marshmallow-code_apispec_pr-1
+marshmallow-code_flask-smorest_pr-1
+marshmallow-code_marshmallow-oneofschema_pr212
+marshmallow-code_webargs_pr-1
+martinblech_xmltodict_pr395
+martinfleis_clustergram_pr-1
+martinthoma_flake8-simplify_pr-1
+masaccio_compact-json_pr30
+matan1008_pykdebugparser_pr20
+materialsvirtuallab_monty_pr761
+mathandy_svgpathtools_pr238
+mathause_mplotutils_pr-1
+mathiasstokholm_alkymi_pr-1
+mathieu-mp_aio-intex-spa_pr-1
+matiasb_python-unidiff_pr110
+matin_garth_pr119
+matplotlib_cycler_pr103
+matrix-org_matrix-python-sdk_pr321
+matsengrp_pdf-navigator-mcp_pr-1
+matterminers_lapis_pr-1
+matthew-brett_delocate_pr187
+matthewdeanmartin_openmock_pr23
+matthewfilipovich_torchoptics_pr-1
+matthewflamm_pynws_pr-1
+matthewwardrop_interface_meta_pr2
+matthewwithanm_django-imagekit_pr-1
+matthewwithanm_pilkit_pr74
+matthiasdiener_constantdict_pr-1
+mattijn_topojson_pr228
+mattrobenolt_python-sourcemap_pr7
+mattupstate_flask-principal_pr77
+matze_pkgconfig_pr-1
+maurerle_eralchemy2_pr40
+mause_duckdb_engine_pr-1
+maxhalford_prince_pr122
+maxhumber_gazpacho_pr47
+maxhumber_gif_pr-1
+maximkulkin_lollipop-jsonschema_pr13
+maximkulkin_lollipop_pr73
+maximtrp_scikit-posthocs_pr72
+mayitzin_ahrs_pr130
+maykinmedia_drf-jsonschema-serializer_pr18
+maykinmedia_drf-polymorphic_pr-1
+mayn_packerlicious_pr-1
+mberr_torch-max-mem_pr-1
+mcfunley_pugsql_pr77
+mcous_decoy_pr-1
+mcu-tools_mcuboot_pr1763
+mcurlej_joft_pr-1
+mdapena_pyventus_pr40
+mdavis-xyz_lambda_multiprocessing_pr19
+mdickinson_refcycle_pr-1
+mdomke_schwifty_pr260
+mdowds_mock-firestore_pr56
+mdowds_python-mock-firestore_pr-1
+meadsteve_lagom_pr276
+medical-event-data-standard_meds_pr-1
+meeb_whoisit_pr55
+meejah_txtorcon_pr-1
+megalus_django-google-sso_pr53
+megvii-research_hpargparse_pr-1
+meilisearch_meilisearch-mcp_pr-1
+melevir_flake8-functions-names_pr-1
+melexis_jira-juggler_pr-1
+melexis_warnings-plugin_pr-1
+melexis_xunit2rst_pr-1
+memmachine_memmachine_pr-1
+mercedes-benz_odxtools_pr404
+mergifyio_daiquiri_pr91
+metachris_logzero_pr357
+metaodi_sruthi_pr-1
+meteostat_meteostat-python_pr207
+metoffice_fab_pr-1
+metwork-framework_mflog_pr-1
+mewwts_addict_pr130
+meysam81_timeframe_pr-1
+mgough_sensorhub_pr-1
+mharrisb1_httpx-retry_pr-1
+mhcomm_pypeman_pr-1
+michaelaquilina_flake8-spellcheck_pr-1
+michaelkryukov_mongomock_motor_pr28
+michealroberts_samps_pr-1
+microsoft_cmd-call-graph_pr-1
+microsoft_fabric-rti-mcp_pr-1
+microsoft_knack_pr227
+microsoft_lsprotocol_pr433
+microsoft_nutter_pr52
+microsoft_picologging_pr122
+microsoft_planetary-computer-sdk-for-python_pr-1
+microsoft_sammo_pr-1
+microsoft_sarif-tools_pr103
+microsoftgraph_msgraph-sdk-python-core_pr848
+midea-lan_midea-local_pr-1
+midnighter_structurizr-python_pr-1
+mido_mido_pr624
+mierune_japan-mesh-tool_pr-1
+mietzen_porkbun-ddns_pr-1
+miguelgrinberg_flask-httpauth_pr126
+miguelgrinberg_flask-migrate_pr148
+miguelgrinberg_python-engineio_pr419
+miguelgrinberg_python-socketio_pr1241
+miguelvr_dropblock_pr-1
+mihdicaballero_mento_pr-1
+mikeckennedy_fastapi-chameleon_pr-1
+mikeckennedy_jinja_partials_pr6
+mikeshultz_ledger-eth-lib_pr-1
+miketheman_pytest-socket_pr227
+mikicz_pytest-xdist-worker-stats_pr3
+mikiepure_pydlt_pr25
+mindee_mindee-api-python_pr98
+mingrammer_diagrams_pr240
+minibrams_fastapi-decorators_pr-1
+minishlab_semhash_pr40
+miracle2k_webassets_pr562
+mirascope_mirascope_pr24
+mirumee_ariadne-codegen_pr381
+mirumee_ariadne-graphql-proxy_pr-1
+mirumee_django-prices_pr-1
+mirumee_google-i18n-address_pr62
+miso-belica_sumy_pr203
+misterwil_abodepy_pr-1
+mitchelllisle_sparkdantic_pr-1
+mittel-labs_bibleit_pr-1
+mivade_argparse_dataclass_pr68
+mivek_python-metar-taf-parser_pr73
+mixxorz_dslr_pr-1
+miyakogi_m2r_pr28
+miyuchina_mistletoe_pr224
+mjcaley_aiospamc_pr-1
+mjpost_sacrebleu_pr174
+mkah91_azure-keyvault-cli_pr-1
+mkaranasou_pyaml_env_pr-1
+mkdocs_mkdocs-click_pr90
+mkdocs_mkdocs-redirects_pr45
+mkdocstrings_autorefs_pr50
+mkdocstrings_mkdocstrings_pr217
+mkdocstrings_pytkdocs_pr95
+mkorpela_overrides_pr82
+mkorpela_pabot_pr651
+mlbazaar_btb_pr-1
+mmore500_alifedata-phyloinformatics-convert_pr25
+mmschlk_shapiq_pr94
+mnooner256_pyqrcode_pr42
+mobilityhouse_ocpp_pr-1
+mockingbirdconsulting_pychirp_pr-1
+model-bakers_model_bakery_pr426
+modern-python_modern-di_pr-1
+modern-python_that-depends_pr-1
+modscripps_mixsea_pr-1
+moj-analytical-services_splink_pr1226
+moldyn_mosaic_pr-1
+mollie_mollie-api-python_pr-1
+monarch-initiative_koza_pr-1
+monarch-initiative_pheval_pr-1
+morepath_dectate_pr-1
+moshibin_ssdpy_pr-1
+mosquito_aiohttp-xmlrpc_pr-1
+mosquito_caio_pr32
+mountaindash_nonebot-plugin-send-anything-anywhere_pr-1
+movingpandas_movingpandas_pr482
+mozilla-ai_any-llm_pr411
+mozilla_django-csp_pr272
+mphowardlab_lammpsio_pr-1
+mphowardlab_relentless_pr-1
+mpl-extensions_mpl-interactions_pr-1
+mplanchard_pydecor_pr-1
+mpytools_mplotutils_pr-1
+mrapacz_disjoint_set_pr3
+mrbean-bremen_pytest-find-dependencies_pr17
+mrbin99_django-vite_pr160
+mrf345_flask_minify_pr-1
+mrkwjc_einsumt_pr-1
+mrtango_rispy_pr-1
+mrtolkien_fastapi_simple_security_pr26
+msabramo_requests-unixsocket_pr77
+mschmieder_python-kacl_pr-1
+mthh_jenkspy_pr17
+mthh_routingpy_pr-1
+mtkennerly_dunamai_pr54
+mtlynch_resticpy_pr-1
+multani_structlog-gcp_pr98
+multiformats_py-multihash_pr-1
+multimeric_docstrands_pr-1
+munich-quantum-toolkit_bench_pr-1
+munich-quantum-toolkit_core_pr1327
+munichpavel_clovek-ne-jezi-se_pr-1
+mwclient_mwclient_pr370
+mycroftai_lingua-franca_pr-1
+myremylar_pygame_gui_pr702
+mystor_git-revise_pr-1
+myusuf3_delorean_pr69
+n-takumasa_py-janaf_pr16
+n-wouda_alns_pr-1
+nardew_talipp_pr-1
+narendrans_sqlalchemy_dremio_pr55
+nasa_batchee_pr-1
+nasa_ncompare_pr-1
+nasa_opera-sds-pge_pr-1
+nat-n_poethepoet_pr286
+natasha_natasha_pr130
+nautobot_pynautobot_pr177
+nayaverdier_dyntastic_pr29
+nbgallery_ipydeps_pr-1
+nbogojevic_midea-beautiful-air_pr28
+ncar_pydartdiags_pr-1
+ncclient_ncclient_pr645
+nebari-dev_jupyterlab-gallery_pr-1
+nebraltd_hm-pyhelper_pr-1
+necaris_cuid.py_pr1
+nedbat_cog_pr36
+nedbat_django_coverage_plugin_pr83
+neovim_pynvim_pr594
+neovim_python-client_pr589
+nephila_giturlparse_pr-1
+nephila_python-taiga_pr-1
+nerdai_llm-agents-from-scratch_pr-1
+nerdocs_pydifact_pr80
+nerfstudio-project_viser_pr353
+netbox-community_pynetbox_pr662
+netdevops_hier_config_pr-1
+netflix-skunkworks_policyuniverse_pr-1
+netflix-skunkworks_riskquant_pr17
+netflix_bless_pr78
+netflix_repokid_pr286
+netherlandsforensicinstitute_confidence_pr-1
+network-tools_shconfparser_pr-1
+neurobionics_onshape-robotics-toolkit_pr-1
+newam_monitorcontrol_pr-1
+newfuture_ddns_pr-1
+newrelic_newrelic-telemetry-sdk-python_pr78
+nexb_dparse2_pr4
+nextsnake_nextcore_pr-1
+nextthought_sphinxcontrib-programoutput_pr41
+nficano_humps_pr274
+nflverse_nfl_data_py_pr92
+nginxinc_crossplane_pr106
+ngladkikh_pkonfig_pr-1
+ngzhian_pycrunchbase_pr-1
+nhairs_python-json-logger_pr55
+ni_nisystemlink-clients-python_pr-1
+nicklambourne_slackblocks_pr113
+nickstenning_honcho_pr190
+nicodv_kmodes_pr194
+niedakh_pqdm_pr179
+niftycode_imessage_reader_pr-1
+nightblure_injection_pr-1
+nikoleta-v3_hitchcos_pr-1
+nilcoalescing_djangochannelsrestframework_pr-1
+nimaxin_init-data-py_pr-1
+nipy_nitime_pr200
+nirum_tableprint_pr-1
+njvack_markdown-to-json_pr18
+nkantar_keysort_pr-1
+nlpie_mtap_pr-1
+nmoroze_tclint_pr-1
+no-plagiarism_pymorphy3_pr39
+noaa-orr-erd_lat_lon_parser_pr10
+nohs_dkey_pr-1
+nomonosound_numpy-minmax_pr23
+nosarthur_gita_pr288
+nottyo_robotframework-jsonlibrary_pr53
+novafloss_multipart-reader_pr4
+nowanilfideme_pydantic-cereal_pr-1
+nowanilfideme_pydantic-kedro_pr-1
+nowanilfideme_pydantic-yaml_pr-1
+nrel_infrasys_pr-1
+nrel_thevenin_pr-1
+nrwldev_fastapi-problem_pr-1
+ns1_ns1-python_pr-1
+nschloe_matplotx_pr47
+nschloe_meshio_pr1268
+nschloe_pytest-codeblocks_pr42
+nteract_papermill_pr485
+nteract_scrapbook_pr83
+ntnu-ihb_pythonfmu_pr-1
+nudomarinero_wquantiles_pr7
+numirias_pytest-json-report_pr76
+numpy_numpy-financial_pr99
+numpy_numtype_pr-1
+nutechsoftware_alarmdecoder_pr-1
+nvbn_thefuck_pr1091
+nvidia-nemo_gym_pr-1
+nvidia_hpc-container-maker_pr-1
+nycpython_nycpython.com_pr-1
+nylas_nylas-python_pr444
+oasis-open_cti-pattern-validator_pr81
+oasis-open_cti-taxii-client_pr94
+obeezzy_lpminimk3_pr-1
+obsidianforensics_unfurl_pr239
+obsrvbl-oss_flowlogs-reader_pr-1
+octodns_octodns-bind_pr-1
+octodns_octodns-cloudflare_pr-1
+octodns_octodns-gandi_pr-1
+octodns_octodns-gcore_pr-1
+octodns_octodns-ns1_pr-1
+octodns_octodns-route53_pr-1
+octodns_octodns_pr1309
+octoenergy_tentaclio_pr226
+octoprint_mkdocs-site-urls_pr-1
+odashi_cloud-storage-mocker_pr-1
+oerc0122_castep_outputs_pr-1
+ofek_binary_pr13
+ofek_hatch-vcs_pr95
+ofek_msgspec-click_pr3
+ofek_pypinfo_pr-1
+officialpycasbin_sqlalchemy-adapter_pr4
+offis-dai_mango_pr-1
+ofw_curlify_pr33
+ogawa-ros_necstdb_pr-1
+ohf-voice_hassil_pr-1
+oittaa_uuid6-python_pr211
+okigan_awscurl_pr207
+okken_pytest-check_pr86
+okta_okta-jwt-verifier-python_pr35
+olegeech-me_mvcr-application-checker_pr-1
+oliverlambson_fastnanoid_pr9
+oliverwm1_zarrdump_pr-1
+olofk_fusesoc_pr748
+olzhasar_pytest-watcher_pr29
+omanges_turfpy_pr18
+omarkohl_pytest-datafiles_pr21
+ome-zarr-models_ome-zarr-models-py_pr-1
+ome9ax_target-s3-jsonl_pr-1
+omnilib_sphinx-mdinclude_pr68
+omry_omegaconf_pr96
+onedeadkey_kalamine_pr-1
+onicagroup_runway_pr-1
+onroerenderfgoed_skosprovider_pr-1
+open-dicom_dicom_parser_pr-1
+open-feature_python-sdk_pr538
+open-metadata_collate-dbt-artifacts-parser_pr6
+open2c_bioframe_pr-1
+openastronomy_github-actions-workflows_pr-1
+openclimatefix_ocf-data-sampler_pr-1
+opencyphal_pycyphal_pr-1
+opendatadiscovery_odd-models-package_pr23
+opendatalab_labelu_pr226
+openedx_django-pyfs_pr257
+openedx_edx-rest-api-client_pr272
+openedx_i18n-tools_pr150
+openeemeter_eeweather_pr89
+openfga_python-sdk_pr75
+openkmip_pykmip_pr597
+openmaptiles_openmaptiles-tools_pr-1
+openqasm_openpulse_pr37
+openqasm_openqasm-pygments_pr-1
+openqasm_oqpy_pr103
+opensanctions_fingerprints_pr14
+opensanctions_rigour_pr149
+opensearch-project_opensearch-dsl-py_pr91
+opensearch-project_opensearch-py_pr930
+opensourceeconomics_dags_pr-1
+opentracing-contrib_python-flask_pr61
+opentracing_basictracer-python_pr43
+openviess_pyvicare_pr-1
+oprypin_mkdocs-gen-files_pr23
+optimizely_python-sdk_pr462
+oras-project_oras-py_pr206
+ornl_zambeze_pr-1
+osantana_dicteval_pr-1
+osemosys_otoole_pr-1
+osism_openstack-image-manager_pr-1
+oslokommune_okdata-cli_pr-1
+osmlab_maproulette-python-client_pr-1
+osoken_sqlitecollections_pr-1
+otto-de_logsmith_pr-1
+oubiwann_metaphone_pr3
+ouhammmourachid_mermaid-py_pr249
+ousret_charset_normalizer_pr378
+ovasquez_mkdocs-merge_pr-1
+overcat_fastcrc_pr5
+owasp-dep-scan_dep-scan_pr148
+owenlamont_uv-secure_pr-1
+ownaginatious_mixpanel-jql_pr-1
+oxigraph_oxrdflib_pr74
+p1c2u_jsonschema-path_pr172
+p1c2u_jsonschema-spec_pr94
+p1c2u_pathable_pr43
+p2gx_gpsea_pr-1
+paambaati_mae_pr-1
+pab1it0_prometheus-mcp-server_pr-1
+pachterlab_ffq_pr18
+pagerduty_pdpyras_pr-1
+pagerduty_python-pagerduty_pr62
+pahaz_sshtunnel_pr247
+painless-software_django-probes_pr-1
+palantir_python-jsonrpc-server_pr-1
+pallets-eco_blinker_pr174
+pallets-eco_flask-alembic_pr57
+pallets-eco_flask-classful_pr162
+pallets-eco_flask-debugtoolbar_pr290
+pallets-eco_flask-mail_pr221
+pallets-eco_flask-principal_pr-1
+pallets-eco_flask-pydantic_pr50
+pallets-eco_flask-rq_pr-1
+pallets-eco_flask-wtf_pr635
+pallets-eco_wtforms_pr880
+pallets_click_pr3058
+pamelafox_axe-playwright-python_pr11
+pamelafox_openai-messages-token-helper_pr31
+panosz_alpha_shapes_pr-1
+paolodelia99_jaxfin_pr-1
+pappasam_toml-sort_pr91
+paramm-team_pybamm-param_pr-1
+parietal-inria_fmralign_pr-1
+parneetsingh022_quantium_pr-1
+passah2o_dorado_pr-1
+pathintegral-institute_mcpm.sh_pr265
+patrick-kidger_wadler_lindig_pr5
+paulschweizer_flowpipe_pr-1
+pavdmyt_yaspin_pr241
+pavlin-policar_opentsne_pr-1
+pawamoy_git-changelog_pr107
+pawelzny_dotty_dict_pr65
+pbs_pycaption_pr-1
+pchr8_pymorphy-spacy-disambiguation_pr-1
+pdm-project_tox-pdm_pr-1
+pdpipe_pdpipe_pr-1
+pecan_pecan_pr169
+peeringdb_django-peeringdb_pr-1
+pelagicore_qface_pr-1
+pelme_htpy_pr-1
+pengyunie_seutil_pr-1
+penlect_line-protocol-parser_pr9
+pepkit_attmap_pr49
+pepkit_eido_pr-1
+pepkit_pephubclient_pr49
+pepkit_peppy_pr500
+perrygeo_python-rasterstats_pr310
+personnummer_python_pr-1
+pescheckit_python-gpt-po_pr-1
+peter-slump_python-keycloak-client_pr19
+peter-van-tol_pydantic-shapely_pr-1
+peter-wangxu_persist-queue_pr61
+peterbe_hashin_pr214
+peterbe_premailer_pr261
+peterdemin_pip-compile-multi_pr11
+petereon_beaupy_pr-1
+petermorrowdev_gybe_pr-1
+petl-developers_petl_pr463
+pfmoore_editables_pr32
+pfnet_pysen_pr44
+pgarrett-scripps_fastaframes_pr-1
+pgijsbers_admonitions_pr-1
+pgjones_quart-schema_pr41
+pglass_py-openapi-schema-to-json-schema_pr12
+pgzip_pgzip_pr28
+phacdatahub_django-htmx-autocomplete_pr-1
+phfaist_pylatexenc_pr66
+phha_click_config_file_pr19
+philipmay_smart-prom-next_pr-1
+philpep_testinfra_pr792
+physiopy_phys2bids_pr-1
+piccolo-orm_targ_pr36
+picnicsupermarket_dbt-score_pr-1
+picterra_picterra-python_pr-1
+piercefreeman_gpt-json_pr40
+pilosus_piny_pr-1
+pinax_django-user-accounts_pr376
+pirxthepilot_wtfis_pr106
+piskvorky_sqlitedict_pr161
+pivoshenko_poetry-plugin-dotenv_pr424
+pizzaolive_ant_upload_checker_pr-1
+pjknkda_flake8-datetimez_pr-1
+pkgcore_pkgdev_pr-1
+plannigan_columbo_pr-1
+plasma-umass_slipcover_pr57
+plizonczyk_noiseprotocol_pr33
+pllueca_emoji_writer_pr-1
+ploomber_jupysql-plugin_pr90
+plos_allofplos_pr-1
+plotly_dash-slicer_pr-1
+plus3it_watchmaker_pr-1
+pndurette_pybatchexecute_pr1
+pnkraemer_probfindiff_pr-1
+pnkraemer_tueplots_pr154
+pnpnpn_timeout-decorator_pr65
+poapper-inc_fights_pr-1
+podhmo_alchemyjsonschema_pr37
+podhmo_magicalimport_pr18
+podhmo_python-node-semver_pr44
+point72_csp-adapter-symphony_pr-1
+policyengine_microdf_pr-1
+polkascan_py-scale-codec_pr117
+pollination_queenbee_pr-1
+polm_fugashi_pr104
+polyconseil_django-cid_pr68
+polymarket_python-order-utils_pr35
+ponty_easyprocess_pr20
+ponyorm_pony_pr671
+ponytailer_pydantic-client_pr-1
+posit-dev_great-tables_pr377
+posit-dev_posit-sdk-py_pr-1
+posit-dev_py-htmltools_pr-1
+posit-dev_rsconnect-python_pr-1
+positronic-robotics_configuronic_pr-1
+posthog_drf-exceptions-hog_pr39
+postlund_pyatv_pr2680
+potassco_clingraph_pr-1
+powerfulseal_powerfulseal_pr343
+ppinard_matplotlib-scalebar_pr46
+pradyunsg_vendoring_pr-1
+pralab_secml-torch_pr-1
+praw-dev_asyncpraw_pr317
+praw-dev_asyncprawcore_pr128
+praw-dev_praw_pr654
+praw-dev_prawcore_pr244
+pre-commit_pre-commit-mirror-maker_pr-1
+precice-forschungsprojekt_config-checker_pr-1
+precice-forschungsprojekt_config-graph_pr-1
+predicador37_pyjstat_pr32
+priorlabs_tabpfn-client_pr-1
+priorlabs_tabpfn_common_utils_pr48
+prithvijitguha_flowrunner_pr-1
+prodigyeducation_python-graphql-client_pr57
+project-generator_project_generator_pr-1
+projectmesa_mesa_pr2818
+prometheus_client_python_pr1139
+prompt-security_ps-fuzz_pr51
+protixit_dataclass-binder_pr-1
+provinzkraut_unasyncd_pr-1
+prunplanner_fio_wrapper_pr-1
+psd-tools_psd-tools_pr503
+psf_pyperf_pr-1
+psf_requests_pr6968
+psincraian_pepy_pr202
+pslmodels_microdf_pr-1
+pslmodels_paramtools_pr-1
+pudo_dataset_pr424
+pudo_normality_pr17
+pusher_pusher-http-python_pr207
+pvizeli_securetar_pr71
+pvlib_pvanalytics_pr-1
+pvlib_solarfactors_pr22
+pwildenhain_blackjack_pr-1
+pwildenhain_terminal_playing_cards_pr-1
+pwwang_python-varname_pr105
+py-mine_mcstatus_pr1051
+py-moneyed_py-moneyed_pr180
+pyamg_pyamg_pr449
+pyansys_pymapdl-reader_pr588
+pyansys_pypim_pr77
+pyapp-kit_app-model_pr250
+pyapp-kit_griffe-fieldz_pr-1
+pyapp-kit_psygnal_pr351
+pyapp-kit_pyconify_pr31
+pyasi_pybuildkite_pr106
+pyasn1_pyasn1-modules_pr12
+pyasn1_pyasn1_pr82
+pyca_bcrypt_pr-1
+pyca_service-identity_pr73
+pycasbin_sqlalchemy-adapter_pr72
+pycompression_xopen_pr7
+pycondor_pycondor_pr-1
+pycqa_doc8_pr148
+pycqa_flake8-bugbear_pr-1
+pycqa_isort_pr949
+pydanny_cached-property_pr18
+pydantic_bump-pydantic_pr143
+pydata_bottleneck_pr470
+pydata_pydata-google-auth_pr-1
+pydiscourse_pydiscourse_pr-1
+pydmd_pydmd_pr43
+pydoit_doit_pr407
+pydy_pydy_pr-1
+pyeventsourcing_eventsourcing-sqlalchemy_pr5
+pyfar_sofar_pr-1
+pygeoops_pygeoops_pr-1
+pygeos_pygeos_pr459
+pygfx_pylinalg_pr-1
+pyinfra-dev_pyinfra_pr231
+pyjobshop_pyjobshop_pr-1
+pylast_pylast_pr-1
+pylessard_python-can-isotp_pr96
+pylons_pastedeploy_pr-1
+pylons_pyramid_openapi3_pr-1
+pylons_pyramid_retry_pr20
+pymzml_pymzml_pr-1
+pyodide_sphinx-js_pr-1
+pyouroboros_ouroboros_pr45
+pyout_pyout_pr156
+pypa_dependency-groups_pr27
+pypa_flit_pr-1
+pypa_installer_pr258
+pypa_pyproject-hooks_pr-1
+pypa_pyproject-metadata_pr271
+pypa_twine_pr1275
+pypa_wheel_pr-1
+pyper-dev_pyper_pr-1
+pypolestar_pypolestar_pr-1
+pyriemann_pyriemann_pr230
+pysal_access_pr36
+pysal_esda_pr360
+pysal_mapclassify_pr274
+pysal_pointpats_pr159
+pysal_spglm_pr40
+pysal_spopt_pr487
+pyscript_pyscript-cli_pr-1
+pysmt_pysmt_pr-1
+pystorm_pystorm_pr-1
+pytest-dev_execnet_pr-1
+pytest-dev_iniconfig_pr70
+pytest-dev_pluggy_pr-1
+pytest-dev_pytest-asyncio_pr-1
+pytest-dev_pytest-bdd_pr749
+pytest-dev_pytest-describe_pr40
+pytest-dev_pytest-env_pr60
+pytest-dev_pytest-flask_pr177
+pytest-dev_pytest-mock_pr537
+pytest-dev_pytest-nunit_pr74
+pytest-dev_pytest-print_pr155
+pytest-dev_pytest-subtests_pr199
+pytest-dev_pytest-twisted_pr154
+python-amazon-mws_python-amazon-mws_pr-1
+python-astrodynamics_spacetrack_pr-1
+python-attrs_attrs_pr1449
+python-cas_python-cas_pr65
+python-cmd2_cmd2_pr1522
+python-constraint_python-constraint_pr51
+python-desert_desert_pr134
+python-escpos_python-escpos_pr-1
+python-formate_flake8-dunder-all_pr-1
+python-grimp_grimp_pr124
+python-hyper_h11_pr-1
+python-hyper_hpack_pr280
+python-hyper_priority_pr145
+python-hyper_wsproto_pr149
+python-lsp_pylsp-mypy_pr108
+python-lsp_python-lsp-ruff_pr109
+python-openapi_openapi-schema-validator_pr135
+python-openapi_openapi-spec-validator_pr398
+python-parsy_parsy_pr81
+python-poetry_cleo_pr512
+python-poetry_poetry-plugin-export_pr294
+python-poetry_poetry_pr9118
+python-poetry_tomlkit_pr435
+python-scim_scim2-server_pr-1
+python-social-auth_social-app-django_pr812
+python-social-auth_social-core_pr1368
+python-tap_tappy_pr163
+python-trio_asyncclick_pr45
+python-trio_trio-websocket_pr183
+python-useful-helpers_threaded_pr43
+python-validators_validators_pr417
+python_cherry-picker_pr-1
+python_miss-islington_pr-1
+pythonarcade_pytiled_parser_pr49
+pythonecuador_lira_pr-1
+pythonspeed_profila_pr-1
+pytr-org_pytr_pr244
+pytroll_donfig_pr63
+pytroll_pygac_pr-1
+pyupio_changelogs_pr-1
+pyupio_dparse_pr76
+pyveci_verlib2_pr59
+pyvisa_pyvisa-sim_pr168
+pyvisa_pyvisa_pr914
+pyvista_fast-simplification_pr71
+pyvista_tetgen_pr98
+pyvrp_vrplib_pr-1
+pzelasko_kaldialign_pr21
+qdrant_mcp-server-qdrant_pr64
+qiskit-community_mapomatic_pr-1
+qiskit-community_qiskit-ibm-experiment_pr-1
+qiskit-community_qiskit-ionq_pr236
+qiskit_qiskit-qasm3-import_pr-1
+qntm_greenery_pr110
+qua-platform_py-qua-tools_pr196
+quantco_slim-trees_pr-1
+quantling_pyndl_pr-1
+quantopian_empyrical_pr81
+quantstack_ipysheet_pr90
+quantstack_py2vega_pr-1
+quantstack_pyls-memestra_pr-1
+quantumjot_btrack_pr-1
+quantumlib_stim_pr694
+qubvel_ttach_pr8
+quentinlampin_microschc_pr-1
+qutip_qutip-qip_pr-1
+radiasoft_chronver_pr14
+rafaelherik_tfsumpy_pr-1
+rajivsarvepalli_mock-alchemy_pr155
+ramonhagenaars_jsons_pr143
+ramonhagenaars_typish_pr27
+ran-isenberg_aws-lambda-env-modeler_pr175
+raphaelm_defusedcsv_pr9
+raphaelm_python-sepaxml_pr68
+raphaelvallat_antropy_pr32
+rapidsai_dependency-file-generator_pr-1
+rasahq_rasa-sdk_pr105
+rasbt_biopandas_pr134
+rasca0027_mahjong4rl_pr-1
+raulcd_datanomy_pr-1
+raulgomis_semversioner_pr-1
+rayluo_identity_pr-1
+rbw_pysnow_pr91
+rdesarz_biped-walking-controller_pr-1
+readthedocs_sphinx-notfound-page_pr-1
+reagento_adaptix_pr8
+real-yfprojects_sphinx-polyversion_pr-1
+realpython_codetiming_pr50
+red-hat-storage_errata-tool_pr-1
+redhatproductsecurity_cvelib_pr-1
+redhatqe_firewatch_pr-1
+redhatqe_wait_for_pr-1
+redimp_otterwiki_pr282
+reef-technologies_logfury_pr9
+refindlyllc_rets_pr-1
+regebro_svg.path_pr111
+regionmask_regionmask_pr493
+reichlab_cladetime_pr-1
+reiinakano_scikit-plot_pr90
+reinout_z3c.dependencychecker_pr-1
+release-depot_koji_wrapper_pr-1
+remdelaportemathurin_h-transport-materials_pr-1
+remigermain_nested-multipart-parser_pr-1
+remix_partridge_pr-1
+renan-r-santos_pixi-kernel_pr-1
+renatopp_liac-arff_pr91
+replicate_replicate-python_pr-1
+repo-helper_hatch-requirements-txt_pr35
+repo-helper_pypi-json_pr29
+repo-helper_pyproject-parser_pr78
+repobee_repobee-sanitizer_pr-1
+reportportal_agent-python-behave_pr53
+reportportal_agent-python-robotframework_pr120
+reportportal_client-python_pr142
+repository-service-tuf_repository-service-tuf-cli_pr-1
+requests_requests-oauthlib_pr497
+researchobject_ro-crate-py_pr-1
+resend_resend-python_pr-1
+resultwizard_resultwizard_pr-1
+rethinkpriorities_squigglepy_pr-1
+reverseclabs_iamspy_pr-1
+revsys_django-friendship_pr-1
+revsys_django-test-plus_pr208
+rfverbruggen_rachiopy_pr-1
+richard-gyiko_json-schema-to-pydantic_pr32
+richardkiss_pycoin_pr400
+ricklupton_rmscene_pr-1
+rishi-kulkarni_nsb-toolbox_pr-1
+rizsotto_scan-build_pr124
+rki-mf1_breakfast_pr-1
+rlabbe_filterpy_pr243
+rm-hull_luma.core_pr-1
+rm-hull_luma.led_matrix_pr-1
+rmeli_spyrmsd_pr-1
+robaina_pynteny_pr-1
+robertcraigie_pyright-python_pr-1
+robin900_gspread-dataframe_pr-1
+robinnil_file_read_backwards_pr87
+robostack_vinca_pr-1
+robotframework_pythonlibcore_pr150
+robotools_defcon_pr469
+robotools_fontmath_pr177
+robotpy_robotpy-wpilib-utilities_pr-1
+robusta-dev_krr_pr483
+roche_gitlab-configuration-as-code_pr-1
+rockefellerarchivecenter_dacsspace_pr-1
+rockefellerarchivecenter_rac_aspace_pr-1
+rockem_busypie_pr62
+roee30_datargs_pr-1
+roeniss_dhlottery-api_pr-1
+roflcoopter_viseron_pr451
+rohitsanj_doex_pr-1
+rokam_midea-local_pr412
+rolepoint_pyseeyou_pr14
+rollbar_pyrollbar_pr479
+rom1504_embedding-reader_pr30
+roniemartinez_latex2mathml_pr529
+ros_urdf_parser_py_pr-1
+roskakori_pimdb_pr-1
+roskakori_pygount_pr203
+rosscdh_mkdocs-markdownextradata-plugin_pr-1
+rossumai_rossum-api_pr-1
+rossumai_rossum_pr36
+rozumdev_django-lexorank_pr-1
+rqlite_pyrqlite_pr-1
+rsalmei_about-time_pr17
+rsalmei_alive-progress_pr213
+rsdefever_ele_pr-1
+rsennrich_subword-nmt_pr94
+rshk_python-pcapng_pr45
+rsinger86_django-lifecycle_pr121
+rsinger86_drf-flex-fields_pr83
+rspivak_slimit_pr102
+rstcheck_rstcheck_pr25
+rstudio_py-shinyswatch_pr51
+rstudio_vetiver-python_pr-1
+rubik_radon_pr240
+rubik_xenon_pr56
+rudderlabs_rudder-airflow-provider_pr44
+rugleb_jsoncomparison_pr37
+run-llama_llama_deploy_pr283
+run-x_opta_pr220
+runfalk_spans_pr19
+rushter_mlalgorithms_pr31
+rushter_selectolax_pr188
+rustedpy_result_pr185
+ryanhiebert_django-safemigrate_pr-1
+ryantam626_jupyterlab_code_formatter_pr338
+saadmk11_github-action-utils_pr13
+saashajoshi_piqture_pr-1
+sabuhish_fastapi-mail_pr230
+sacgf_cdot_pr-1
+sage-bionetworks_challengeutils_pr-1
+salesforce_cloudsplaining_pr492
+salesforce_policy_sentry_pr521
+saltstack_pytest-skip-markers_pr16
+samschott_maestral_pr825
+samuelcolvin_dirty-equals_pr11
+samuelcolvin_watchfiles_pr136
+samueljsb_silence-lint-error_pr-1
+san4ezy_django_softdelete_pr60
+sanand0_xmljson_pr46
+sanders41_camel-converter_pr494
+sandisk-open-source_pyvcd_pr-1
+sangoma_ursine_pr-1
+sanic-org_sanic-routing_pr76
+santandersecurityresearch_drheader_pr-1
+santinic_pampy_pr16
+sap_cloud-pysec_pr-1
+sap_python-pyodata_pr-1
+sap_swagger-plugin-for-sphinx_pr-1
+sapcc_octavia-f5-provider-driver_pr-1
+sarugaku_plette_pr57
+sarugaku_vistir_pr54
+sayanarijit_expandvars_pr69
+sayari-analytics_pyisic_pr-1
+sbdchd_codeowners_pr46
+sbdchd_flake8-pie_pr121
+sbidoul_runboat_pr-1
+sbidoul_whool_pr32
+sbidy_pywizlight_pr-1
+sbrunner_jsonschema-gentypes_pr-1
+scalative_haas_pr-1
+scanner-research_rekall_pr-1
+scanoss_scanoss.py_pr-1
+scastlara_pytest-tagging_pr22
+sceptre_sceptre-file-resolver_pr5
+schollm_docker-composer_pr-1
+scieloorg_xylose_pr-1
+scienceforamerica_scipeds_pr-1
+scientific-python_changelist_pr-1
+scientific-python_lazy-loader_pr-1
+scientific-python_lazy_loader_pr146
+scikit-build_scikit-build-core_pr32
+scikit-hep_awkward-0.x_pr248
+scikit-hep_cabinetry_pr93
+scikit-hep_hepunits_pr3
+scikit-hep_hist_pr-1
+scikit-hep_histoprint_pr106
+scikit-hep_mplhep_pr274
+scikit-hep_particle_pr234
+scikit-hep_pylhe_pr-1
+scikit-hep_scikit-hep_pr-1
+scikit-hep_uproot3-methods_pr57
+scikit-tda_kepler-mapper_pr236
+scilifelabdatacentre_dds_cli_pr-1
+scimma_hop-client_pr-1
+scinode_node-graph_pr-1
+scipp-atlas_atlas-schema_pr75
+scipp_scippnexus_pr-1
+scipy_scipy_doctest_pr-1
+scitokens_scitokens_pr193
+scottrogowski_mongita_pr35
+scottwernervt_favicon_pr29
+scour-project_scour_pr268
+scrapinghub_andi_pr38
+scrapinghub_arche_pr-1
+scrapinghub_extruct_pr-1
+scrapinghub_number-parser_pr95
+scrapinghub_price-parser_pr72
+scrapinghub_python-crfsuite_pr165
+scrapinghub_scrapy-poet_pr-1
+scrapinghub_spidermon_pr-1
+scrapy-plugins_scrapy-splash_pr324
+scrapy-plugins_scrapy-zyte-smartproxy_pr-1
+scrapy_itemloaders_pr94
+scrapy_queuelib_pr76
+scrapy_scrapy-lint_pr-1
+scrapy_w3lib_pr246
+scravy_awesome-pattern-matching_pr-1
+screenpyhq_screenpy_pr-1
+screenpyhq_screenpy_selenium_pr-1
+sdispater_tomlkit_pr436
+sdss_sdsstools_pr-1
+sea-bass_pyroboplan_pr-1
+sealor_junkie_pr-1
+sean2077_jsonpath-python_pr11
+sec-edgar_sec-edgar_pr-1
+secondlife_autobuild_pr-1
+sedders123_phial_pr-1
+seek-oss_aec_pr-1
+seequent_properties_pr290
+seequent_pure_interface_pr-1
+sef43_openmm-mdanalysis-reporter_pr9
+sematic-ai_sematic_pr62
+semolex_novaposhta-python-client_pr-1
+semuconsulting_pynmeagps_pr84
+semuconsulting_pyrtcm_pr68
+semuconsulting_pyubx2_pr176
+semyonsinchenko_ibisgraph_pr-1
+sendgrid_python-http-client_pr148
+sendgrid_sendgrid-python_pr137
+serge-sans-paille_beniget_pr142
+serge-sans-paille_gast_pr96
+sergei-maertens_django-privates_pr-1
+sergiocorreia_panflute_pr224
+serialbandicoot_great-assertions_pr-1
+seshadrilab_tcrconvert_pr-1
+sethmlarson_socksio_pr46
+sffjunkie_astral_pr12
+sgaynetdinov_py-vkontakte_pr-1
+shenxiangzhuang_zhplot_pr-1
+shibukawa_imagesize_py_pr52
+shiftleftsecurity_sast-scan_pr395
+shinichi-takii_ddlparse_pr70
+shinneider_django-admin-inline-paginator_pr25
+shinux_pytime_pr-1
+shiphero_skippy-cov_pr15
+shoobx_xmldiff_pr142
+shopify_shopify_python_api_pr-1
+shoumikchow_bbox-visualizer_pr32
+si-23_py-import-cycles_pr69
+siddhantgoel_streaming-form-data_pr108
+sigma-py_npx_pr30
+sigmavirus24_github3.py_pr1249
+sigmavirus24_rush_pr2
+sigstore_model-transparency_pr-1
+siisurit_check_done_pr-1
+siliconcompiler_lambdapdk_pr9
+silx-kit_h5grove_pr105
+simondolle_dgim_pr-1
+simonw_csvs-to-sqlite_pr81
+simonw_datasette-publish-vercel_pr-1
+simonw_files-to-prompt_pr-1
+simonw_sqlite-utils_pr653
+simonw_strip-tags_pr-1
+simple-repository_simple-repository-server_pr25
+simple-repository_simple-repository_pr42
+sintezcs_flask-threads_pr1
+skforecast_skforecast_pr88
+sklarsa_django-sendgrid-v5_pr131
+skorokithakis_shortuuid_pr107
+sky-alin_telegram-text_pr-1
+skynetlabs_python-skynet_pr-1
+skyscanner_cfripper_pr-1
+skyscanner_pycfmodel_pr-1
+skywardai_kirin_pr-1
+slackapi_python-slack-events-api_pr91
+slackapi_python-slack-hooks_pr-1
+slackapi_python-slack-sdk_pr247
+slarse_labelbot_pr-1
+slavaganzin_ramda.py_pr-1
+slightlynybbled_engineering_notation_pr26
+sloria_environs_pr434
+smarie_python-makefun_pr-1
+smarie_python-yamlable_pr17
+smart-on-fhir_chart-review_pr-1
+smartbgp_yabgp_pr-1
+smartystreets_smartystreets-python-sdk_pr-1
+smdabdoub_kraken-biom_pr-1
+smileychris_django-countries_pr-1
+smlng_pycayennelpp_pr-1
+smpte_ris-osvp-metadata-camdkit_pr-1
+snakemake-profiles_lsf_pr-1
+snews2_sntools_pr-1
+snowblink14_smatch_pr-1
+snowflake-labs_schemachange_pr344
+snowflakedb_snowflake-cli_pr747
+snoyer_ocpsvg_pr-1
+sns-sdks_python-youtube_pr-1
+soar-telescope_goodman_focus_pr-1
+sobolevn_django-split-settings_pr577
+socialpoint-labs_unity-yaml-parser_pr-1
+socialwifi_jsonapi-requests_pr60
+socialwifi_routeros-api_pr107
+soco_soco_pr901
+soft-matter_slicerator_pr40
+solacelabs_solace-agent-mesh_pr94
+sonatype-nexus-community_jake_pr-1
+sooperset_mcp-atlassian_pr396
+sorend_sshconf_pr21
+sorenlassen_einsum-experiment_pr7
+sotetsuk_python-dev-tutorial_pr-1
+sovrasov_flops-counter.pytorch_pr152
+soxoj_maigret_pr1899
+spacetelescope_stsci.imagestats_pr59
+spacetelescope_tweakwcs_pr205
+spatial-image_multiscale-spatial-image_pr113
+spatial-image_spatial-image_pr21
+spdx_tools-python_pr855
+spec-first_connexion_pr1590
+spenhouet_confluence-markdown-exporter_pr-1
+spglib_spinspg_pr-1
+sphinx-contrib_apidoc_pr-1
+sphinx-contrib_spelling_pr-1
+sphinx-contrib_video_pr-1
+sphinx-doc_sphinx-argparse_pr49
+sphinx-doc_sphinxcontrib-django_pr-1
+sphinx-doc_sphinxext-opengraph_pr-1
+sphinx-toolbox_dict2css_pr31
+sphinx-toolbox_sphinx-pyproject_pr36
+splitio_python-client_pr261
+spmvg_nfoursid_pr14
+spotify_basic-pitch_pr100
+spotify_chartify_pr174
+springload_draftjs_exporter_pr5
+spyder-ide_qtsass_pr-1
+spyoungtech_json-five_pr45
+sql-hkr_tiny8_pr-1
+sqlalchemy-redshift_sqlalchemy-redshift_pr-1
+sripathikrishnan_jinjasql_pr24
+srstevenson_nb-clean_pr337
+srsudar_eg_pr-1
+ssanderson_interface_pr44
+ssciwr_ipywidgets-jsonschema_pr-1
+sscpac_statick_pr-1
+st-tech_zr-obp_pr77
+stac-utils_stac-asset_pr-1
+stac-utils_stac-check_pr-1
+stac-utils_stac-geoparquet_pr-1
+stac-utils_stac-pydantic_pr182
+stan-dev_stanio_pr1
+stanford-crfm_haliax_pr224
+stared_livelossplot_pr142
+staticdev_irpf-cei_pr-1
+staticdev_irpf-investidor_pr-1
+staticjinja_staticjinja_pr-1
+stchris_untangle_pr94
+stefan6419846_pip-licenses-cli_pr132
+stefanholek_lazy_pr10
+stefmolin_data-morph_pr-1
+stephane-caron_loop-rate-limiters_pr3
+stephantul_reach_pr-1
+stephenhillier_starlette_exporter_pr89
+stevesimmons_uuid7_pr2
+stigok_ruterstop_pr-1
+stitchfix_nodebook_pr-1
+stphivos_django-mock-queries_pr187
+strands-agents_sdk-python_pr498
+strands-agents_tools_pr173
+stranger6667_postmarker_pr-1
+stranger6667_pyanyapi_pr-1
+strawberry-graphql_strawberry-sqlalchemy_pr10
+streamlink_streamlink_pr6696
+stretch4x4_marshmallow-jsonschema_pr-1
+strictdoc-project_reqif_pr-1
+stringertheory_traces_pr228
+stummjr_flake8-scrapy_pr-1
+stummjr_scrapy-fieldstats_pr-1
+sukicz_boardgamegeek_pr-1
+sukiyaki_octodns-netbox_pr-1
+summernote_django-summernote_pr466
+sunset1995_py360convert_pr47
+suo_lintrunner_pr94
+supabase-community_supabase-py_pr1155
+supabase_supabase-py_pr1155
+supadata-ai_py_pr-1
+svixhq_python-ksuid_pr14
+swansonk14_p_tqdm_pr47
+swysocki_gpt-image_pr-1
+symerio_pgeocode_pr74
+syn54x_whisper_pr-1
+synss_python-mbedtls_pr102
+syrupy-project_syrupy_pr1026
+syrusakbary_aiodataloader_pr26
+syrusakbary_promise_pr76
+sysid_sse-starlette_pr56
+t-houssian_fillpdf_pr52
+t3rn0_ast-comments_pr26
+tableau_document-api-python_pr229
+tacgomes_investir_pr-1
+taketwo_llm-ollama_pr-1
+takikadiri_kedro-boot_pr-1
+takuti_prelims_pr-1
+talonhub_community_pr2046
+tardyp_sphinx-jinja_pr26
+target_matrixprofile-ts_pr69
+tarioch_beancounttools_pr-1
+tarioch_xirr_pr-1
+tartley_colorama_pr328
+taskiq-python_taskiq_pr529
+taverntesting_tavern_pr36
+taxiiproject_libtaxii_pr-1
+tbicr_django-pg-zero-downtime-migrations_pr9
+tbielawa_bitmath_pr88
+tdegeus_conda_envfile_pr-1
+tdsmith_sdif_pr-1
+teaengineering_aiokdb_pr-1
+team23_pydantic-apply_pr-1
+team23_pydantic-partial_pr51
+teamgeek-io_rsa-id-number_pr-1
+teamtomo_starfile_pr85
+techouse_qs_codec_pr-1
+tedder_requests-aws4auth_pr63
+tee-ar-ex_trx-python_pr68
+tefra_xsdata_pr1168
+tehmaze_ansi_pr-1
+telekom-mms_automated-ansible-role-documentation_pr-1
+termcolor_termcolor_pr-1
+terminusdb_terminusdb-client-python_pr-1
+terraform-compliance_cli_pr762
+terrencepreilly_darglint_pr57
+testingautomated-usi_uncertainty-wizard_pr-1
+textualize_rich_pr3782
+tfeldmann_organize_pr438
+tfoxy_graphene-django-optimizer_pr56
+thalesbertaglia_enelvo_pr-1
+thalissonvs_pydoll_pr286
+thammegowda_mtdata_pr-1
+thangbn_json-logging_pr78
+the-impact-craft_sourcerer_pr-1
+theatlantic_python-active-directory_pr4
+thebjorn_pydeps_pr233
+theclimatecorporation_properscoring_pr2
+thelastpickle_cassandra-medusa_pr-1
+theodore86_github-rate-limits-exporter_pr-1
+therenegadecoder_snakemd_pr-1
+theserverlessway_formica_pr-1
+thesharp_htpasswd_pr4
+thesimj_envyaml_pr36
+thiagokokada_nix-alien_pr126
+thieu1995_mealpy_pr105
+thobbs_pure-sasl_pr30
+thombashi_pingparsing_pr40
+thomwiggers_httpserver_pr2
+threecifanggen_python-functional-programming_pr-1
+thxo_cabrillo_pr-1
+tiangolo_asyncer_pr202
+ties_rpki-client-web_pr-1
+tilezen_mapbox-vector-tile_pr129
+tillahoffmann_localscope_pr-1
+timofurrer_colorful_pr51
+timofurrer_observable_pr12
+timofurrer_tag-expressions_pr2
+timonwong_cyksuid_pr30
+timraay_hllrcon_pr-1
+timvink_mkdocs-git-authors-plugin_pr107
+timvink_mkdocs-git-revision-date-localized-plugin_pr-1
+timvink_mkdocs-print-site-plugin_pr136
+timvink_mkdocs-table-reader-plugin_pr21
+tinche_tightwrap_pr-1
+tishka17_dataclass_factory_pr18
+tkarabela_pysubs2_pr79
+tkdrob_aiopyarr_pr-1
+tkem_cachetools_pr297
+tlambert03_mkdocs-api-autonav_pr25
+tlarsendataguy-yxdb_yxdb-py_pr-1
+tldr-pages_tldr-python-client_pr-1
+tmbo_questionary_pr443
+tmux-python_tmuxp_pr965
+tobac-project_tobac_pr-1
+tobgu_pyrsistent_pr282
+toblerity_rtree_pr-1
+todofixthis_class-registry_pr4
+tolomea_django-auto-prefetch_pr3
+tomasvotava_fastapi-sso_pr229
+tomerfi_aioswitcher_pr-1
+tomicapretto_flexitext_pr-1
+tompollard_tableone_pr194
+tomwojcik_starlette-context_pr66
+tonioo_sievelib_pr-1
+tonybaloney_perflint_pr49
+tonysyu_logquacious_pr-1
+tophat_syrupy_pr-1
+tortoise_aerich_pr7
+toumorokoshi_deepmerge_pr30
+toumorokoshi_jsonschema-extractor_pr-1
+toumorokoshi_vcver-python_pr1
+tox-dev_pipdeptree_pr488
+tox-dev_platformdirs_pr-1
+tox-dev_pre-commit-uv_pr79
+tox-dev_toml-fmt-common_pr3
+tox-dev_tox-gh_pr166
+tox-dev_tox-travis_pr-1
+tox-dev_tox-uv_pr264
+tox-dev_tox_pr3353
+tr11_python-configuration_pr-1
+trailofbits_blight_pr-1
+trailofbits_rfc3161-client_pr174
+trailofbits_rfc8785.py_pr11
+trallnag_prometheus-fastapi-instrumentator_pr326
+trane-dev_trane_pr-1
+transferwise_pipelinewise-singer-python_pr29
+trbs_pid_pr36
+treasure-data_td-client-python_pr145
+tree-sitter_tree-sitter-go_pr158
+treebeardtech_nbmake_pr132
+trezor_python-mnemonic_pr36
+trezor_python-shamir-mnemonic_pr47
+trincaog_magiccube_pr43
+tripcher_flake8-forbidden-func_pr-1
+troycomi_reportseff_pr-1
+truveris_overpunch_pr1
+tsv1_cabina_pr11
+tsv1_niltype_pr3
+ttu_ruuvitag-sensor_pr-1
+tumf_grafana-loki-mcp_pr-1
+turbo87_aerofiles_pr-1
+turettn_fastapi_offline_pr38
+tusharsadhwani_interpreted_pr-1
+tussedrotten_pylie_pr-1
+tuw-geo_ismn_pr-1
+tuw-geo_pygeogrids_pr-1
+tvorog_pytest-lazy-fixture_pr53
+twisted_towncrier_pr-1
+twitterdev_twitter-python-ads-sdk_pr296
+tylerjereddy_pytest-regex_pr2
+tylerwince_pydbg_pr-1
+typed-argparse_typed-argparse_pr-1
+ubc-mds_feature-selection-python_pr-1
+ubermag_ubermagutil_pr-1
+ubersan_pylic_pr-1
+ucfopen_canvasapi_pr666
+ul-mds_gecko_pr-1
+ulope_pytest-sftpserver_pr16
+ultrabug_mkdocs-static-i18n_pr317
+ultrabug_uhashring_pr14
+un1t_django-cleanup_pr117
+undera_pylgbst_pr53
+unionai-oss_pandera_pr34
+unnonouno_cudnnenv_pr-1
+unt-libraries_django-invite_pr-1
+unt-libraries_edtf-validate_pr-1
+untitaker_click-repl_pr120
+uptick_pymyob_pr-1
+uripeled2_llm-client-sdk_pr-1
+uriyyo_fastapi-lifespan-manager_pr142
+urllib3_urllib3_pr3190
+ustropo_uttlv_pr21
+utapyngo_pytest-unordered_pr19
+vacanza_holidays_pr1515
+vaidik_commentjson_pr50
+valaydave_tell-me-your-secrets_pr-1
+valcanobacon_boostbots_pr-1
+valentinogagliardi_unbrowsed_pr-1
+valkey-io_libvalkey-py_pr25
+valohai_laituri_pr25
+valohai_leval_pr13
+valohai_valohai-yaml_pr177
+vaskivskyi_asusrouter_pr-1
+vb64_telemulator3_pr-1
+vberlier_nbtlib_pr148
+vchan_hyperscript_pr8
+vcoder4c_cron-validator_pr13
+vedro-universe_vedro_pr151
+vega_altair_tiles_pr-1
+vemonet_rdflib-endpoint_pr-1
+venmo_business-rules_pr32
+venthur_blag_pr-1
+venthur_dotenv-cli_pr-1
+vespa-engine_pyvespa_pr33
+viatorus_quom_pr-1
+victorpelaez_coral-reef-optimization-algorithm_pr-1
+vidstige_ar_pr21
+viicos_flake8-pydantic_pr-1
+vil02_puzzle_generator_pr-1
+vimeo_py-money_pr13
+vinissimus_async-asgi-testclient_pr53
+vinta_pangu.py_pr10
+vintasoftware_django-templated-email_pr154
+viraptor_arpy_pr22
+virtuslab_git-machete_pr839
+vlaci_lzallright_pr93
+vladimarius_pyap_pr11
+vlasovskikh_funcparserlib_pr77
+vlm-run_vlmrun-hub_pr97
+vmware_pyvmomi_pr828
+vndee_llm-sandbox_pr74
+vogt4nick_dequindre_pr-1
+voxpupuli_puppetboard_pr-1
+voxpupuli_pypuppetdb_pr-1
+vrcmarcos_elasticmock_pr-1
+vshn_concierge-cli_pr-1
+vzhd1701_enex2notion_pr-1
+w0rmr1d3r_cloner_pr-1
+wagtail_wagtail-factories_pr68
+wam2layers_wam2layers_pr-1
+warner_magic-wormhole_pr671
+warpnet_salt-lint_pr236
+wasilukm_hoymiles-mqtt_pr-1
+watson-developer-cloud_python-sdk_pr803
+wavefronthq_wavefront-sdk-python_pr111
+wayfair-incubator_bigquery-buildkite-plugin_pr-1
+wayfair-incubator_pygitops_pr251
+wayfinder-foundry_stac-mcp_pr-1
+waylan_pyyaml-env-tag_pr6
+wdm0006_pygeohash_pr20
+wearespindle_django-ranged-fileresponse_pr6
+wearewhys_magnivore_pr-1
+weaveworks_grafanalib_pr-1
+weaveworks_kubediff_pr149
+weaviate_weaviate-python-client_pr136
+weblyzard_inscriptis_pr80
+webscopeio_license.sh_pr-1
+wemake-services_coverage-conditional-plugin_pr221
+wemake-services_dump-env_pr-1
+westerndigitalcorporation_pyvcd_pr18
+westerveltco_django-email-relay_pr-1
+westerveltco_django-simple-nav_pr-1
+whatshap_whatshap_pr-1
+wheelermt_pygpe_pr-1
+wheelodex_entry-points-txt_pr12
+wheelodex_wheel-filename_pr24
+wheerd_multiset_pr138
+whynothugo_python-barcode_pr-1
+wichert_pyramid_jwt_pr-1
+widgetti_reacton_pr40
+wigging_chemics_pr-1
+wikia_mike_pr-1
+wikilicious_pygmc_pr-1
+wikipathways_pywikipathways_pr-1
+willmcgugan_rich_pr3782
+wimglenn_advent-of-code-data_pr159
+wimglenn_djangorestframework-queryfields_pr33
+wimglenn_johnnydep_pr115
+wireservice_agate-excel_pr43
+wireservice_agate-sql_pr42
+wireservice_agate_pr785
+wjohnson_pyapacheatlas_pr61
+wntrblm_flask-talisman_pr24
+wojciechmula_pyahocorasick_pr204
+wolph_python-statsd_pr40
+wolph_python-utils_pr32
+wolverdude_genson_pr58
+woodgern_confusables_pr20
+woodruffw_abi3info_pr105
+wookayin_gpustat_pr-1
+workalendar_workalendar_pr407
+workhorsy_py-cpuinfo_pr194
+wortmeister-hq_zahlwort2num_pr-1
+wseaton_sqloxide_pr271
+wwrechard_pydlm_pr82
+wyfo_apischema_pr640
+xadrianzetx_optuna-distributed_pr-1
+xarray-contrib_cf-xarray_pr394
+xarray-contrib_flox_pr457
+xarray-contrib_pint-xarray_pr351
+xarray-contrib_xproj_pr-1
+xavdid_reddit-user-to-sqlite_pr-1
+xente_loki-logger-handler_pr43
+xflr6_graphviz_pr150
+xgcm_xrft_pr209
+xgi_castero_pr170
+xhtml2pdf_xhtml2pdf_pr784
+xlwings_jsondiff_pr81
+xmunoz_sodapy_pr71
+xnuinside_simple-ddl-parser_pr289
+xylambda_kalmankit_pr-1
+y-sunflower_bumplot_pr-1
+y-sunflower_pyfonts_pr35
+yale-libs_yalexs_pr-1
+yalishanda42_py-polynomial_pr-1
+yampelo_beagle_pr69
+yaph_geonamescache_pr27
+yas-opensource_prograce_pr-1
+yeger00_pylspclient_pr-1
+yelp_pidtree-bcc_pr-1
+yevhen-m_flake8-fancy-header_pr-1
+yezz123_authx_pr641
+yhoiseth_python-prediction-scorer_pr-1
+ymyzk_tox-gh-actions_pr-1
+ynqa_pandavro_pr57
+yola_pycloudflare_pr-1
+your-tools_python-cli-ui_pr106
+yousefez_discord-qalib_pr-1
+yt-project_unyt_pr278
+yte-template-engine_yte_pr62
+ytreister_gibr_pr-1
+yu-iskw_dbt-artifacts-parser_pr182
+yubico_python-fido2_pr233
+yukihiko-shinoda_pytest-resource-path_pr27
+yutanagano_sceptr_pr-1
+ywangd_peek_pr-1
+z3z1ma_dbt-osmosis_pr265
+zabuldon_teslajsonpy_pr480
+zach-taylor_splunk_handler_pr45
+zacharyvoase_urlobject_pr25
+zalmane_copybook_pr19
+zapier_email-reply-parser_pr31
+zapix_mtpylon_pr-1
+zarr-developers_virtualizarr_pr-1
+zbw_qualle_pr-1
+zehengl_pip-check-updates_pr-1
+zeth_inputs_pr57
+zhanyong-wan_dongbei_pr64
+zheller_flake8-quotes_pr103
+zhinst_zhinst-toolkit_pr307
+zhiwei2017_named_enum_pr-1
+zhubonan_castepxbin_pr5
+zhukovgreen_friendly-sequences_pr8
+zimeon_ocfl-py_pr-1
+zincware_laufband_pr-1
+zmap_zschema_pr-1
+zmievsa_cached_classproperty_pr-1
+zmoog_refurbished_pr-1
+zobweyt_textcase_pr-1
+zombie123456_pydis_pr-1
+zpieslak_mobilus-client_pr-1
+zuehlke_confz_pr-1
+zulko_moviepy_pr-1
+zytedata_zyte-autoextract_pr-1
diff --git a/resources_servers/denovo_swe/diagnose_failures.py b/resources_servers/denovo_swe/diagnose_failures.py
new file mode 100644
index 00000000000..d995268a442
--- /dev/null
+++ b/resources_servers/denovo_swe/diagnose_failures.py
@@ -0,0 +1,234 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Separate golden-patch failures caused by the sandbox from failures of the row itself.
+
+This exists because `evaluation_completed` does not answer the question. A build that is
+OOM-killed, or a test suite that runs out of disk, still produces a parsed log and a verdict --
+the tests simply failed. That grades identically to a genuinely broken golden patch, so raising
+the memory limit would silently change the "supported" set.
+
+The signatures below are read out of the captured test output, so a failure is attributed to
+resources only on direct evidence, never inferred from the fact that it failed.
+
+ python resources_servers/denovo_swe/diagnose_failures.py results/.../pass1_job_X.jsonl
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+
+# Ordered: the first match wins, so the most specific cause is reported.
+RESOURCE_SIGNATURES: tuple[tuple[str, tuple[str, ...]], ...] = (
+ (
+ "disk_full",
+ ("no space left on device", "enospc", "disk quota exceeded", "write error: no space"),
+ ),
+ (
+ "oom",
+ (
+ "out of memory",
+ "outofmemoryerror",
+ "cannot allocate memory",
+ "oom-kill",
+ "oom killed",
+ "killed process",
+ "memoryerror",
+ "signal: killed",
+ "runtime: out of memory",
+ "fatal error: out of memory",
+ "std::bad_alloc",
+ "exit status 137",
+ "javaheapspace",
+ "java heap space",
+ "gc overhead limit exceeded",
+ ),
+ ),
+ (
+ "process_killed",
+ # A bare SIGKILL with no allocator message. Usually the cgroup OOM killer, but the
+ # evidence is weaker, so it is reported separately rather than folded into `oom`.
+ ("killed", "sigkill", "terminated by signal 9"),
+ ),
+ (
+ "too_many_files",
+ ("too many open files", "emfile"),
+ ),
+ (
+ "network",
+ # NOT "the sandbox has no internet" -- it does; Go, npm and composer all fetch
+ # successfully in the same sandboxes. This is an egress fault for one toolchain, most
+ # often a JVM on a dual-stack network preferring an IPv6 address it has no route to.
+ # Either way it is an environment problem, not evidence that the golden patch is wrong.
+ (
+ "could not resolve host",
+ "connection refused",
+ "network is unreachable",
+ "temporary failure in name resolution",
+ "etimedout",
+ "econnreset",
+ "proxyconnect",
+ ),
+ ),
+)
+
+
+def classify_output(text: str) -> str | None:
+ """Return the resource cause evidenced in the output, or None."""
+ lowered = text.lower()
+ for label, needles in RESOURCE_SIGNATURES:
+ if any(needle in lowered for needle in needles):
+ return label
+ return None
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument("rollouts_jsonl", type=Path)
+ parser.add_argument(
+ "--timeout-s",
+ type=float,
+ default=1200.0,
+ help="The configured evaluation timeout; runs within --near of it are treated as timing out.",
+ )
+ parser.add_argument("--near", type=float, default=0.9, help="Fraction of the timeout that counts as 'near'.")
+ parser.add_argument("--show", type=int, default=4, help="Example instance ids to print per cause.")
+ args = parser.parse_args()
+
+ if not args.rollouts_jsonl.exists():
+ print(f"no such file: {args.rollouts_jsonl}", file=sys.stderr)
+ return 2
+
+ total = 0
+ resolved = 0
+ failures: list[dict[str, Any]] = []
+ durations: list[float] = []
+
+ for row in _rows(args.rollouts_jsonl):
+ total += 1
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ durations.append(duration)
+ if row.get("resolved"):
+ resolved += 1
+ continue
+ failures.append(row)
+
+ if total == 0:
+ print("no rows", file=sys.stderr)
+ return 2
+
+ causes: Counter[str] = Counter()
+ examples: dict[str, list[str]] = defaultdict(list)
+ by_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ for row in failures:
+ instance_id = str(row.get("instance_id") or "?")
+ language = str(row.get("language") or "unknown")
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ output = str(row.get("test_output") or "")
+ error = str(row.get("error") or "")
+
+ if not row.get("evaluation_completed", False):
+ cause = "no_verdict"
+ elif duration >= args.timeout_s * args.near:
+ # Ran to (or near) the ceiling. With CPU requests well below limits this is the
+ # shape CPU starvation takes: the work is not wrong, it just never finished.
+ cause = "timeout"
+ elif (row.get("test_results") or {}).get("tests_observed", 0) == 0 and (row.get("test_results") is not None):
+ # The parser saw zero tests, so nothing ran: the build or setup died before the
+ # suite started. Parser-agnostic, and a different thing from "the tests failed".
+ # Most often dependency drift -- an image pinned months ago resolving today's
+ # packages, e.g. cargo pulling a crate that needs a newer edition than its
+ # toolchain supports. The golden patch is not implicated either way.
+ cause = classify_output(output + "\n" + error) or "no_tests_ran"
+ else:
+ cause = classify_output(output + "\n" + error) or "row_failure"
+
+ causes[cause] += 1
+ by_language[language][cause] += 1
+ if len(examples[cause]) < args.show:
+ examples[cause].append(f"{instance_id} ({language}, {duration:.0f}s)")
+
+ # Causes that are about the environment rather than the row. `no_tests_ran` is included:
+ # a suite that never started says nothing about whether the golden patch is correct.
+ resource_causes = {
+ "oom",
+ "disk_full",
+ "process_killed",
+ "too_many_files",
+ "network",
+ "timeout",
+ "no_verdict",
+ "no_tests_ran",
+ }
+ resource_total = sum(count for cause, count in causes.items() if cause in resource_causes)
+
+ print(f"rows: {total} resolved: {resolved} ({100 * resolved / total:.1f}%) failures: {len(failures)}")
+ if durations:
+ ordered = sorted(durations)
+ p50 = ordered[len(ordered) // 2]
+ p95 = ordered[min(len(ordered) - 1, int(len(ordered) * 0.95))]
+ print(
+ f"verification seconds: p50={p50:.0f} p95={p95:.0f} max={ordered[-1]:.0f} (timeout {args.timeout_s:.0f})"
+ )
+ print()
+ print("failure attribution:")
+ for cause, count in causes.most_common():
+ marker = "ENV" if cause in resource_causes else "row"
+ share = 100 * count / max(len(failures), 1)
+ print(f" {cause:<16} {count:>5} ({share:5.1f}% of failures) [{marker}]")
+ for example in examples[cause]:
+ print(f" e.g. {example}")
+
+ print()
+ if not failures:
+ print("VERDICT: no failures to attribute")
+ elif resource_total == 0:
+ print("VERDICT: no failure shows resource evidence — these look like genuine row failures.")
+ print(" Raising sandbox limits would not change the supported set.")
+ else:
+ share = 100 * resource_total / len(failures)
+ print(
+ f"VERDICT: {resource_total}/{len(failures)} failures ({share:.1f}%) show resource or environment evidence."
+ )
+ print(" Raise the relevant limit and re-measure before treating these rows as broken.")
+
+ if by_language:
+ print("\n per-language failure causes:")
+ for language, counts in sorted(by_language.items(), key=lambda kv: -sum(kv[1].values())):
+ summary = " ".join(f"{cause}={count}" for cause, count in counts.most_common())
+ print(f" {language:<10} {summary}")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/resources_servers/denovo_swe/prepare_denovo_swe.py b/resources_servers/denovo_swe/prepare_denovo_swe.py
new file mode 100644
index 00000000000..ec95e743f30
--- /dev/null
+++ b/resources_servers/denovo_swe/prepare_denovo_swe.py
@@ -0,0 +1,123 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Prepare AweAI-Team/DeNovoSWE training data for NeMo Gym, from the Hub.
+
+This is a training dataset, not an eval benchmark -- there is no fixed/frozen reference split,
+and the output is meant to feed a training run, not to be scored against as a leaderboard.
+
+Writes only the rows already known to be usable: `data/supported_instance_ids.txt` is the result
+of a full-set 3x golden-patch sweep -- a row not on that list either never resolves, never
+produced a verdict, or resolves inconsistently across passes (see `aggregate_golden_patch.py` and
+the README), so it is not worth carrying into the training jsonl at all rather than shipping a
+row no agent run could usefully score.
+
+Filters mirror `responses_api_agents/swe_agents/denovoswe_dataprocessor.py`'s
+`DeNovoSWEDataProcessor._select` defaults (the already-validated reference converter for this
+dataset): require a non-empty `passed_ptp` (nothing to grade against otherwise) and skip
+`submodule_uninitialized` rows (the image's checkout is known-incomplete for those).
+
+ DENOVO_SWE_LIMIT=200 python -m resources_servers.denovo_swe.prepare_denovo_swe
+"""
+
+import json
+import os
+import random
+from pathlib import Path
+
+
+SHUFFLE_SEED = 0
+
+DATASET_NAME = "AweAI-Team/DeNovoSWE"
+DATASET_FILENAME = "denovoswe_public.jsonl"
+SUPPORTED_IDS_FPATH = Path(__file__).parent / "data" / "supported_instance_ids.txt"
+OUTPUT_FPATH = Path(__file__).parent / "data" / "denovo_swe_training.jsonl"
+
+AGENT_REF = {"type": "responses_api_agents", "name": "denovo_swe_opencode_sandboxed_agent"}
+
+
+def _load_supported_ids(fpath: Path) -> set[str]:
+ return {line.strip() for line in fpath.read_text(encoding="utf-8").splitlines() if line.strip()}
+
+
+def _iter_raw_rows():
+ from huggingface_hub import hf_hub_download
+
+ path = Path(hf_hub_download(repo_id=DATASET_NAME, filename=DATASET_FILENAME, repo_type="dataset"))
+ with path.open(encoding="utf-8") as f:
+ for line in f:
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+def _build_row(raw: dict) -> dict:
+ instance_id = (raw.get("instance_id") or "").lower()
+ coverage = ((raw.get("repo_line_coverage") or {}).get("coverage_percent")) or 0.0
+ row = {
+ "instance_id": instance_id,
+ "repo": raw.get("repo") or f"{raw.get('user', '')}/{instance_id}",
+ "github_url": raw.get("github_url", ""),
+ "language": "python",
+ "workdir": raw.get("workdir", ""),
+ # Docker Hub tags are lowercased on push; the row's own image/image_url already reflects
+ # that, so use it directly rather than re-deriving from instance_id.
+ "image_ref": f"docker.io/{raw.get('image_url') or raw.get('image') or f'aweaiteam/denovoswe:{instance_id}'}",
+ "base_commit": raw.get("parent_commit", ""),
+ "patch": "",
+ "test_patch": raw.get("test_patch", "") or "",
+ "document": raw.get("document", "") or "",
+ "problem_statement": raw.get("document", "") or "",
+ "pypi_name": raw.get("pypi_name", "") or "",
+ "import_names": raw.get("import_names") or [],
+ "passed_ptp": raw.get("passed_ptp") or [],
+ "failed_ptp": raw.get("failed_ptp") or [],
+ "test_binary_archive_b64": raw.get("test_binary_archive_b64") or "",
+ "expected_coverage_percent": float(coverage),
+ }
+ row["responses_create_params"] = {"input": [{"role": "user", "content": row["document"]}]}
+ row["agent_ref"] = AGENT_REF
+ return row
+
+
+def prepare(supported_ids: set[str], limit: int = 0) -> Path:
+ OUTPUT_FPATH.parent.mkdir(parents=True, exist_ok=True)
+
+ rows = []
+ for raw in _iter_raw_rows():
+ if limit and len(rows) >= limit:
+ break
+ instance_id = (raw.get("instance_id") or "").lower()
+ if instance_id not in supported_ids:
+ continue
+ rows.append(_build_row(raw))
+
+ random.Random(SHUFFLE_SEED).shuffle(rows)
+
+ with OUTPUT_FPATH.open("w", encoding="utf-8") as fout:
+ for row in rows:
+ fout.write(json.dumps(row) + "\n")
+
+ print(f"Wrote {len(rows)} DeNovoSWE problems to {OUTPUT_FPATH} (shuffled, seed={SHUFFLE_SEED})")
+ missing = len(supported_ids) - len(rows)
+ if missing:
+ print(f" {missing} supported id(s) from {SUPPORTED_IDS_FPATH.name} were not found in the Hub dataset")
+ return OUTPUT_FPATH
+
+
+if __name__ == "__main__":
+ prepare(
+ _load_supported_ids(SUPPORTED_IDS_FPATH),
+ int(os.environ.get("DENOVO_SWE_LIMIT") or 0),
+ )
diff --git a/resources_servers/denovo_swe/requirements.txt b/resources_servers/denovo_swe/requirements.txt
new file mode 100644
index 00000000000..2c9ef83ea2a
--- /dev/null
+++ b/resources_servers/denovo_swe/requirements.txt
@@ -0,0 +1 @@
+-e nemo-gym[dev,sandbox] @ ../..
diff --git a/resources_servers/denovo_swe/task_data.py b/resources_servers/denovo_swe/task_data.py
new file mode 100644
index 00000000000..9057827125d
--- /dev/null
+++ b/resources_servers/denovo_swe/task_data.py
@@ -0,0 +1,35 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+"""Task-data schema for the DeNovoSWE resources server.
+
+Mirrors ``app.DeNovoSWEInstanceRequest``: required-ness follows the wire contract, not what
+``verify()`` happens to read. ``patch`` is legitimately empty for every committed row -- DeNovoSWE
+has no golden model-style patch (the pre-existing image source at ``base_commit`` IS the golden
+answer); it is only ever non-empty for an agent-produced rollout.
+"""
+
+from pydantic import BaseModel, ConfigDict, Field
+
+
+class TaskData(BaseModel):
+ """One AweAI-Team/DeNovoSWE task."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str = Field(json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ repo: str = Field(default="", json_schema_extra={"consumed_by": ["provenance"]})
+ github_url: str = Field(default="", json_schema_extra={"consumed_by": ["provenance"]})
+ language: str = Field(default="python", json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ workdir: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ image_ref: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ base_commit: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ test_patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ document: str = Field(default="", json_schema_extra={"consumed_by": ["verify", "prompt", "provenance"]})
+ problem_statement: str = Field(default="", json_schema_extra={"consumed_by": ["prompt", "provenance"]})
+ pypi_name: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ import_names: list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["provenance"]})
+ passed_ptp: list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["verify"]})
+ failed_ptp: list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["provenance"]})
+ test_binary_archive_b64: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ expected_coverage_percent: float = Field(default=0.0, json_schema_extra={"consumed_by": ["provenance"]})
diff --git a/resources_servers/denovo_swe/tests/__init__.py b/resources_servers/denovo_swe/tests/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/denovo_swe/tests/test_app.py b/resources_servers/denovo_swe/tests/test_app.py
new file mode 100644
index 00000000000..11eceffc5cf
--- /dev/null
+++ b/resources_servers/denovo_swe/tests/test_app.py
@@ -0,0 +1,377 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Tests for the DeNovoSWE resources server's grading and script construction.
+
+Grading itself (the per-file pytest collect-then-intersect-then-run sweep) is delegated to
+``_denovoswe_eval.py``, a verbatim local copy of the already-validated in-container evaluator from
+the SIF-based swe_agents harness; this file tests the stable contract app.py depends on
+(seed_prep_script, build_eval_script, verification_files, run_verification's report.json parsing,
+response shape, multi-worker entrypoint) -- and the golden/non-golden branching that is unique to
+this server (no other SWE resources server here skips patch application on the golden path).
+
+Two classes here pin bugs that were actually hit building the sibling SWE resources servers
+(scale_swe, swe_rebench): a verify response missing the echoed request fields, and a
+multi-worker entrypoint with no module-level `app`. Both looked fine locally and both only
+failed once real traffic hit them, so the same tests are written here from the start.
+"""
+
+from types import SimpleNamespace
+
+import pytest
+
+from resources_servers.denovo_swe.verification import (
+ CLEAN_SH_PATH,
+ DOCUMENT_PATH,
+ EVAL_PY_PATH,
+ META_PATH,
+ REPORT_BEGIN,
+ REPORT_END,
+ TEST_BINARY_PATH,
+ TEST_PATCH_PATH,
+ VerificationInputs,
+ _slice,
+ build_eval_script,
+ drop_patch_sections,
+ patch_section_path,
+ run_verification,
+ seed_prep_script,
+ verification_files,
+)
+
+
+def _inputs(**overrides) -> VerificationInputs:
+ base = dict(
+ instance_id="langchain-ai_langgraph-supervisor-py_pr184",
+ workdir="/workspace/langgraph-supervisor-py",
+ base_commit="1bf5acae5966bec5b174a903be038c1d271dccd7", # pragma: allowlist secret
+ patch="diff --git a/a.py b/a.py\n",
+ test_patch="diff --git a/tests/test_a.py b/tests/test_a.py\n",
+ document="# langgraph-supervisor-py\n\nA spec the agent must implement.\n",
+ pypi_name="langgraph-supervisor",
+ passed_ptp=["tests/test_a.py::test_one"],
+ failed_ptp=[],
+ )
+ base.update(overrides)
+ return VerificationInputs(**base)
+
+
+class TestPatchSectionPath:
+ def test_extracts_the_b_path_from_a_simple_diff(self) -> None:
+ section = "diff --git a/src/foo.py b/src/foo.py\n--- a/src/foo.py\n+++ b/src/foo.py\n@@ -1 +1 @@\n-x\n+y\n"
+ assert patch_section_path(section) == "src/foo.py"
+
+ def test_a_new_file_uses_the_b_path(self) -> None:
+ section = "diff --git a/src/new.py b/src/new.py\n--- /dev/null\n+++ b/src/new.py\n@@ -0,0 +1 @@\n+x\n"
+ assert patch_section_path(section) == "src/new.py"
+
+
+class TestDropPatchSections:
+ def test_drops_sections_matching_given_paths(self) -> None:
+ patch = (
+ "diff --git a/keep.py b/keep.py\n--- a/keep.py\n+++ b/keep.py\n@@ -1 +1 @@\n-x\n+y\n"
+ "diff --git a/drop.py b/drop.py\n--- /dev/null\n+++ b/drop.py\n@@ -0,0 +1 @@\n+z\n"
+ )
+ result = drop_patch_sections(patch, {"drop.py"})
+ assert "keep.py" in result
+ assert "drop.py" not in result
+
+
+class TestSeedPrepScript:
+ def test_wipes_before_reinjecting_the_document(self) -> None:
+ script = seed_prep_script("/workspace/pkg")
+ clean_idx = script.index(CLEAN_SH_PATH)
+ readme_idx = script.index("README.md")
+ assert clean_idx < readme_idx
+
+ def test_targets_the_given_workdir(self) -> None:
+ script = seed_prep_script("/workspace/pkg")
+ assert "/workspace/pkg" in script
+
+
+class TestBuildEvalScript:
+ def test_golden_path_skips_the_wipe_and_patch_apply(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=True)
+ assert CLEAN_SH_PATH not in script
+ assert "nemo_gym_patch.diff" not in script
+
+ def test_non_golden_path_wipes_and_reinjects_the_document(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=False)
+ assert CLEAN_SH_PATH in script
+ assert "README.md" in script
+
+ def test_non_golden_path_applies_the_patch_when_present(self) -> None:
+ script = build_eval_script(_inputs(patch="diff --git a/a.py b/a.py\n"), is_golden=False)
+ assert "nemo_gym_patch.diff" in script
+
+ def test_non_golden_path_omits_patch_apply_when_patch_is_empty(self) -> None:
+ script = build_eval_script(_inputs(patch=""), is_golden=False)
+ assert "nemo_gym_patch.diff" not in script
+
+ def test_golden_path_never_applies_a_patch_even_if_one_is_present(self) -> None:
+ # is_golden gates on the flag, not patch emptiness -- an agent that crashed/timed out
+ # produces an empty patch too, and keying on emptiness would conflate the two.
+ script = build_eval_script(_inputs(patch="diff --git a/a.py b/a.py\n"), is_golden=True)
+ assert "nemo_gym_patch.diff" not in script
+
+ def test_checks_out_the_base_commit(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=True)
+ assert "1bf5acae5966bec5b174a903be038c1d271dccd7" in script # pragma: allowlist secret
+
+ def test_deletes_pre_existing_test_files(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=True)
+ assert "-iname tests" in script
+ assert "conftest.py" in script
+
+ def test_applies_test_patch(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=True)
+ assert TEST_PATCH_PATH in script
+
+ def test_reinstalls_the_package_by_pypi_name(self) -> None:
+ script = build_eval_script(_inputs(pypi_name="langgraph-supervisor"), is_golden=True)
+ assert "langgraph-supervisor" in script
+ assert "pip install -e ." in script
+
+ def test_runs_the_eval_script_and_brackets_the_report(self) -> None:
+ script = build_eval_script(_inputs(), is_golden=True)
+ assert EVAL_PY_PATH in script
+ assert REPORT_BEGIN in script
+ assert REPORT_END in script
+
+ def test_slice_extracts_between_markers(self) -> None:
+ log = f'noise before\n{REPORT_BEGIN}\n{{"reward": "1"}}\n{REPORT_END}\nnoise after'
+ sliced = _slice(log, REPORT_BEGIN, REPORT_END)
+ assert "noise before" not in sliced
+ assert "noise after" not in sliced
+ assert '"reward": "1"' in sliced
+
+
+class TestVerificationFiles:
+ def test_always_ships_the_clean_and_eval_scripts_and_meta(self) -> None:
+ files = verification_files(_inputs(), is_golden=True)
+ assert CLEAN_SH_PATH in files
+ assert EVAL_PY_PATH in files
+ assert META_PATH in files
+ assert DOCUMENT_PATH in files
+ assert TEST_PATCH_PATH in files
+
+ def test_ships_the_binary_archive_only_when_present(self) -> None:
+ files = verification_files(_inputs(test_binary_archive_b64=""), is_golden=True)
+ assert files[TEST_BINARY_PATH] == ""
+
+ def test_golden_never_ships_a_patch_file(self) -> None:
+ files = verification_files(_inputs(patch="diff --git a/a.py b/a.py\n"), is_golden=True)
+ assert "/tmp/nemo_gym_patch.diff" not in files
+
+ def test_non_golden_ships_the_patch_file_when_present(self) -> None:
+ files = verification_files(_inputs(patch="diff --git a/a.py b/a.py\n"), is_golden=False)
+ assert "/tmp/nemo_gym_patch.diff" in files
+
+ def test_meta_carries_passed_ptp(self) -> None:
+ import json
+
+ files = verification_files(_inputs(passed_ptp=["a::b", "a::c"]), is_golden=True)
+ meta = json.loads(files[META_PATH])
+ assert meta["passed_ptp"] == ["a::b", "a::c"]
+
+
+class _FakeSandbox:
+ def __init__(self, stdout: str, return_code: int = 0) -> None:
+ self._result = SimpleNamespace(stdout=stdout, stderr="", return_code=return_code)
+ self.commands: list[str] = []
+
+ async def exec(self, command: str, timeout_s=None):
+ self.commands.append(command)
+ return self._result
+
+
+class TestRunVerification:
+ @pytest.mark.asyncio
+ async def test_resolved_iff_reward_is_the_string_one(self) -> None:
+ report = '{"_test_completed": true, "reward": "1", "passed": 1, "total_expected": 1}'
+ log = f"{REPORT_BEGIN}\n{report}\n{REPORT_END}\n"
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(), is_golden=True)
+ assert result.completed and result.resolved
+
+ @pytest.mark.asyncio
+ async def test_reward_zero_is_not_resolved(self) -> None:
+ report = '{"_test_completed": true, "reward": "0", "passed": 0, "total_expected": 1}'
+ log = f"{REPORT_BEGIN}\n{report}\n{REPORT_END}\n"
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(), is_golden=True)
+ assert result.completed and not result.resolved
+
+ @pytest.mark.asyncio
+ async def test_missing_workdir_is_incomplete_not_a_zero(self) -> None:
+ result = await run_verification(sandbox=_FakeSandbox("", return_code=97), inputs=_inputs(), is_golden=True)
+ assert result.completed is False
+ assert result.resolved is False
+ assert "not present in the image" in result.error
+
+ @pytest.mark.asyncio
+ async def test_no_report_produced_is_incomplete(self) -> None:
+ result = await run_verification(sandbox=_FakeSandbox("nothing bracketed"), inputs=_inputs(), is_golden=True)
+ assert result.completed is False
+ assert result.resolved is False
+
+ @pytest.mark.asyncio
+ async def test_malformed_report_is_incomplete_not_a_crash(self) -> None:
+ log = f"{REPORT_BEGIN}\nnot valid json\n{REPORT_END}\n"
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(), is_golden=True)
+ assert result.completed is False
+ assert result.resolved is False
+ assert result.error is not None
+
+ @pytest.mark.asyncio
+ async def test_carries_the_per_file_report_through_as_test_results(self) -> None:
+ report = '{"_test_completed": true, "reward": "1", "per_file": {"tests/test_a.py": {"passed": 1}}}'
+ log = f"{REPORT_BEGIN}\n{report}\n{REPORT_END}\n"
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(), is_golden=True)
+ assert result.test_results["per_file"]["tests/test_a.py"]["passed"] == 1
+
+
+class TestVerifyResponseShape:
+ """BaseVerifyResponse extends BaseVerifyRequest, so the request fields are REQUIRED on the
+ way out. Building the response from scratch drops them and the resulting ValidationError
+ surfaces to the caller as a bare JSON string -- which is how a fully successful verification
+ can still fail the whole sweep. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _body() -> dict:
+ return {
+ "instance_id": "langchain-ai_langgraph-supervisor-py_pr184",
+ "workdir": "/workspace/langgraph-supervisor-py",
+ "image_ref": "docker.io/aweaiteam/denovoswe:langchain-ai_langgraph-supervisor-py_pr184",
+ "base_commit": "1bf5acae5966bec5b174a903be038c1d271dccd7", # pragma: allowlist secret
+ "language": "python",
+ "passed_ptp": [],
+ "failed_ptp": [],
+ "responses_create_params": {"input": []},
+ "response": {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+ },
+ }
+
+ def test_spreading_the_request_body_satisfies_the_response_model(self) -> None:
+ from resources_servers.denovo_swe.app import DeNovoSWEVerifyResponse
+
+ response = DeNovoSWEVerifyResponse.model_validate(
+ self._body()
+ | {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "test_results": {"reward": "1"},
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 0.1,
+ "patch_verification_time_taken": 0.2,
+ }
+ )
+ assert response.instance_id == "langchain-ai_langgraph-supervisor-py_pr184"
+
+ def test_building_from_scratch_without_the_request_fields_fails(self) -> None:
+ from resources_servers.denovo_swe.app import DeNovoSWEVerifyResponse
+
+ with pytest.raises(Exception):
+ DeNovoSWEVerifyResponse.model_validate(
+ {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "instance_id": "x",
+ "language": "python",
+ "test_results": None,
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 0.1,
+ "patch_verification_time_taken": 0.2,
+ }
+ )
+
+
+class TestAntiCheating:
+ """seed_session must scrub the sandbox's git history before an agent gets control of it. See
+ resources_servers/swebench/anti_cheat.py."""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_seed_session_calls_the_shared_anti_cheat_helper(self) -> None:
+ source = self._source()
+ assert "from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup" in source
+ assert "apply_anti_cheat_setup(" in source
+
+ def test_config_enables_it_by_default(self) -> None:
+ from resources_servers.denovo_swe.app import DeNovoSWEResourcesServerConfig
+
+ assert DeNovoSWEResourcesServerConfig.model_fields["apply_anti_cheating"].default is True
+
+ def test_seed_session_ensures_a_git_repo_before_scrubbing(self) -> None:
+ source = self._source()
+ assert "_ensure_git_repo(" in source
+ ensure_idx = source.index("await self._ensure_git_repo(")
+ anti_cheat_idx = source.index("apply_anti_cheat_setup(sandbox")
+ assert ensure_idx < anti_cheat_idx
+
+ def test_agent_facing_config_turns_it_on(self) -> None:
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "denovo_swe.yaml").read_text())
+ assert config["denovo_swe_resources_server"]["resources_servers"]["denovo_swe"]["apply_anti_cheating"] is True
+
+
+class TestMultiWorkerEntrypoint:
+ """num_workers > 1 makes uvicorn re-import this entrypoint by path in each forked child.
+ Without a module-level `app`, every child exits and uvicorn stops the parent, so the server
+ never binds -- the symptom is a flood of connection errors from clients talking to a dead
+ port, not an ImportError. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_exposes_a_module_level_app_for_forked_workers(self) -> None:
+ source = self._source()
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in source
+ assert "app = DeNovoSWEResourcesServer.run_webserver()" in source
+
+ def test_the_config_that_needs_it_still_sets_num_workers(self) -> None:
+ """Pins the pair: if num_workers is configured, the entrypoint branch must exist."""
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "denovo_swe.yaml").read_text())
+ for name, block in config.items():
+ workers = block["resources_servers"]["denovo_swe"].get("num_workers")
+ if workers and workers > 1:
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in self._source(), (
+ f"{name} sets num_workers={workers} but the entrypoint has no module-level app"
+ )
diff --git a/resources_servers/denovo_swe/verification.py b/resources_servers/denovo_swe/verification.py
new file mode 100644
index 00000000000..364450f08c2
--- /dev/null
+++ b/resources_servers/denovo_swe/verification.py
@@ -0,0 +1,385 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Run one AweAI-Team/DeNovoSWE task's tests in a sandbox and grade the result.
+
+DeNovoSWE is a "document-to-repository" benchmark, not a bug-fix-from-a-failing-test benchmark
+like the other SWE resources servers: each image ships the ORIGINAL package source at
+``parent_commit`` plus a ``document`` (a README/spec). The agent's job is to regenerate the
+package from scratch given only the document -- so unlike every other SWE resources server here,
+there is no golden ``patch`` to apply for golden-patch validation: the image's pre-existing source
+IS the golden answer, and ``patch`` is legitimately empty on that path.
+
+Grading itself is delegated entirely to ``_denovoswe_eval.py``, a verbatim local copy of the
+already-battle-tested in-container evaluator from
+``responses_api_agents/swe_agents/_denovoswe_eval.py`` (used by the SIF/Apptainer-based swe_agents
+harness, where this dataset has already been golden-patch validated: 3034/3668, 82.69%). It
+collects each ``passed_ptp`` test file with a ``pytest --collect-only`` pre-flight (mitigating
+parametrize-label / hypothesis-seed drift that would otherwise abort an entire file's batch on one
+stale id), runs only the resolvable ids, and writes its own verdict (``reward``: "1" iff every
+``passed_ptp`` test passes) -- so this file's ``grade()`` just reads that verdict back rather than
+reimplementing pytest-output parsing, mirroring how swe_rebench reuses its own upstream
+``log_parsers.py`` instead of a hand-rolled parser.
+
+``_denovoswe_clean.sh`` (also a verbatim local copy) wipes the image's source, preserving the
+installed environment and config files, so an agent regenerating the package can't just read the
+pre-existing implementation it's supposed to reproduce. It is run twice per task: once in
+``seed_session`` (before the agent starts), and again inside the verification eval script (since
+verification always gets a FRESH sandbox, not the agent's own session) -- both immediately followed
+by re-injecting ``document`` as ``README.md`` and folding it into the git history via
+``commit --amend``, so the eventual ``git diff`` the agent produces doesn't include a spurious
+README addition. Golden-patch validation skips both the wipe and the amend: the image's
+pre-existing source is exactly what's being graded.
+"""
+
+from __future__ import annotations
+
+import re
+import shlex
+from dataclasses import dataclass, field
+from pathlib import Path
+from typing import Any, Iterable, Sequence
+
+
+REPORT_BEGIN = "___NEMO_GYM_DENOVO_SWE_REPORT_BEGIN___"
+REPORT_END = "___NEMO_GYM_DENOVO_SWE_REPORT_END___"
+
+CLEAN_SH_PATH = "/root/_denovoswe_clean.sh"
+EVAL_PY_PATH = "/root/_denovoswe_eval.py"
+DOCUMENT_PATH = "/root/denovoswe_document.md"
+META_PATH = "/root/denovoswe_meta.json"
+TEST_PATCH_PATH = "/root/denovoswe_test_patch.diff"
+TEST_BINARY_PATH = "/root/denovoswe_test_binary.b64"
+REPORT_JSON_PATH = "/trajectories_mount/eval_results/report.json"
+
+
+@dataclass
+class VerificationInputs:
+ instance_id: str
+ workdir: str
+ base_commit: str
+ patch: str
+ test_patch: str
+ document: str
+ pypi_name: str = ""
+ passed_ptp: Sequence[str] = field(default_factory=tuple)
+ failed_ptp: Sequence[str] = field(default_factory=tuple)
+ test_binary_archive_b64: str = ""
+ expected_coverage_percent: float = 0.0
+
+
+@dataclass
+class VerificationResult:
+ completed: bool
+ resolved: bool
+ patch_applied: bool
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None = None
+
+
+def patch_section_path(section: str) -> str | None:
+ """Return the repository-relative path one ``diff --git`` section targets."""
+ a_path: str | None = None
+ b_path: str | None = None
+ for line in section.splitlines():
+ if line.startswith("@@"):
+ break
+ if line.startswith("--- ") and a_path is None:
+ value = line[4:].strip()
+ a_path = None if value == "/dev/null" else value.removeprefix("a/")
+ elif line.startswith("+++ ") and b_path is None:
+ value = line[4:].strip()
+ b_path = None if value == "/dev/null" else value.removeprefix("b/")
+
+ if b_path or a_path:
+ return b_path or a_path
+
+ header = re.match(r"^diff --git a/(.+?) b/(.+)$", section.splitlines()[0] if section else "")
+ return header.group(2) if header else None
+
+
+def drop_patch_sections(patch: str, paths: Iterable[str]) -> str:
+ """Drop the diff sections targeting ``paths``.
+
+ ``git add -N . && git diff`` picks up every untracked file, including ones that were already
+ untracked before the agent touched anything. Excluding those paths keeps the extracted patch
+ to what the agent actually changed.
+ """
+ dropped = set(paths)
+ if not patch or not dropped:
+ return patch
+
+ kept: list[str] = []
+ for section in re.split(r"(?=^diff --git )", patch, flags=re.MULTILINE):
+ if not section.strip():
+ continue
+ path = patch_section_path(section)
+ if path is not None and path in dropped:
+ continue
+ kept.append(section)
+
+ return "".join(kept)
+
+
+def seed_prep_script(workdir: str) -> str:
+ """Wipe the image's source and re-inject ``document`` as ``README.md``, run BEFORE an agent
+ starts working (in ``seed_session``) so it cannot just read the implementation it is supposed
+ to regenerate. Mirrors AweAgent's ``DeNovoSWETask.prepare_session`` and the identical step the
+ SIF-based swe_agents harness runs for this same dataset (see module docstring).
+ """
+ wp = shlex.quote(workdir)
+ return f"""#!/bin/bash
+set +e
+bash {CLEAN_SH_PATH} {wp} > /tmp/denovoswe_clean.log 2>&1 || echo "WARN: clean.sh exited non-zero (continuing)" >> /tmp/denovoswe_clean.log
+if [ -s {DOCUMENT_PATH} ]; then
+ cp {DOCUMENT_PATH} {wp}/README.md
+ ( cd {wp} && git add README.md 2>/dev/null && git commit --amend --no-edit -q 2>/dev/null ) || true
+fi
+"""
+
+
+def build_eval_script(inputs: VerificationInputs, is_golden: bool) -> str:
+ """The verification-sandbox script. Faithfully replicates
+ ``DeNovoSWEDatasetProcessor.get_run_command`` (the already-validated SIF-harness eval script,
+ see module docstring) step for step, adapted to nemo_gym.sandbox's file-upload model instead
+ of Apptainer bind mounts.
+
+ Verification always gets a FRESH sandbox (not the agent's own seed_session one), so unlike
+ that live session -- which was already wiped + README-injected once -- this script repeats the
+ wipe (non-golden only) so the agent's patch, diffed against that same wiped+amended baseline,
+ applies cleanly onto a matching tree here too.
+ """
+ wp = shlex.quote(inputs.workdir)
+ apply_patch = (
+ "git apply --whitespace=nowarn /tmp/nemo_gym_patch.diff "
+ "|| git apply -3 --whitespace=nowarn /tmp/nemo_gym_patch.diff "
+ "|| git apply --reject --recount --ignore-space-change --whitespace=nowarn /tmp/nemo_gym_patch.diff "
+ "|| true"
+ )
+ wipe_and_reinject = f"""
+bash {CLEAN_SH_PATH} {wp} > /trajectories_mount/eval_results/clean.log 2>&1 \\
+ || echo "WARN: clean.sh exited non-zero (continuing)" >> /trajectories_mount/eval_results/clean.log
+if [ -s {DOCUMENT_PATH} ]; then
+ cp {DOCUMENT_PATH} {wp}/README.md
+ ( cd {wp} && git add README.md 2>/dev/null && git commit --amend --no-edit -q 2>/dev/null ) || true
+fi
+"""
+ return f"""#!/bin/bash
+set -o pipefail
+mkdir -p /trajectories_mount/eval_results
+cd {wp} || {{ echo '{{"reward": "0", "error": "workdir_missing"}}' > {REPORT_JSON_PATH}; exit 97; }}
+git config --global --add safe.directory {wp} 2>/dev/null || true
+
+# 1. Hard-reset to parent_commit so the image baseline is deterministic.
+BASE_COMMIT={shlex.quote(inputs.base_commit)}
+if [ -n "$BASE_COMMIT" ]; then
+ git checkout -f "$BASE_COMMIT" 2>/dev/null || git reset --hard HEAD 2>/dev/null || true
+fi
+
+# 1b. AGENT-RUN ONLY: wipe the source again (fresh sandbox, not the agent's own seeded one) and
+# re-inject the spec, matching the baseline the agent's patch was diffed against. Skipped on
+# the golden path, where the image's pre-existing source is what's graded.
+{"" if is_golden else wipe_and_reinject}
+
+# 2. Apply the candidate patch. Golden path: intentionally empty, nothing to apply.
+{"" if is_golden else (apply_patch if inputs.patch.strip() else "")}
+
+# 3. Delete EVERY pre-existing test file so test_patch can lay the canonical suite from scratch.
+find {wp} -type d \\( -iname tests -o -iname testsuite -o -iname testsuites \\
+ -o -iname testing -o -iname test_suite -o -iname test \\) -exec rm -rf {{}} + 2>/dev/null || true
+find {wp} -type f \\( -iname 'test_*.py' -o -iname '*_test.py' \\
+ -o -iname '*_tests.py' -o -iname 'conftest.py' \\) -delete 2>/dev/null || true
+find {wp} -type f -name '.coveragerc' -delete 2>/dev/null || true
+
+# 4. Pre-create parent dirs for files test_patch will add, and pre-clean add-only target paths so
+# the patch's ``--- /dev/null`` hunks don't reject.
+cd {wp} && python3 - <<'PY'
+import os, re, sys
+try:
+ p = open({TEST_PATCH_PATH!r}).read()
+except OSError:
+ sys.exit(0)
+add_only = set()
+all_dirs = set()
+for block in re.split(r'^diff --git ', p, flags=re.MULTILINE)[1:]:
+ m = re.search(r'^\\+\\+\\+ b/(.+)$', block, re.MULTILINE)
+ if not m:
+ continue
+ path = m.group(1).strip()
+ if not path or path == '/dev/null':
+ continue
+ d = os.path.dirname(path)
+ if d:
+ all_dirs.add(d)
+ if '--- /dev/null' in block:
+ add_only.add(path)
+for d in all_dirs:
+ os.makedirs(d, exist_ok=True)
+for path in add_only:
+ try:
+ os.unlink(path)
+ except (FileNotFoundError, IsADirectoryError):
+ pass
+PY
+
+# 5. Apply test_patch.
+git apply --whitespace=nowarn {TEST_PATCH_PATH} \\
+ || git apply -3 --whitespace=nowarn {TEST_PATCH_PATH} \\
+ || git apply --reject --recount --ignore-space-change --whitespace=nowarn {TEST_PATCH_PATH} \\
+ || true
+
+# 6. Extract binary fixtures (base64-encoded tar.gz), if any.
+if [ -s {TEST_BINARY_PATH} ] && [ "$(wc -c <{TEST_BINARY_PATH})" -gt 4 ]; then
+ base64 -d {TEST_BINARY_PATH} 2>/dev/null | tar -xzf - -C {wp} 2>> /trajectories_mount/eval_results/binary_extract.log || true
+fi
+
+# 7. Uninstall the package (every interpreter we can find) then re-install in editable mode so the
+# on-disk source becomes the one that gets imported.
+PYPI_NAME={shlex.quote(inputs.pypi_name)}
+if [ -n "$PYPI_NAME" ]; then
+ for pyx in $(command -v python) $(command -v python3) /opt/conda/envs/*/bin/python /opt/conda/bin/python /usr/bin/python /usr/bin/python3 /usr/local/bin/python /usr/local/bin/python3; do
+ [ -x "$pyx" ] || continue
+ "$pyx" -m pip uninstall -y "$PYPI_NAME" >/dev/null 2>&1 || true
+ done
+fi
+pip install -e . > /trajectories_mount/eval_results/pip_install.log 2>&1 || true
+
+# 8. Per-file pytest evaluator -> writes report.json + reward.txt.
+python3 {EVAL_PY_PATH} > /trajectories_mount/eval_results/eval_stdout.log 2>&1 || true
+
+# 9. Fallback report if the eval script never wrote one.
+if [ ! -s {REPORT_JSON_PATH} ]; then
+ echo '{{"_test_completed": true, "reward": "0", "error": "eval_script_no_report"}}' > {REPORT_JSON_PATH}
+fi
+
+echo "{REPORT_BEGIN}"
+cat {REPORT_JSON_PATH} 2>/dev/null
+echo "{REPORT_END}"
+"""
+
+
+def _slice(log: str, begin: str, end: str) -> str:
+ start = log.find(begin)
+ if start == -1:
+ return ""
+ start += len(begin)
+ stop = log.find(end, start)
+ return log[start:stop] if stop != -1 else log[start:]
+
+
+def _local_file(name: str) -> str:
+ return (Path(__file__).resolve().parent / name).read_text()
+
+
+def verification_files(inputs: VerificationInputs, is_golden: bool) -> dict[str, str]:
+ import json
+
+ files = {
+ "/tmp/nemo_gym_eval.sh": build_eval_script(inputs, is_golden),
+ CLEAN_SH_PATH: _local_file("_denovoswe_clean.sh"),
+ EVAL_PY_PATH: _local_file("_denovoswe_eval.py"),
+ DOCUMENT_PATH: inputs.document,
+ TEST_PATCH_PATH: inputs.test_patch,
+ TEST_BINARY_PATH: inputs.test_binary_archive_b64,
+ META_PATH: json.dumps(
+ {
+ "instance_id": inputs.instance_id,
+ "workdir": inputs.workdir,
+ "passed_ptp": list(inputs.passed_ptp),
+ "failed_ptp": list(inputs.failed_ptp),
+ "pypi_name": inputs.pypi_name,
+ "expected_coverage_percent": inputs.expected_coverage_percent,
+ }
+ ),
+ }
+ if not is_golden and inputs.patch.strip():
+ files["/tmp/nemo_gym_patch.diff"] = inputs.patch
+ return files
+
+
+async def run_verification(
+ sandbox: Any,
+ inputs: VerificationInputs,
+ is_golden: bool,
+ timeout_s: float | None = None,
+ log_dir: Path | None = None,
+) -> VerificationResult:
+ import asyncio
+ import json
+
+ result = await sandbox.exec("bash /tmp/nemo_gym_eval.sh", timeout_s=timeout_s)
+ output = (result.stdout or "") + (("\n" + result.stderr) if result.stderr else "")
+
+ if log_dir is not None:
+
+ def _persist() -> None:
+ try:
+ log_dir.mkdir(parents=True, exist_ok=True)
+ (log_dir / "test_output.log").write_text(output, errors="replace")
+ except OSError:
+ pass
+
+ await asyncio.to_thread(_persist)
+
+ if result.return_code == 97:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output=output,
+ error=f"workdir {inputs.workdir} not present in the image",
+ )
+
+ report_text = _slice(output, REPORT_BEGIN, REPORT_END).strip()
+ if not report_text:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=True,
+ test_results=None,
+ test_output=output,
+ error="no report.json produced (eval script crashed before writing one)",
+ )
+
+ try:
+ report = await asyncio.to_thread(json.loads, report_text)
+ except json.JSONDecodeError as exc:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=True,
+ test_results=None,
+ test_output=output,
+ error=f"malformed report.json: {exc}",
+ )
+
+ # _denovoswe_eval.py's own verdict: reward "1" iff every passed_ptp test passes. We trust it
+ # rather than re-deriving resolved from pass/fail counts -- it already encodes the
+ # collect-then-intersect-then-run mitigation for parametrize/hypothesis-seed drift (see module
+ # docstring), which a from-scratch re-derivation here would not have.
+ resolved = report.get("reward") == "1"
+ completed = bool(report.get("_test_completed", True)) and report.get("error") not in (
+ "workdir_missing",
+ "eval_script_no_report",
+ )
+ return VerificationResult(
+ completed=completed,
+ resolved=resolved,
+ patch_applied=True,
+ test_results=report,
+ test_output=output,
+ error=report.get("error"),
+ )
diff --git a/resources_servers/scale_swe/.gitignore b/resources_servers/scale_swe/.gitignore
new file mode 100644
index 00000000000..c39f6d3d27c
--- /dev/null
+++ b/resources_servers/scale_swe/.gitignore
@@ -0,0 +1,2 @@
+# This is where verification logs are stored locally
+logs
diff --git a/resources_servers/scale_swe/README.md b/resources_servers/scale_swe/README.md
new file mode 100644
index 00000000000..94ef416b762
--- /dev/null
+++ b/resources_servers/scale_swe/README.md
@@ -0,0 +1,94 @@
+# Scale-SWE resources server
+
+Verification for [AweAI-Team/Scale-SWE](https://huggingface.co/datasets/AweAI-Team/Scale-SWE):
+20,181 software-engineering tasks, entirely Python.
+
+Unlike the SWE-rebench server, there is exactly one test runner here (pytest), so there is no
+per-row log-parser dispatch. Each row ships its own prebuilt image (`aweaiteam/scaleswe:...`),
+an explicit `workdir`, and a `pre_commands` string that performs the checkout of
+`parent_commit` and scrubs the repo's git history so the fix commit is unreachable.
+
+Sandboxes come from `nemo_gym.sandbox`, so the same server runs on OpenSandbox or any other
+configured provider.
+
+## The failing tests
+
+A row supplies the tests that must go from failing to passing one of two ways, and 61% of rows
+carry both:
+
+- `f2p_script` (92% of rows): a literal pytest file, uploaded to `/tmp` and copied into the
+ checkout as `test_fail_to_pass.py` (the name the dataset's own `FAIL_TO_PASS` ids expect). It
+ cannot be written into the repo before `pre_commands` runs, because `pre_commands` includes
+ `git clean -fd`, which would delete it.
+- `f2p_patch` (69% of rows): a diff that adds the tests directly into the existing test tree.
+
+pytest is pointed at the **unique test files** named by `FAIL_TO_PASS ∪ PASS_TO_PASS`, not at
+every individual node id — a row can carry hundreds of ids across up to ~69 files, and grading
+by id afterwards from the collected output gives the same verdict without risking a pathological
+command line.
+
+## Grading
+
+An instance resolves only when **every** `FAIL_TO_PASS` and `PASS_TO_PASS` node id is observed
+as `PASSED` in the pytest output. A node id absent from the output counts as not passing —
+treating absent as success is the standard way a broken test command (or a collection error)
+scores as a resolved instance.
+
+`FAIL_TO_PASS` / `PASS_TO_PASS` arrive as JSON-encoded strings in this dataset, not lists; see
+`as_id_list`.
+
+The graded region of the log is delimited by markers, so setup-time noise (pip installs,
+`pre_commands` output) never reaches the pytest-output parser.
+
+## Prepare the data
+
+`prepare_scale_swe.py` only writes rows already on `data/supported_instance_ids.txt` -- the
+17,696 instances (of 20,181) whose golden patch resolved in all three passes of a full-set 3x
+sweep (see Golden-patch validation below). The other 2,485 are excluded because none can be
+scored either way: 1,671 never resolve, 709 never produced a verdict (image pull / setup
+failures, not row failures), and 105 resolve inconsistently across passes. It streams the Hub
+dataset rather than loading the full split, and shuffles the kept rows (fixed seed, reproducible)
+before writing, since the Hub's own row order is grouped by repo.
+
+```bash
+SCALE_SWE_LIMIT=200 python resources_servers/scale_swe/prepare_scale_swe.py
+```
+
+## Golden-patch validation
+
+Grades each task with the dataset's own patch, which measures the dataset rather than a model.
+A row whose golden patch does not resolve cannot be used for evaluation or training.
+
+```bash
+gym env start \
+ --config resources_servers/scale_swe/configs/scale_swe.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+python resources_servers/scale_swe/apply_golden_patch.py \
+ +training_jsonl=resources_servers/scale_swe/data/scale_swe_training.jsonl \
+ +limit=40 +concurrency=8
+```
+
+It prints a resolved rate overall and per language (this set is 100% Python, so that breakdown
+is a single row), and writes one row per task. `diagnose_failures.py` separates environment
+failures (OOM, disk, network, timeout, no-verdict, zero-tests-collected) from genuine row
+failures — see `resources_servers/swe_rebench/diagnose_failures.py` for the shape of evidence
+this looks for and why each cause is only reported on direct signal in the captured output, not
+inferred from the fact that a task failed.
+
+`aggregate_golden_patch.py` joins repeated golden-patch passes (e.g. a 3x sweep) into
+supported / flaky / broken / inconclusive buckets, keeping an infra fault (no verdict) separate
+from a genuinely nondeterministic test so neither silently corrupts the other's label.
+
+## Running an agent
+
+`configs/scale_swe_opencode.yaml` wires the opencode sandboxed agent to
+`scale_swe_resources_server`, pointed at `data/scale_swe_training.jsonl`. It lives in a separate
+file rather than folded into `scale_swe.yaml` so golden-patch validation (which never touches an
+agent) doesn't need to pull in the agent's much larger sandbox/permission config.
+
+```bash
+gym env start \
+ --config resources_servers/scale_swe/configs/scale_swe_opencode.yaml \
+ --config responses_api_models/vllm_model/configs/vllm_model.yaml
+```
diff --git a/resources_servers/scale_swe/__init__.py b/resources_servers/scale_swe/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/scale_swe/aggregate_golden_patch.py b/resources_servers/scale_swe/aggregate_golden_patch.py
new file mode 100644
index 00000000000..444e44266d3
--- /dev/null
+++ b/resources_servers/scale_swe/aggregate_golden_patch.py
@@ -0,0 +1,136 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Join repeated golden-patch passes into the set of rows that are actually usable.
+
+A row is SUPPORTED when its golden patch resolved in every pass. That is the point of
+repeating: a row that resolves only sometimes has a nondeterministic test, and its reward is
+noise whether it is used for evaluation or for training.
+
+The one distinction that matters, and the reason this is not a single boolean: a pass can fail
+to produce a verdict at all (image pull, timeout, provider fault). That is evidence about the
+infrastructure, not about the row. Collapsing the two would discard good tasks for an unrelated
+hiccup, so incomplete passes are counted separately and those rows are reported as needing more
+evidence rather than as broken.
+
+ python resources_servers/scale_swe/aggregate_golden_patch.py \
+ +runs=results/scale_swe_golden_patch_full \
+ +output_jsonl=results/scale_swe_supported.jsonl
+"""
+
+import json
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+from nemo_gym.global_config import get_global_config_dict
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def classify(observations: list[dict[str, Any]], expected_passes: int) -> str:
+ """Bucket one row from its per-pass observations."""
+ completed = [o for o in observations if o.get("evaluation_completed")]
+ resolved = sum(1 for o in completed if o.get("resolved"))
+
+ if len(completed) < expected_passes:
+ # Not enough verdicts to judge the row. Distinguished from a genuine failure so an
+ # image-pull fault does not quietly delete a usable task.
+ return "inconclusive"
+ if resolved == len(completed):
+ return "supported"
+ if resolved == 0:
+ return "broken"
+ return "flaky"
+
+
+def main() -> None:
+ config = get_global_config_dict()
+ runs_dir = Path(config["runs"])
+ output_fpath = Path(config.get("output_jsonl") or "results/scale_swe_supported.jsonl")
+
+ pass_files = sorted(p for p in runs_dir.glob("*.jsonl") if p.is_file())
+ if not pass_files:
+ raise SystemExit(f"no pass jsonl files under {runs_dir}")
+
+ by_instance: dict[str, list[dict[str, Any]]] = defaultdict(list)
+ language: dict[str, str] = {}
+ for pass_file in pass_files:
+ for row in _rows(pass_file):
+ instance_id = row.get("instance_id")
+ if not instance_id or instance_id == "?":
+ continue
+ by_instance[instance_id].append(row)
+ if row.get("language"):
+ language[instance_id] = row["language"]
+
+ expected = len(pass_files)
+ buckets: Counter[str] = Counter()
+ per_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ with output_fpath.open("w", encoding="utf-8") as out:
+ for instance_id, observations in sorted(by_instance.items()):
+ verdict = classify(observations, expected)
+ buckets[verdict] += 1
+ per_language[language.get(instance_id, "unknown")][verdict] += 1
+ out.write(
+ json.dumps(
+ {
+ "instance_id": instance_id,
+ "language": language.get(instance_id, ""),
+ "verdict": verdict,
+ "passes_observed": len(observations),
+ "passes_completed": sum(1 for o in observations if o.get("evaluation_completed")),
+ "passes_resolved": sum(1 for o in observations if o.get("resolved")),
+ "expected_passes": expected,
+ }
+ )
+ + "\n"
+ )
+
+ total = sum(buckets.values())
+ print(f"golden-patch aggregation over {total} row(s) from {expected} pass(es)\n")
+ for verdict, description in (
+ ("supported", "resolved in every pass - usable"),
+ ("flaky", "resolved in some passes only - nondeterministic test"),
+ ("broken", "never resolved - golden patch does not work"),
+ ("inconclusive", "too few verdicts - re-run before judging"),
+ ):
+ count = buckets.get(verdict, 0)
+ print(f" {verdict:<13} {count:>6} ({100 * count / max(total, 1):5.1f}%) {description}")
+
+ print("\n by language (supported / total):")
+ for lang, counts in sorted(per_language.items(), key=lambda kv: -sum(kv[1].values())):
+ rows_total = sum(counts.values())
+ supported = counts.get("supported", 0)
+ print(
+ f" {lang:<10} {supported:>5} / {rows_total:<6} ({100 * supported / rows_total:5.1f}%)"
+ f" flaky={counts.get('flaky', 0)} broken={counts.get('broken', 0)}"
+ f" inconclusive={counts.get('inconclusive', 0)}"
+ )
+ print(f"\nper-row verdicts: {output_fpath}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/resources_servers/scale_swe/app.py b/resources_servers/scale_swe/app.py
new file mode 100644
index 00000000000..aa47892cb19
--- /dev/null
+++ b/resources_servers/scale_swe/app.py
@@ -0,0 +1,368 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Resources server for AweAI-Team/Scale-SWE.
+
+Scale-SWE is 20,181 rows, entirely Python. Each row ships its own prebuilt image
+(``image_url``), an explicit ``workdir``, and a ``pre_commands`` string that checks out
+``parent_commit`` and scrubs git history so the fix commit is unreachable. Unlike SWE-rebench,
+there is a single test runner (pytest) for the whole set, so no parser dispatch is needed.
+
+The failing tests arrive as a literal test file (``f2p_script``, 92% of rows), a patch that adds
+them (``f2p_patch``, 69%), or both. Verification: run ``pre_commands``, apply the candidate
+patch and whichever of f2p_patch/f2p_script the row carries, run pytest against the named test
+files, grade FAIL_TO_PASS/PASS_TO_PASS from the output.
+
+Set ``is_verifying_golden_patch: true`` to grade the dataset's own patch instead of an agent's,
+the dataset-health check: a row whose golden patch does not resolve is a broken row.
+"""
+
+import shlex
+import sys
+from pathlib import Path
+from time import time
+from traceback import format_exc
+from typing import Any
+
+from fastapi import Request
+from pydantic import BaseModel, ConfigDict
+
+from nemo_gym.base_resources_server import (
+ BaseResourcesServerConfig,
+ BaseSeedSessionRequest,
+ BaseSeedSessionResponse,
+ BaseVerifyRequest,
+ BaseVerifyResponse,
+ SimpleResourcesServer,
+)
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.sandbox import AsyncSandbox, SandboxResources, SandboxSpec
+from nemo_gym.sandbox.config import resolve_provider_config, resolve_provider_metadata
+from nemo_gym.sandbox.utils import cpu_cap_env
+from nemo_gym.server_utils import SESSION_ID_KEY, is_nemo_gym_fastapi_entrypoint
+from resources_servers.scale_swe.verification import (
+ VerificationInputs,
+ VerificationResult,
+ as_id_list,
+ clean_commands,
+ drop_patch_sections,
+ run_verification,
+ verification_files,
+)
+from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup
+
+
+class ScaleSWEResourcesServerConfig(BaseResourcesServerConfig):
+ is_verifying_golden_patch: bool = False
+ evaluation_timeout: int | None = 1200
+ # A verdict-less run is retried on a fresh sandbox: an image pull or a flaky provider start
+ # is not evidence about the patch.
+ inconclusive_verification_retries: int = 1
+ apply_anti_cheating: bool = True
+ sandbox_provider: str
+ sandbox_config: dict[str, Any]
+
+
+class ScaleSWEInstanceRequest(BaseModel):
+ """One row of AweAI-Team/Scale-SWE."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str
+ repo: str = ""
+ language: str = "python"
+ workdir: str
+ image_url: str
+ patch: str = ""
+ pre_commands: str = ""
+ problem_statement: str = ""
+ f2p_patch: str = ""
+ f2p_script: str = ""
+ # Upstream spells these in caps and JSON-encodes the list; keep both as-received so a row
+ # round-trips unchanged.
+ FAIL_TO_PASS: str | list[str] = []
+ PASS_TO_PASS: str | list[str] = []
+
+
+class ScaleSWESeedSessionRequest(ScaleSWEInstanceRequest, BaseSeedSessionRequest):
+ sandbox_spec: dict[str, Any] | None = None
+
+
+class ScaleSWESeedSessionResponse(BaseSeedSessionResponse):
+ sandbox_handle: str
+
+
+class ScaleSWEVerifyRequest(ScaleSWEInstanceRequest, BaseVerifyRequest):
+ pass
+
+
+class ScaleSWEVerifyResponse(BaseVerifyResponse):
+ evaluation_completed: bool
+ resolved: bool
+ patch_applied: bool
+ instance_id: str
+ language: str
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None
+ eval_sandbox_start_time_taken: float
+ patch_verification_time_taken: float
+
+
+class ScaleSWEResourcesServer(SimpleResourcesServer):
+ config: ScaleSWEResourcesServerConfig
+
+ def model_post_init(self, context: Any, /) -> None:
+ super().model_post_init(context)
+ self._session_id_to_sandbox: dict[str, AsyncSandbox] = {}
+ self._session_id_to_pristine_untracked: dict[str, frozenset[str]] = {}
+ self._session_id_to_base_commit: dict[str, str] = {}
+
+ def _inputs(self, body: ScaleSWEInstanceRequest, patch: str) -> VerificationInputs:
+ return VerificationInputs(
+ instance_id=body.instance_id,
+ workdir=body.workdir,
+ patch=patch,
+ pre_commands=body.pre_commands,
+ f2p_patch=body.f2p_patch,
+ f2p_script=body.f2p_script,
+ fail_to_pass=as_id_list(body.FAIL_TO_PASS),
+ pass_to_pass=as_id_list(body.PASS_TO_PASS),
+ )
+
+ async def _create_sandbox(
+ self, body: ScaleSWEInstanceRequest, files: dict[str, str] | None = None
+ ) -> AsyncSandbox:
+ global_config_dict = get_global_config_dict()
+ provider_config = resolve_provider_config(self.config.sandbox_provider, global_config_dict)
+ provider_metadata = resolve_provider_metadata(self.config.sandbox_provider, global_config_dict)
+
+ # Cap pytest's own parallelism (xdist, if a row's suite uses it) to the CPU limit. A
+ # container sees the HOST core count, not the cgroup quota, so an unconstrained worker
+ # count fans out against a small quota and CFS-throttles. Lower stakes here than the
+ # compiled-language sets, since plain pytest is single-process by default, but cheap
+ # insurance for the rows that do use xdist or multiprocessing test runners.
+ sandbox_resources = SandboxResources.from_mapping(self.config.sandbox_config.get("resources", {}))
+ env = dict(self.config.sandbox_config.get("env", {}))
+ if self.config.sandbox_config.get("derive_cpu_env", True):
+ env = cpu_cap_env(sandbox_resources.cpu) | env
+
+ spec = SandboxSpec(
+ # The row names its own image; there is no repository template to apply.
+ image=body.image_url,
+ ttl_s=self.config.sandbox_config.get("ttl_s"),
+ ready_timeout_s=self.config.sandbox_config.get("ready_timeout_s"),
+ workdir=body.workdir,
+ env=env,
+ files=files or {},
+ metadata=provider_metadata
+ | self.config.sandbox_config.get("metadata", {})
+ | {
+ "nemo_gym_agent": self.config.name,
+ "instance_id": body.instance_id[:63],
+ },
+ resources=sandbox_resources,
+ provider_options=self.config.sandbox_config.get("provider_options", {}),
+ )
+ sandbox = AsyncSandbox(provider_config)
+ await sandbox.start(spec)
+ return sandbox
+
+ async def _stop_sandbox(self, sandbox: AsyncSandbox | None) -> None:
+ if sandbox is None:
+ return
+ try:
+ await sandbox.stop()
+ except Exception:
+ print("Failed to stop Scale-SWE sandbox", format_exc(), file=sys.stderr)
+
+ async def _ensure_git_repo(self, sandbox: AsyncSandbox, workdir: str) -> None:
+ """Some images ship with no git history at all. Init one fresh, but only when missing, so
+ ``seed_session`` always has a real base commit to diff the agent's changes against without
+ disturbing the git history everywhere else.
+ """
+ precheck = await sandbox.exec(f"git -C {shlex.quote(workdir)} rev-parse --git-dir")
+ if precheck.return_code == 0:
+ return
+ result = await sandbox.exec(
+ f"cd {shlex.quote(workdir)} && git init -q "
+ f"&& git config user.email nemo-gym@nvidia.com && git config user.name nemo-gym "
+ f"&& git add -A && git commit -q -m 'nemo_gym: initial snapshot' --allow-empty"
+ )
+ if result.return_code != 0:
+ print(f"Failed to init git repo at {workdir}: {result.stdout}\n{result.stderr}", file=sys.stderr)
+
+ async def _pristine_untracked_files(self, sandbox: AsyncSandbox, workdir: str) -> frozenset[str]:
+ """List of files ``workdir`` holds untracked before the agent touches it."""
+ try:
+ result = await sandbox.exec(f"git -C {shlex.quote(workdir)} ls-files --others --exclude-standard")
+ if result.return_code != 0:
+ print(f"Failed to list pristine untracked files: {result.stderr}", file=sys.stderr)
+ return frozenset()
+ return frozenset(line.strip() for line in (result.stdout or "").splitlines() if line.strip())
+ except Exception:
+ print("Failed to list pristine untracked files", format_exc(), file=sys.stderr)
+ return frozenset()
+
+ async def _extract_model_patch(self, session_id: str, workdir: str, base_commit: str) -> str:
+ """Diff the agent's own sandbox against ``base_commit``, then stop it.
+
+ ``git add -N`` (intent-to-add) is what makes brand-new files show up in ``git diff`` too,
+ not just edits to already-tracked files.
+ """
+ original_sandbox = self._session_id_to_sandbox.pop(session_id)
+ pristine_untracked = self._session_id_to_pristine_untracked.pop(session_id, frozenset())
+ try:
+ result = await original_sandbox.exec(
+ f"git -C {shlex.quote(workdir)} add -N . "
+ f"&& git -C {shlex.quote(workdir)} --no-pager diff {shlex.quote(base_commit)}"
+ )
+ if result.return_code != 0:
+ raise RuntimeError(result.stderr or "git diff failed")
+ return drop_patch_sections(result.stdout or "", pristine_untracked)
+ finally:
+ await self._stop_sandbox(original_sandbox)
+
+ async def seed_session(self, request: Request, body: ScaleSWESeedSessionRequest) -> ScaleSWESeedSessionResponse:
+ """Start the instance's image, then run ``pre_commands`` so the agent sees the prepared
+ checkout (parent_commit, fix-commit history scrubbed) rather than the image's raw,
+ unprepared state -- ``pre_commands`` used to only run inside the eval script at /verify
+ time, which left an agent's own working session never actually checked out to the right
+ commit at all.
+ """
+ session_id = request.session[SESSION_ID_KEY]
+ await self._stop_sandbox(self._session_id_to_sandbox.pop(session_id, None))
+ self._session_id_to_pristine_untracked.pop(session_id, None)
+ self._session_id_to_base_commit.pop(session_id, None)
+
+ sandbox = await self._create_sandbox(body)
+
+ pre = clean_commands(body.pre_commands)
+ if pre:
+ result = await sandbox.exec(f"cd {shlex.quote(body.workdir)} && {pre}")
+ if result.return_code != 0:
+ print(
+ f"[scale_swe] {body.instance_id}: pre_commands failed during seed_session "
+ f"(non-fatal, matching build_eval_script's own tolerance): {result.stderr}",
+ file=sys.stderr,
+ )
+
+ await self._ensure_git_repo(sandbox, body.workdir)
+ if self.config.apply_anti_cheating:
+ await apply_anti_cheat_setup(sandbox, body.workdir, body.instance_id, "scale_swe")
+
+ head_result = await sandbox.exec(f"git -C {shlex.quote(body.workdir)} rev-parse HEAD")
+ self._session_id_to_base_commit[session_id] = (head_result.stdout or "").strip()
+ self._session_id_to_pristine_untracked[session_id] = await self._pristine_untracked_files(
+ sandbox, body.workdir
+ )
+ self._session_id_to_sandbox[session_id] = sandbox
+ return ScaleSWESeedSessionResponse(sandbox_handle=str(sandbox._handle.sandbox_id))
+
+ async def verify(self, request: Request, body: ScaleSWEVerifyRequest) -> ScaleSWEVerifyResponse:
+ session_id = request.session[SESSION_ID_KEY]
+ extraction_error = None
+ if self.config.is_verifying_golden_patch:
+ patch = body.patch
+ else:
+ base_commit = self._session_id_to_base_commit.pop(session_id, "")
+ if not base_commit:
+ patch = ""
+ extraction_error = "Failed to extract model patch: no base commit recorded (seed_session did not run for this session)"
+ else:
+ try:
+ patch = await self._extract_model_patch(session_id, body.workdir, base_commit)
+ except Exception as exc:
+ patch = ""
+ extraction_error = f"Failed to extract model patch: {exc}"
+
+ inputs = self._inputs(body, patch)
+ log_dir = Path(__file__).parent / "logs" / body.instance_id
+
+ files = verification_files(inputs)
+ attempts = 1 + max(self.config.inconclusive_verification_retries, 0)
+ start_time_taken = 0.0
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error="unattempted",
+ )
+ for attempt in range(1, attempts + 1):
+ sandbox: AsyncSandbox | None = None
+ started = time()
+ try:
+ sandbox = await self._create_sandbox(body, files=files)
+ start_time_taken = time() - started
+ verification_started = time()
+ result = await run_verification(
+ sandbox=sandbox,
+ inputs=inputs,
+ timeout_s=self.config.evaluation_timeout,
+ log_dir=log_dir,
+ )
+ verification_time_taken = time() - verification_started
+ except Exception as exc:
+ start_time_taken = time() - started
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error=f"Verification failed: {exc}",
+ )
+ finally:
+ await self._stop_sandbox(sandbox)
+ if result.completed:
+ break
+ if attempt < attempts:
+ print(
+ f"[scale_swe] {body.instance_id}: inconclusive ({result.error}); "
+ f"retrying on a fresh sandbox ({attempt}/{attempts - 1})",
+ flush=True,
+ )
+
+ return ScaleSWEVerifyResponse.model_validate(
+ body.model_dump()
+ | {
+ # An unresolved-but-completed run is a real 0. An incomplete run is also 0, but
+ # evaluation_completed distinguishes them so a broken row is not read as a hard task.
+ "reward": 1.0 if result.resolved else 0.0,
+ "evaluation_completed": result.completed,
+ "resolved": result.resolved,
+ "patch_applied": result.patch_applied,
+ "instance_id": body.instance_id,
+ "language": body.language,
+ "test_results": result.test_results,
+ "test_output": result.test_output[-100_000:],
+ "error": extraction_error or result.error,
+ "eval_sandbox_start_time_taken": start_time_taken,
+ "patch_verification_time_taken": verification_time_taken,
+ }
+ )
+
+
+if __name__ == "__main__":
+ ScaleSWEResourcesServer.run_webserver()
+elif is_nemo_gym_fastapi_entrypoint(__file__):
+ # Required whenever num_workers > 1. Multi-worker uvicorn re-imports this entrypoint BY PATH
+ # in each forked child and expects a module-level `app`; without it every child exits, and
+ # uvicorn responds by stopping the parent. The server then never binds, so the symptom is not
+ # an import error but a flood of connection failures from clients talking to a dead port.
+ app = ScaleSWEResourcesServer.run_webserver() # noqa: F401
diff --git a/resources_servers/scale_swe/apply_golden_patch.py b/resources_servers/scale_swe/apply_golden_patch.py
new file mode 100644
index 00000000000..0378c1b0e5e
--- /dev/null
+++ b/resources_servers/scale_swe/apply_golden_patch.py
@@ -0,0 +1,165 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Grade every task with the dataset's own golden patch.
+
+This measures the dataset, not a model. A row whose golden patch does not make FAIL_TO_PASS
+pass is unusable for evaluation or training, so this is the check to run before trusting any
+score from Scale-SWE.
+
+ gym env start --config resources_servers/scale_swe/configs/scale_swe.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+ python resources_servers/scale_swe/apply_golden_patch.py \
+ +training_jsonl=resources_servers/scale_swe/data/scale_swe_training.jsonl \
+ +output_jsonl=results/scale_swe_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+"""
+
+import asyncio
+import json
+from collections import Counter
+from pathlib import Path
+
+from tqdm.auto import tqdm
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+SERVER_NAME = "scale_swe_golden_patch_resources_server"
+
+
+def _stream_examples(path: Path, limit: int):
+ """Yield rows lazily rather than materialising the whole training file.
+
+ Smaller than SWE-rebench (20,181 rows vs 32,079), but the same shape of problem: loading
+ every row into memory just to feed a bounded worker pool wastes that memory for the whole
+ run, and the peak lands hours in once results have also accumulated.
+ """
+ with open(path, encoding="utf-8") as training:
+ for index, line in enumerate(training):
+ if limit and index >= limit:
+ return
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ limit = int(config.get("limit") or 0)
+ concurrency = int(config.get("concurrency") or 16)
+ training_fpath = Path(config["training_jsonl"])
+ output_fpath = Path(config.get("output_jsonl") or "results/scale_swe_golden_patch.jsonl")
+
+ total = sum(1 for _ in _stream_examples(training_fpath, limit))
+ client = ServerClient.load_from_global_config()
+
+ # Bounded: the queue holds at most one row per worker, so resident rows track concurrency
+ # rather than dataset size.
+ queue: asyncio.Queue = asyncio.Queue(maxsize=concurrency)
+ resolved = 0
+ incomplete = 0
+ by_language: Counter[str] = Counter()
+ resolved_by_language: Counter[str] = Counter()
+ finished = 0
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ progress = tqdm(total=total, desc="golden patch")
+
+ with output_fpath.open("w", encoding="utf-8") as output:
+
+ async def worker() -> None:
+ nonlocal resolved, incomplete, finished
+ while True:
+ example = await queue.get()
+ if example is None:
+ queue.task_done()
+ return
+ try:
+ payload = example | {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+ try:
+ response = await client.post(server_name=SERVER_NAME, url_path="/verify", json=payload)
+ result = await response.json()
+ except Exception as exc:
+ # One unreachable task must not abandon the sweep; record it and carry on.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "language": example.get("language", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"request failed: {exc}",
+ }
+ if not isinstance(result, dict):
+ # Gym middleware returns repr(exc) as a bare JSON string when a handler
+ # raises, so a server-side fault arrives as a str.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "language": example.get("language", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"server returned a non-object response: {str(result)[:300]}",
+ }
+
+ language = str(result.get("language") or example.get("language") or "unknown")
+ by_language[language] += 1
+ if result.get("resolved"):
+ resolved += 1
+ resolved_by_language[language] += 1
+ if not result.get("evaluation_completed", False):
+ incomplete += 1
+ output.write(json.dumps(result) + "\n")
+ finished += 1
+ if finished % 50 == 0:
+ output.flush() # a multi-hour run must leave usable rows if it is cut short
+ progress.update(1)
+ progress.set_description(
+ f"resolved {resolved}/{finished} ({100 * resolved / max(finished, 1):.1f}%) "
+ f"incomplete={incomplete}"
+ )
+ finally:
+ queue.task_done()
+
+ workers = [asyncio.create_task(worker()) for _ in range(concurrency)]
+ for example in _stream_examples(training_fpath, limit):
+ await queue.put(example)
+ for _ in workers:
+ await queue.put(None)
+ await asyncio.gather(*workers)
+
+ progress.close()
+ print(f"\ngolden-patch validation over {total} task(s)")
+ print(f" resolved: {resolved}/{total} ({100 * resolved / max(total, 1):.1f}%)")
+ print(f" incomplete: {incomplete}/{total} (no verdict: image pull, timeout, or setup failure)")
+ print("\n by language (resolved / total):")
+ for language, count in by_language.most_common():
+ got = resolved_by_language[language]
+ print(f" {language:<10} {got:>5} / {count:<6} ({100 * got / count:5.1f}%)")
+ print(f"\nper-task rows: {output_fpath}")
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/scale_swe/client.py b/resources_servers/scale_swe/client.py
new file mode 100644
index 00000000000..c2daa543491
--- /dev/null
+++ b/resources_servers/scale_swe/client.py
@@ -0,0 +1,52 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Verify a single Scale-SWE row, for a quick smoke test of the server."""
+
+import asyncio
+import json
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ with open(config["training_jsonl"], encoding="utf-8") as training:
+ example = json.loads(next(training))
+ example |= {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+
+ client = ServerClient.load_from_global_config()
+ result = await client.post(
+ server_name=config.get("resources_server_name", "scale_swe_golden_patch_resources_server"),
+ url_path="/verify",
+ json=example,
+ )
+ print(json.dumps(await result.json(), indent=4))
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/scale_swe/configs/scale_swe.yaml b/resources_servers/scale_swe/configs/scale_swe.yaml
new file mode 100644
index 00000000000..955ca4a8a55
--- /dev/null
+++ b/resources_servers/scale_swe/configs/scale_swe.yaml
@@ -0,0 +1,75 @@
+# Resources server for AweAI-Team/Scale-SWE.
+#
+# Every row carries its own prebuilt image (aweaiteam/scaleswe:...) and a pre_commands string
+# that performs its own checkout and git-history scrub -- so there is no image repository or
+# per-language configuration here. 20,181 rows, entirely Python, one test runner (pytest).
+scale_swe_resources_server:
+ resources_servers:
+ scale_swe:
+ allowed_agents: [opencode_sandboxed_agent]
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ # Pure Python, no compilation: pytest runs against a handful of named files, not a full
+ # suite build. Sized well under the SWE-rebench compiled-language shape.
+ evaluation_timeout: 1200
+ is_verifying_golden_patch: false
+ apply_anti_cheating: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ # Limits are the BURST ceiling; requests are the guaranteed floor -- see
+ # resources_servers/swe_rebench/configs/swe_rebench.yaml for the measurement behind this
+ # split (2.8x faster than requests==limits at no cost in resolved rate or incompletes).
+ #
+ # memory_mib raised 8192 -> 16384 on direct evidence, not a guess: a full-set 20,181-row
+ # run at the 8Gi limit had 695 rows (3.4% of the whole set) die at pod CREATION with
+ # `OOMKilled (exit code 137)`, concentrated in a handful of repos (durandtibo's
+ # coola/feu/grizz/iden -- torch-adjacent tensor tooling -- alone were 335 of the 695).
+ # These never reach the test phase, so no per-task CPU/timeout signal catches them; the
+ # only way to see it was reading the actual sandbox-creation error.
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: scale-swe
+
+# Golden-patch validation: grade the dataset's own patch instead of an agent's. A row whose
+# golden patch does not resolve is a broken row, and scoring an agent against it measures noise.
+# Run it with resources_servers/scale_swe/apply_golden_patch.py.
+scale_swe_golden_patch_resources_server:
+ resources_servers:
+ scale_swe:
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ evaluation_timeout: 1200
+ is_verifying_golden_patch: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ # See scale_swe_resources_server above: raised on direct OOMKilled evidence from a
+ # full-set run at the previous 8Gi limit.
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: scale-swe-golden-patch
diff --git a/resources_servers/scale_swe/configs/scale_swe_example.yaml b/resources_servers/scale_swe/configs/scale_swe_example.yaml
new file mode 100644
index 00000000000..de865056b74
--- /dev/null
+++ b/resources_servers/scale_swe/configs/scale_swe_example.yaml
@@ -0,0 +1,25 @@
+# scale_swe's CI "example" data-validation config -- separate from scale_swe.yaml so starting
+# the base/golden-patch servers for golden-patch validation never needs to pull in an
+# agent+model config (mirrors the *_opencode.yaml split, same reasoning).
+config_paths:
+ - resources_servers/scale_swe/configs/scale_swe.yaml
+
+# CI's "example" data-validation gate (gym env test +should_validate_data=true): grades the
+# dataset's own golden patch for 5 rows via a plain simple_agent (not opencode_sandboxed_agent --
+# this only needs a real verify() round-trip to exercise data/example.jsonl's shape, not an agent
+# that can actually solve the task). See resources_servers/swebench_pro/configs/swebench_pro.yaml
+# for the same pattern.
+scale_swe_example_agent:
+ responses_api_agents:
+ simple_agent:
+ entrypoint: app.py
+ resources_server:
+ type: resources_servers
+ name: scale_swe_golden_patch_resources_server
+ model_server:
+ type: responses_api_models
+ name: policy_model
+ datasets:
+ - name: example
+ type: example
+ jsonl_fpath: resources_servers/scale_swe/data/example.jsonl
diff --git a/resources_servers/scale_swe/configs/scale_swe_opencode.yaml b/resources_servers/scale_swe/configs/scale_swe_opencode.yaml
new file mode 100644
index 00000000000..5893e14f70c
--- /dev/null
+++ b/resources_servers/scale_swe/configs/scale_swe_opencode.yaml
@@ -0,0 +1,34 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Wires the opencode sandboxed agent to scale_swe_resources_server for a training run --
+# `scale_swe.yaml` alone only defines the resources server, which is enough for golden-patch
+# validation (apply_golden_patch.py talks to it directly, no agent involved) but not enough to
+# actually run an agent against the dataset. This is a separate file, not folded into
+# scale_swe.yaml, so golden-patch validation keeps working without pulling in the agent's (much
+# larger) opencode/sandbox config.
+#
+# This is training data (data/scale_swe_training.jsonl, only the 17,696 already-supported
+# instances -- see the README), not a fixed eval benchmark.
+#
+# gym env start --config resources_servers/scale_swe/configs/scale_swe_opencode.yaml
+
+config_paths:
+ - responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+ - resources_servers/scale_swe/configs/scale_swe.yaml
+
+scale_swe_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: scale_swe_resources_server
+ datasets:
+ - name: scale_swe
+ type: train
+ jsonl_fpath: resources_servers/scale_swe/data/scale_swe_training.jsonl
+ num_repeats: 1
+ # AweAI-Team/Scale-SWE has no declared license on the Hub (no license tag, empty card
+ # data) -- TBD rather than guessing one of the enum's real licenses.
+ license: TBD
diff --git a/resources_servers/scale_swe/data/.gitignore b/resources_servers/scale_swe/data/.gitignore
new file mode 100644
index 00000000000..4eb5d15a1ef
--- /dev/null
+++ b/resources_servers/scale_swe/data/.gitignore
@@ -0,0 +1,5 @@
+# Prepared training JSONL is a large filtered slice of the Hub dataset (patch/test content for
+# every supported instance). Regenerate with prepare_scale_swe.py.
+*.jsonl
+!example.jsonl
+!example_rollouts.jsonl
diff --git a/resources_servers/scale_swe/data/example.jsonl b/resources_servers/scale_swe/data/example.jsonl
new file mode 100644
index 00000000000..8c77d62cf7f
--- /dev/null
+++ b/resources_servers/scale_swe/data/example.jsonl
@@ -0,0 +1,5 @@
+{"instance_id": "globus_globus-sdk-python_pr1029", "repo": "globus-sdk-python", "language": "python", "workdir": "/workspace/globus-sdk-python", "image_url": "aweaiteam/scaleswe:globus_globus-sdk-python_pr1029", "patch": "diff --git a/changelog.d/20240809_155147_sirosen_use_flows_all_scope.rst b/changelog.d/20240809_155147_sirosen_use_flows_all_scope.rst\nnew file mode 100644\nindex 00000000..b9d39d39\n--- /dev/null\n+++ b/changelog.d/20240809_155147_sirosen_use_flows_all_scope.rst\n@@ -0,0 +1,7 @@\n+Changed\n+~~~~~~~\n+\n+.. rubric:: Experimental\n+\n+- The ``default_scope_requirements`` for ``globus_sdk.FlowsClient`` has been\n+ updated to list the Flows ``all`` scope. (:pr:`NUMBER`)\ndiff --git a/src/globus_sdk/services/flows/client.py b/src/globus_sdk/services/flows/client.py\nindex bc07a03a..5e686cd6 100644\n--- a/src/globus_sdk/services/flows/client.py\n+++ b/src/globus_sdk/services/flows/client.py\n@@ -31,10 +31,7 @@ class FlowsClient(client.BaseClient):\n error_class = FlowsAPIError\n service_name = \"flows\"\n scopes = FlowsScopes\n- default_scope_requirements = [\n- Scope(FlowsScopes.view_flows),\n- Scope(FlowsScopes.run_status),\n- ]\n+ default_scope_requirements = [Scope(FlowsScopes.all)]\n \n def create_flow(\n self,\ndiff --git a/tests/unit/experimental/test_client_integration.py b/tests/unit/experimental/test_client_integration.py\nindex 7b6a2bbb..ab9b2811 100644\n--- a/tests/unit/experimental/test_client_integration.py\n+++ b/tests/unit/experimental/test_client_integration.py\n@@ -107,9 +107,8 @@ def test_flows_client_default_scopes(app):\n \n flows_client_id = \"eec9b274-0c81-4334-bdc2-54e90e689b9a\"\n str_list = [str(s) for s in app.get_scope_requirements(\"flows.globus.org\")]\n- assert len(str_list) == 2\n- assert f\"https://auth.globus.org/scopes/{flows_client_id}/view_flows\" in str_list\n- assert f\"https://auth.globus.org/scopes/{flows_client_id}/run_status\" in str_list\n+ assert len(str_list) == 1\n+ assert str_list == [f\"https://auth.globus.org/scopes/{flows_client_id}/all\"]\n \n \n def test_specific_flow_client_default_scopes(app):\n", "pre_commands": "git clean -fd -e '*.egg-info' -e '.tox' -e '.venv' && git checkout 199690cc0cf30f110af956cd94eb705440aa5348 -f && git reset --hard HEAD && git checkout -b scaleswe && git config user.email 'scaleswe@example.com' && git config user.name 'scaleswe-engine' && rm -f .git/packed-refs && find .git/refs/heads -type f ! -name 'scaleswe' -delete && rm -rf .git/refs/tags .git/refs/remotes && git reflog expire --expire=now --all && git gc --prune=now --aggressive\\n", "problem_statement": "# Use `all` scope in `FlowsClient.default_scope_requirements`\n\nThe `globus_sdk.FlowsClient` currently defines its `default_scope_requirements` as a list containing `view_flows` and `run_status`.\n\nThis configuration restricts the capabilities of a default-constructed `FlowsClient`. Specifically, it excludes the permissions required to create a Flow, limiting the client's utility out of the box.\n\nI propose updating the `default_scope_requirements` to use the `all` scope instead. This would ensure that the client has full capabilities by default, which seems to be the more appropriate choice for this service.", "f2p_patch": "diff --git a/tests/unit/experimental/test_client_integration.py b/tests/unit/experimental/test_client_integration.py\nindex 7b6a2bbb..ab9b2811 100644\n--- a/tests/unit/experimental/test_client_integration.py\n+++ b/tests/unit/experimental/test_client_integration.py\n@@ -107,9 +107,8 @@ def test_flows_client_default_scopes(app):\n \n flows_client_id = \"eec9b274-0c81-4334-bdc2-54e90e689b9a\"\n str_list = [str(s) for s in app.get_scope_requirements(\"flows.globus.org\")]\n- assert len(str_list) == 2\n- assert f\"https://auth.globus.org/scopes/{flows_client_id}/view_flows\" in str_list\n- assert f\"https://auth.globus.org/scopes/{flows_client_id}/run_status\" in str_list\n+ assert len(str_list) == 1\n+ assert str_list == [f\"https://auth.globus.org/scopes/{flows_client_id}/all\"]\n \n \n def test_specific_flow_client_default_scopes(app):\n", "f2p_script": "import pytest\nimport globus_sdk\nfrom globus_sdk.scopes import FlowsScopes, Scope\nfrom globus_sdk.experimental.globus_app import GlobusApp, GlobusAppConfig, UserApp\nfrom globus_sdk.experimental.tokenstorage import MemoryTokenStorage\nfrom unittest.mock import Mock\n\n\n@pytest.fixture\ndef app() -> GlobusApp:\n config = GlobusAppConfig(token_storage=MemoryTokenStorage())\n return UserApp(\"test-app\", client_id=\"client_id\", config=config)\n\n\ndef test_default_scope_requirements():\n \"\"\"Check that FlowsClient.default_scope_requirements is set to [Scope(FlowsScopes.all)]\"\"\"\n expected = [Scope(FlowsScopes.all)]\n # Compare string representations to avoid equality issues\n actual = globus_sdk.FlowsClient.default_scope_requirements\n assert len(actual) == 1\n assert str(actual[0]) == str(expected[0])\n\n\ndef test_flows_client_default_scopes_via_app(app):\n \"\"\"Verify that when creating a FlowsClient with an app, the requested scopes include the 'all' scope.\"\"\"\n flows_client_id = \"eec9b274-0c81-4334-bdc2-54e90e689b9a\"\n # This line triggers scope requirements to be registered\n globus_sdk.FlowsClient(app=app)\n\n str_list = [str(s) for s in app.get_scope_requirements(\"flows.globus.org\")]\n # After the fix, there should be exactly one scope: the 'all' scope\n assert len(str_list) == 1\n assert str_list == [f\"https://auth.globus.org/scopes/{flows_client_id}/all\"]\n\n\ndef test_flows_client_create_flow_scope_sufficient(app, monkeypatch):\n \"\"\"\n Mock the create_flow call to ensure that with default scopes, the request\n does not raise an authorization error.\n \"\"\"\n # Mock the underlying HTTP request to simulate success\n mock_response = Mock()\n mock_response.http_status = 200\n mock_response.data = {\"flow_id\": \"test-flow-id\"}\n mock_post = Mock(return_value=mock_response)\n monkeypatch.setattr(globus_sdk.FlowsClient, \"post\", mock_post)\n\n client = globus_sdk.FlowsClient(app=app)\n # This should not raise GlobusAPIError (authorization error)\n result = client.create_flow(\n title=\"Test Flow\",\n definition={\"States\": {}},\n input_schema={},\n subtitle=\"Test\",\n description=\"Test flow\",\n flow_viewers=[],\n flow_starters=[],\n flow_administrators=[],\n keywords=[],\n )\n assert result.data[\"flow_id\"] == \"test-flow-id\"\n # Ensure the request was made to the correct path\n mock_post.assert_called_once()\n call_args = mock_post.call_args\n assert call_args[0][0] == \"/flows\"\n\n\nif __name__ == \"__main__\":\n import sys\n sys.exit(pytest.main([\"-v\", __file__]))", "FAIL_TO_PASS": "[\"tests/unit/experimental/test_client_integration.py::test_flows_client_default_scopes\"]", "PASS_TO_PASS": "[\"tests/functional/base_client/test_advanced_http_options.py::test_allow_redirects_false\", \"tests/functional/base_client/test_advanced_http_options.py::test_stream_true\", \"tests/functional/base_client/test_default_headers.py::test_clientinfo_header_can_be_supressed\", \"tests/functional/base_client/test_encodings.py::test_text_encoding_can_send_non_ascii_utf8_bytes\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[504]\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_on_network_error\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_limit[5-False]\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_limit[7-True]\", \"tests/functional/base_client/test_retry_behavior.py::test_transport_retry_limit\", \"tests/functional/base_client/test_retry_behavior.py::test_no_retry_401_no_authorizer\", \"tests/functional/local_endpoint/test_personal.py::test_localep_load_id_alternate_conf_dir\", \"tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_aaaaaaaaaaaaaaaaaaaaaaaaa]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_aaaaaaaaaaaaaaaaaaaaaaaaa/]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\\\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=koala\\\" panda fossa]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\\\"\\\" koala]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data\", \"tests/functional/local_endpoint/test_server.py::test_info_dict_from_empty_json_file_is_okay_but_has_no_properties\", \"tests/functional/local_endpoint/test_server.py::test_endpoint_id_property_ignores_non_str_value\", \"tests/functional/local_endpoint/test_server.py::test_domain_name_property_ignores_non_str_value\", \"tests/functional/services/auth/base/test_oauth2_validate_token.py::test_oauth2_validate_token_emits_deprecation_warning\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[public_client]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[publicly_visible]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_confidential_client]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_resource_server]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_hybrid_confidential_client_resource_server]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_public_webapp_client]\", \"tests/functional/services/auth/confidential_client/test_create_child_client.py::test_links_requirement\", \"tests/functional/services/auth/confidential_client/test_oauth2_get_dependent_tokens.py::test_oauth2_get_dependent_tokens\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[private_client]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[publicly_visible]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[not_publicly_visible]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_confidential_client]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_resource_server]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_public_webapp_client]\", \"tests/functional/services/auth/service_client/test_create_client.py::test_links_requirement\", \"tests/functional/services/auth/service_client/test_create_client_credential.py::test_create_credential[str]\", \"tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[project_id_uuid]\", \"tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[display_name]\", \"tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[domain_constraints_exclude]\", \"tests/functional/services/auth/service_client/test_create_policy.py::test_compatible_create_policy_usage_rejects_too_many_positionals\", \"tests/functional/services/auth/service_client/test_create_policy.py::test_policy_usage_warns_and_errors_when_argument_is_supplied_twice\", \"tests/functional/services/auth/service_client/test_create_project.py::test_create_project_admin_id_styles[list]\", \"tests/functional/services/auth/service_client/test_create_project.py::test_create_project_admin_id_styles[uuid]\", \"tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[required_domains]\", \"tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[no_dependent_scopes]\", \"tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[not_advertised]\", \"tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[allows_refresh_token]\", \"tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[disallows_refresh_token]\", \"tests/functional/services/auth/service_client/test_delete_client_credential.py::test_delete_credential[UUID]\", \"tests/functional/services/auth/service_client/test_delete_scope.py::test_delete_scope[UUID]\", \"tests/functional/services/auth/service_client/test_get_client_credentials.py::test_get_client_credentials[str]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[globus@globus.org]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[usernames1]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[usernames2]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_provision[1-true]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_provision[true-true]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]\", \"tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_multiple_usernames_success[usernames2]\", \"tests/functional/services/auth/service_client/test_get_identity_providers.py::test_get_identity_providers_by_ids\", \"tests/functional/services/auth/service_client/test_get_projects.py::test_get_projects\", \"tests/functional/services/auth/service_client/test_update_client.py::test_links_requirement\", \"tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[project_id_uuid]\", \"tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[display_name]\", \"tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[no_domain_constrants_include]\", \"tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[no_domain_constrants_exclude]\", \"tests/functional/services/auth/service_client/test_update_project.py::test_update_project_admin_id_styles[list]\", \"tests/functional/services/auth/service_client/test_update_project.py::test_update_project_admin_id_styles[set]\", \"tests/functional/services/auth/service_client/test_update_project.py::test_update_project_group_id_styles[set]\", \"tests/functional/services/auth/service_client/test_update_project.py::test_update_project_group_id_styles[uuid]\", \"tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[name]\", \"tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[scope_suffix]\", \"tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[dependent_scopes]\", \"tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[advertised]\", \"tests/functional/services/auth/service_client/test_userinfo.py::test_userinfo_error_handling[unauthorized]\", \"tests/functional/services/auth/service_client/test_userinfo.py::test_userinfo_error_handling[forbidden]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-None-None-confidential_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[example.edu-None-None-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option3-None-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-foo-id-None-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option5-None-None-None-confidential_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option6-None-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-policy_option8-None-None-confidential_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-policy_option10-None-None-native_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-True-None-confidential_app]\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_native_defaults\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential_custom_params\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_native\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_batch_limit\", \"tests/functional/services/flows/test_flow_crud.py::test_create_flow[None]\", \"tests/functional/services/flows/test_flow_crud.py::test_create_flow[dummy_subscription_id]\", \"tests/functional/services/flows/test_flow_crud.py::test_get_flow\", \"tests/functional/services/flows/test_flow_crud.py::test_delete_flow\", \"tests/functional/services/flows/test_flow_validate.py::test_validate_flow_error_parsing\", \"tests/functional/services/flows/test_get_run.py::test_get_run[True]\", \"tests/functional/services/flows/test_get_run_logs.py::test_get_run_logs_paginated\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[None-bar-foo]\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[created_at ASC-None-None]\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[created_at ASC-bar-None]\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_paginated[False]\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_orderby_multi[seq-orderby_value1]\", \"tests/functional/services/flows/test_list_flows.py::test_list_flows_orderby_multi[generator-orderby_value3]\", \"tests/functional/services/flows/test_list_runs.py::test_list_runs_paginated[True]\", \"tests/functional/services/flows/test_run_crud.py::test_update_run[values3]\", \"tests/functional/services/flows/test_run_crud.py::test_update_run[values5]\", \"tests/functional/services/flows/test_run_crud.py::test_update_run[values6]\", \"tests/functional/services/flows/test_run_crud.py::test_update_run[values7]\", \"tests/functional/services/flows/test_run_crud.py::test_update_run_additional_fields\", \"tests/functional/services/flows/test_run_crud.py::test_delete_run_success\", \"tests/functional/services/flows/test_run_crud.py::test_delete_run_conflict\", \"tests/functional/services/flows/test_run_flow.py::test_run_flow\", \"tests/functional/services/flows/test_run_flow.py::test_run_flow_missing_scope\", \"tests/functional/services/gcs/test_collections.py::test_get_collection_includes_sideloaded_data\", \"tests/functional/services/gcs/test_collections.py::test_get_collection_invalid_datatype_type\", \"tests/functional/services/gcs/test_collections.py::test_delete_collection\", \"tests/functional/services/gcs/test_endpoints.py::test_get_endpoint\", \"tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_infers_data_type\", \"tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_infers_data_type_when_control_port_specified\", \"tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_respects_explicit_data_type\", \"tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list\", \"tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[None-None]\", \"tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[include_param3-foo,bar]\", \"tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]\", \"tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[include_param3]\", \"tests/functional/services/gcs/test_storage_gateways.py::test_create_storage_gateway\", \"tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[None]\", \"tests/functional/services/gcs/test_storage_gateways.py::test_delete_storage_gateway_permission_denied\", \"tests/functional/services/groups/test_delete_group.py::test_delete_group\", \"tests/functional/services/groups/test_get_group.py::test_get_group\", \"tests/functional/services/groups/test_get_group_by_subscription_id.py::test_get_group_by_subscription_id\", \"tests/functional/services/groups/test_group_memberships.py::test_add_member[GroupRole.admin]\", \"tests/functional/services/groups/test_group_memberships.py::test_batch_action_payload[GroupRole.admin]\", \"tests/functional/services/groups/test_group_memberships.py::test_batch_action_payload[admin]\", \"tests/functional/services/groups/test_set_group_policies.py::test_set_group_policies_explicit_payload[str-GroupVisibility.authenticated-GroupMemberVisibility.managers-signup_fields1-signup_fields_str1-auth_timeout1]\", \"tests/functional/services/search/test_batch_delete_by_subject.py::test_batch_delete_by_subject_accepts_string\", \"tests/functional/services/search/test_create_index.py::test_create_index_limit_exceeded\", \"tests/functional/services/search/test_reopen_index.py::test_reopen_index_already_open\", \"tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]\", \"tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc2]\", \"tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc0]\", \"tests/functional/services/search/test_search_roles.py::test_search_role_create\", \"tests/functional/services/timer/test_jobs.py::test_get_job_errors\", \"tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]\", \"tests/functional/services/timer/test_jobs.py::test_create_job[interval1-start0]\", \"tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]\", \"tests/functional/services/timer/test_jobs.py::test_update_job\", \"tests/functional/services/timer/test_jobs.py::test_resume_job[None]\", \"tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[0-0]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-paramvalue2]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-0]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]\", \"tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs0-expected_qs0]\", \"tests/functional/services/transfer/test_operation_mkdir.py::test_operation_mkdir[my-user]\", \"tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[None]\", \"tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[local_user2]\", \"tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults\", \"tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-__iter__]\", \"tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]\", \"tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]\", \"tests/functional/services/transfer/test_simple.py::test_update_endpoint_invalid_activation_servers\", \"tests/functional/services/transfer/test_simple.py::test_create_endpoint\", \"tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs0-qs0]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs2-qs2]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs4-qs4]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs5-qs5]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo-foo]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo,bar-foo,bar]\", \"tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo ASC,bar-foo ASC,bar]\", \"tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_success\", \"tests/functional/services/transfer/test_task_submit.py::test_delete_submit_success\", \"tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]\", \"tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[delete]\", \"tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]\", \"tests/functional/test_login_manager.py::test_command_line_login_flower_manager_native\", \"tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists\", \"tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]\", \"tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs1]\", \"tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs5]\", \"tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]\", \"tests/functional/tokenstorage_v2/test_json_token_storage.py::test_file_does_not_exist\", \"tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_and_get_token_data_by_resource_server\", \"tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_token_response_with_namespace\", \"tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_store_and_get_token_data_by_resource_server\", \"tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_get_token_data\", \"tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_constructor_rejects_memory_db\", \"tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_store_and_get_token_data_by_resource_server\", \"tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_base_error_class\", \"tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[SearchAPIError]\", \"tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[GCSAPIError]\", \"tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_json_for_dict_body\", \"tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[foo-bar-add_params2-latin-1-foo-bar]\", \"tests/unit/authorizers/test_basic_authorizer.py::test_get_authorization_header\", \"tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\\\u30c6\\\\u30b9\\\\u30c8-\\\\u0434\\\\u0443\\\\u043c]\", \"tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers\", \"tests/unit/authorizers/test_client_credentials_authorizer.py::test_can_create_authorizer_from_mutable_scopes\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[with_new_refresh_token]\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_refresh_token_authorizer_rejects_auth_service_client\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_expired\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_expired\", \"tests/unit/errors/test_auth_errors.py::test_auth_error_get_args_simple\", \"tests/unit/errors/test_common_functionality.py::test_binary_content_property\", \"tests/unit/errors/test_common_functionality.py::test_raw_text_property_warns\", \"tests/unit/errors/test_common_functionality.py::test_get_args[text_data-response_headers0-401-Error-Unauthorized]\", \"tests/unit/errors/test_common_functionality.py::test_get_args[{-response_headers4-400-Error-Bad Request]\", \"tests/unit/errors/test_common_functionality.py::test_consent_required_info_str\", \"tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_message\", \"tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[True]\", \"tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[False]\", \"tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig0-NetworkError]\", \"tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]\", \"tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]\", \"tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]\", \"tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]\", \"tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments[application/vnd.api+json]\", \"tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments_with_common_code[application/json]\", \"tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_messages_from_various_fields[application/unknown+json]\", \"tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_root_as_errors_array_by_default[error_doc0]\", \"tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory\", \"tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory_expired_access_token\", \"tests/unit/experimental/globus_app/test_authorizer_factory.py::test_client_credentials_authorizer_factory_no_tokens\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_client_environment_mismatch\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[sqlite-SQLiteTokenStorage]\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[memory-MemoryTokenStorage]\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[CustomMemoryTokenStorage-CustomMemoryTokenStorage]\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_creates_consent_client\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_refresh\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[scope_collection2]\", \"tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[scope_collection3]\", \"tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_evaluates_root_scope_requirements\", \"tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_fails_non_identifiable_responses\", \"tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_consent_error[error_dict1-401]\", \"tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters2]\", \"tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error_csv[authorization_parameters0]\", \"tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_errors_from_multiple_errors\", \"tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_legacy_authorization_error_with_code\", \"tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[GlobusAuthRequirementsError-data0-'code' must be a string]\", \"tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[LegacyConsentRequiredTransferError-data2-'code' must be the string 'ConsentRequired']\", \"tests/unit/experimental/test_client_integration.py::test_client_inherits_environment_from_globus_app\", \"tests/unit/experimental/test_client_integration.py::test_client_environment_does_not_match_the_globus_app_environment\", \"tests/unit/experimental/test_client_integration.py::test_transfer_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_transfer_client_add_app_data_access_scope\", \"tests/unit/experimental/test_client_integration.py::test_transfer_client_add_app_data_access_scope_chaining\", \"tests/unit/experimental/test_client_integration.py::test_auth_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_groups_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_search_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_timer_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_specific_flow_client_default_scopes\", \"tests/unit/experimental/test_client_integration.py::test_gcs_client_default_scopes\", \"tests/unit/experimental/test_local_server.py::test_server[localhost?code=abc123-abc123]\", \"tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[my-cool-app-my-cool-app]\", \"tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[jonathan-jonathan]\", \"tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[PRN\\\\n]\", \"tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[nul]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs6-1.7.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs7-1.5.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs11-1.8.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[POSIXCollectionPolicies]\", \"tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[allow_guest_collections]\", \"tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[delete_protected]\", \"tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[sharing_users_deny]\", \"tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-allow_guest_collections]\", \"tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-delete_protected]\", \"tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[False-allow_guest_collections]\", \"tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-allow_guest_collections]\", \"tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-disable_anonymous_writes]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data2]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data5]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data4]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data8]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data10]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data3]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data10]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data11]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data0]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data3]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data5]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data9]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data13]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google drive-Google Drive]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google-----drive-Google Drive]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google_-drIVE -Google Drive]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[ GOOGLE DRIVE -Google Drive]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[BlackPearl]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[HPSS]\", \"tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[iRODS]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[StorageGatewayDocument]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStagingStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[AzureBlobStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[HPSSStoragePolicies]\", \"tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxx]\", \"tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]\", \"tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_string\", \"tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj0]\", \"tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj2]\", \"tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok\", \"tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[submission_id-foo]\", \"tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[skip_activation_check-True]\", \"tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_interval_only\", \"tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_formats_start[input_time1-2023-10-27T05:38:49+00:00]\", \"tests/unit/helpers/test_transfer.py::test_transfer_init_no_client\", \"tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args2]\", \"tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args3]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs2]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields\", \"tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args0-kwargs0]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args2-kwargs2]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args3]\", \"tests/unit/helpers/test_transfer.py::test_delete_iter_items\", \"tests/unit/helpers/test_transfer.py::test_transfer_iter_items\", \"tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[None-False-None]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[False-None-True]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[False-True-None]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]\", \"tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[exists-0]\", \"tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[size-1]\", \"tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[EXISTS-ValueError]\", \"tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-transfer]\", \"tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]\", \"tests/unit/helpers/test_transfer.py::test_add_filter_rule\", \"tests/unit/responses/test_activation_response.py::test_supports_web_activation\", \"tests/unit/responses/test_activation_response.py::test_always_activated\", \"tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups\", \"tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope1-resource_server_1]\", \"tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures\", \"tests/unit/responses/test_response.py::test_data\", \"tests/unit/responses/test_response.py::test_bool\", \"tests/unit/responses/test_response.py::test_len_array\", \"tests/unit/responses/test_response.py::test_iter_array_bad_data\", \"tests/unit/responses/test_response.py::test_text\", \"tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data\", \"tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data\", \"tests/unit/responses/test_response.py::test_http_status_code_on_response\", \"tests/unit/responses/test_response.py::test_http_reason_on_response\", \"tests/unit/responses/test_response.py::test_http_headers_from_response\", \"tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1]\", \"tests/unit/scopes/test_mutable_scope.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr\", \"tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo[]\", \"tests/unit/scopes/test_scope_builder.py::test_known_url_scopes\", \"tests/unit/scopes/test_scope_builder.py::test_scopebuilder_make_mutable_produces_same_strings\", \"tests/unit/scopes/test_scope_builder.py::test_flows_scopes_creation\", \"tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection1-scope1 scope2]\", \"tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection4-scope1 scope2 scope3 scope4]\", \"tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope1]\", \"tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection3-scope1 scope2 scope3]\", \"tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection5-bar]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_simple\", \"tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_optional\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo*[bar]]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *[bar]]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[* foo]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[[foo]]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar]baz]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[baz[bar]]]]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_very_large_cycles_quickly\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_fails_on_multiple_top_level_scopes\", \"tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo[]\", \"tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[bar[baz]] bar[*baz]-reserialized2]\", \"tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_treenode_repr\", \"tests/unit/test_auth_clients.py::test_service_client_does_not_require_client_id\", \"tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-AuthLoginClient]\", \"tests/unit/test_auth_clients.py::test_native_app_auth_client_rejects_authorizer\", \"tests/unit/test_auth_clients.py::test_confidential_app_auth_client_rejects_authorizer\", \"tests/unit/test_base_client.py::test_http_methods[delete-False]\", \"tests/unit/test_base_client.py::test_http_methods[post-True]\", \"tests/unit/test_base_client.py::test_handle_url_unsafe_chars\", \"tests/unit/test_base_client.py::test_base_path_matching_prefix[True-True]\", \"tests/unit/test_base_client.py::test_base_path_matching_prefix[False-False]\", \"tests/unit/test_base_client.py::test_app_integration\", \"tests/unit/test_base_client.py::test_add_app_scope_chaining\", \"tests/unit/test_config.py::test_get_ssl_verify[true-True]\", \"tests/unit/test_config.py::test_get_ssl_verify[0-False]\", \"tests/unit/test_config.py::test_get_ssl_verify[f-False]\", \"tests/unit/test_config.py::test_get_ssl_verify[False-False]\", \"tests/unit/test_config.py::test_get_ssl_verify[OFF-False]\", \"tests/unit/test_config.py::test_get_ssl_verify[/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert-/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert]\", \"tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]\", \"tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[1.0]\", \"tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[/workspace/globus-sdk-python/tests/unit/bogus.bogus]\", \"tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[1-1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[0-0.0]\", \"tests/unit/test_config.py::test_get_http_timeout[-1-None]\", \"tests/unit/test_config.py::test_get_http_timeout[t-ValueError]\", \"tests/unit/test_config.py::test_get_http_timeout_with_explicit_value\", \"tests/unit/test_config.py::test_get_environment_name\", \"tests/unit/test_config.py::test_env_config_registration\", \"tests/unit/test_config.py::test_service_url_from_env_var\", \"tests/unit/test_guards.py::test_list_of_guard[value0-str-True]\", \"tests/unit/test_guards.py::test_list_of_guard[value1-int-True]\", \"tests/unit/test_guards.py::test_list_of_guard[value4-list-True]\", \"tests/unit/test_guards.py::test_list_of_guard[value7-int-False]\", \"tests/unit/test_guards.py::test_list_of_guard[list-list-False]\", \"tests/unit/test_guards.py::test_list_of_guard[list-str-False]\", \"tests/unit/test_guards.py::test_list_of_guard[value11-list-False]\", \"tests/unit/test_guards.py::test_opt_guard[foo-str-True]\", \"tests/unit/test_guards.py::test_opt_guard[foo-str-False]\", \"tests/unit/test_guards.py::test_opt_guard[-int-False]\", \"tests/unit/test_guards.py::test_opt_list_guard[NoneType-str-False]\", \"tests/unit/test_lazy_imports.py::test_explicit_dir_func_works\", \"tests/unit/test_lazy_imports.py::test_attribute_error_on_bad_name\", \"tests/unit/test_missing_type.py::test_missing_sentinel_bools_as_false\", \"tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[list_runs]\", \"tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_collection_list]\", \"tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[scroll]\", \"tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_skipped_errors]\", \"tests/unit/test_specific_flows_client.py::test_specific_flow_client_class_errors_on_resource_server_access\", \"tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_scope_access\", \"tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_resource_server_access\", \"tests/unit/test_timers_client.py::test_create_job_rejects_transfer_timer\", \"tests/unit/test_tokenstorage.py::test_sqliteadapter_passes_connect_params\", \"tests/unit/test_utils.py::test_b64str_ascii\", \"tests/unit/test_utils.py::test_sha256string\", \"tests/unit/test_utils.py::test_slash_join[a-/b]\", \"tests/unit/test_utils.py::test_slash_join[a/b-]\", \"tests/unit/test_utils.py::test_classproperty_simple\", \"tests/unit/test_utils.py::test_safe_strseq_iter[value3-expected_result3]\", \"tests/unit/test_utils.py::test_check_uuid_ok[00000000-0000-0000-0000-000000000001]\", \"tests/unit/test_utils.py::test_check_uuid_fails_value[]\", \"tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[x=y,omicron=iota-x=y,omicron=iota]\", \"tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value2-x=y]\", \"tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value3-x=y,alpha=b01]\", \"tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[503]\", \"tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]\", \"tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_transient_error]\", \"tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-False]\", \"tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-tune_value4]\", \"tests/unit/transport/test_transport.py::test_transport_tuning[http_timeout-60-120]\", \"tests/unit/transport/test_transport.py::test_transport_tuning[retry_backoff-_exponential_backoff-_linear_backoff]\", \"tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-1]\", \"tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer\", \"tests/unit/transport/test_transport_authz_handling.py::test_will_null_authz_header_with_null_authorizer\", \"tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[foo]\", \"tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[bar]\", \"tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents1-expected_data1]\", \"tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[True-payload_contents0-expected_data0]\", \"tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[False-payload_contents5-expected_data5]\"]", "responses_create_params": {"input": [{"role": "user", "content": "# Use `all` scope in `FlowsClient.default_scope_requirements`\n\nThe `globus_sdk.FlowsClient` currently defines its `default_scope_requirements` as a list containing `view_flows` and `run_status`.\n\nThis configuration restricts the capabilities of a default-constructed `FlowsClient`. Specifically, it excludes the permissions required to create a Flow, limiting the client's utility out of the box.\n\nI propose updating the `default_scope_requirements` to use the `all` scope instead. This would ensure that the client has full capabilities by default, which seems to be the more appropriate choice for this service."}]}, "task_source": "scale_swe_example_agent"}
+{"instance_id": "data-apis_array-api-compat_pr276", "repo": "array-api-compat", "language": "python", "workdir": "/workspace/array-api-compat", "image_url": "aweaiteam/scaleswe:data-apis_array-api-compat_pr276", "patch": "diff --git a/array_api_compat/common/_aliases.py b/array_api_compat/common/_aliases.py\nindex d7e8ef2..35262d3 100644\n--- a/array_api_compat/common/_aliases.py\n+++ b/array_api_compat/common/_aliases.py\n@@ -363,10 +363,11 @@ def clip(\n \n # At least handle the case of Python integers correctly (see\n # https://github.com/numpy/numpy/pull/26892).\n- if type(min) is int and min <= wrapped_xp.iinfo(x.dtype).min:\n- min = None\n- if type(max) is int and max >= wrapped_xp.iinfo(x.dtype).max:\n- max = None\n+ if wrapped_xp.isdtype(x.dtype, \"integral\"):\n+ if type(min) is int and min <= wrapped_xp.iinfo(x.dtype).min:\n+ min = None\n+ if type(max) is int and max >= wrapped_xp.iinfo(x.dtype).max:\n+ max = None\n \n dev = device(x)\n if out is None:\n", "pre_commands": "git clean -fd -e '*.egg-info' -e '.tox' -e '.venv' && git checkout e14754ba0fe4c4cd51b6f45bb11a3c6609be3b5c -f && git reset --hard HEAD && git checkout -b scaleswe && git config user.email 'scaleswe@example.com' && git config user.name 'scaleswe-engine' && rm -f .git/packed-refs && find .git/refs/heads -type f ! -name 'scaleswe' -delete && rm -rf .git/refs/tags .git/refs/remotes && git reflog expire --expire=now --all && git gc --prune=now --aggressive\\n", "problem_statement": "# `clip` fails when `x` is a float array and `min`/`max` are Python integers\n\nI noticed that `xp.clip` raises an exception when the input array `x` has a floating-point data type, but the provided `min` or `max` arguments are standard Python integers.\n\n### Reproduction Steps\n\nHere is a minimal example using the numpy wrapper that demonstrates the crash:\n\n```python\nimport array_api_compat.numpy as xp\n\n# Create a 0-d floating point array\nx = xp.asarray(0.0)\n\n# Attempt to clip using Python integers for bounds\n# This currently raises an exception\nxp.clip(x, 0, 1) \n```\n\n### Expected Behavior\nThe function should clip the floating-point values against the integer bounds (likely by promoting the integers or handling the comparison gracefully), similar to standard NumPy behavior.\n\n### Actual Behavior\nThe code crashes/raises an exception when executing the `clip` function with these types.", "f2p_patch": "", "f2p_script": "import pytest\nimport sys\nfrom tests._helpers import import_\n\n# Libraries that use the common clip implementation (excluding dask.array)\nLIBRARIES = [\"numpy\", \"cupy\", \"torch\"]\n\n# Test 1: Basic floating-point array with Python int min and max\n@pytest.mark.parametrize(\"library\", LIBRARIES)\ndef test_clip_float_with_python_int(library):\n xp = import_(library, wrapper=True)\n x = xp.asarray(0.0, dtype=xp.float64)\n result = xp.clip(x, 0, 1)\n # Should not crash\n assert result.dtype == xp.float64\n assert float(result) == 0.0\n\n# Test 2: Float32 array with negative min and positive max\n@pytest.mark.parametrize(\"library\", LIBRARIES)\ndef test_clip_float32_with_int_bounds(library):\n xp = import_(library, wrapper=True)\n x = xp.asarray([-5.0, 0.0, 5.0], dtype=xp.float32)\n result = xp.clip(x, -2, 3)\n expected = xp.asarray([-2.0, 0.0, 3.0], dtype=xp.float32)\n assert xp.all(result == expected)\n\n# Test 3: Only min provided (max=None) with Python int\n@pytest.mark.parametrize(\"library\", LIBRARIES)\ndef test_clip_float_with_int_min_only(library):\n xp = import_(library, wrapper=True)\n x = xp.asarray([1.5, 2.5, 3.5], dtype=xp.float64)\n result = xp.clip(x, min=2, max=None)\n expected = xp.asarray([2.0, 2.5, 3.5], dtype=xp.float64)\n assert xp.all(result == expected)\n\n# Test 4: Only max provided (min=None) with Python int\n@pytest.mark.parametrize(\"library\", LIBRARIES)\ndef test_clip_float_with_int_max_only(library):\n xp = import_(library, wrapper=True)\n x = xp.asarray([1.5, 2.5, 3.5], dtype=xp.float64)\n result = xp.clip(x, min=None, max=2)\n expected = xp.asarray([1.5, 2.0, 2.0], dtype=xp.float64)\n assert xp.all(result == expected)\n\n# Test 5: Integer array with Python int min/max (should still work)\n@pytest.mark.parametrize(\"library\", LIBRARIES)\ndef test_clip_int_with_python_int(library):\n xp = import_(library, wrapper=True)\n x = xp.asarray([-10, 0, 10], dtype=xp.int64)\n result = xp.clip(x, -5, 5)\n expected = xp.asarray([-5, 0, 5], dtype=xp.int64)\n assert xp.all(result == expected)\n\nif __name__ == \"__main__\":\n sys.exit(pytest.main([\"-v\", __file__]))", "FAIL_TO_PASS": "[\"test_fail_to_pass.py::test_clip_float_with_python_int[numpy]\", \"test_fail_to_pass.py::test_clip_float_with_python_int[torch]\", \"test_fail_to_pass.py::test_clip_float32_with_int_bounds[numpy]\", \"test_fail_to_pass.py::test_clip_float32_with_int_bounds[torch]\", \"test_fail_to_pass.py::test_clip_float_with_int_min_only[numpy]\", \"test_fail_to_pass.py::test_clip_float_with_int_min_only[torch]\", \"test_fail_to_pass.py::test_clip_float_with_int_max_only[numpy]\", \"test_fail_to_pass.py::test_clip_float_with_int_max_only[torch]\"]", "PASS_TO_PASS": "[\"tests/test_all.py::test_all[dask.array]\", \"tests/test_array_namespace.py::test_array_namespace[numpy-None-None]\", \"tests/test_array_namespace.py::test_array_namespace[numpy-2021.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[numpy-2022.12-True]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-None-True]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-None-None]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-None]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-None]\", \"tests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-None]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-None-False]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-True]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-None]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-True]\", \"tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[jax.numpy-None-True]\", \"tests/test_array_namespace.py::test_array_namespace[jax.numpy-2021.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[jax.numpy-2022.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-True]\", \"tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[ndonnx-None-True]\", \"tests/test_array_namespace.py::test_array_namespace[ndonnx-None-None]\", \"tests/test_array_namespace.py::test_array_namespace[ndonnx-2023.12-False]\", \"tests/test_array_namespace.py::test_array_namespace[sparse-None-False]\", \"tests/test_array_namespace.py::test_array_namespace[sparse-2023.12-True]\", \"tests/test_array_namespace.py::test_jax_zero_gradient\", \"tests/test_common.py::test_is_xp_array[is_numpy_array-numpy]\", \"tests/test_common.py::test_is_xp_array[is_numpy_array-dask.array]\", \"tests/test_common.py::test_is_xp_array[is_numpy_array-ndonnx]\", \"tests/test_common.py::test_is_xp_array[is_cupy_array-torch]\", \"tests/test_common.py::test_is_xp_array[is_torch_array-numpy]\", \"tests/test_common.py::test_is_xp_array[is_torch_array-jax.numpy]\", \"tests/test_common.py::test_is_xp_array[is_torch_array-ndonnx]\", \"tests/test_common.py::test_is_xp_array[is_dask_array-sparse]\", \"tests/test_common.py::test_is_xp_array[is_jax_array-torch]\", \"tests/test_common.py::test_is_xp_array[is_jax_array-dask.array]\", \"tests/test_common.py::test_is_xp_array[is_jax_array-jax.numpy]\", \"tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-torch]\", \"tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-dask.array]\", \"tests/test_common.py::test_is_xp_array[is_ndonnx_array-sparse]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-numpy]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-torch]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-dask.array]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-jax.numpy]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-sparse]\", \"tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-ndonnx]\", \"tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-torch]\", \"tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-dask.array]\", \"tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-sparse]\", \"tests/test_common.py::test_is_xp_namespace[is_torch_namespace-torch]\", \"tests/test_common.py::test_is_xp_namespace[is_dask_namespace-jax.numpy]\", \"tests/test_common.py::test_is_xp_namespace[is_dask_namespace-sparse]\", \"tests/test_common.py::test_is_xp_namespace[is_dask_namespace-array_api_strict]\", \"tests/test_common.py::test_is_xp_namespace[is_dask_namespace-ndonnx]\", \"tests/test_common.py::test_is_xp_namespace[is_jax_namespace-dask.array]\", \"tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-torch]\", \"tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-torch]\", \"tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-sparse]\", \"tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-ndonnx]\", \"tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-dask.array]\", \"tests/test_common.py::test_xp_is_array_generics[torch]\", \"tests/test_common.py::test_is_writeable_array[torch]\", \"tests/test_common.py::test_is_writeable_array[jax.numpy]\", \"tests/test_common.py::test_is_writeable_array[sparse]\", \"tests/test_common.py::test_size[numpy]\", \"tests/test_common.py::test_size[array_api_strict]\", \"tests/test_common.py::test_size[sparse]\", \"tests/test_common.py::test_size_none[torch]\", \"tests/test_common.py::test_is_lazy_array[torch]\", \"tests/test_common.py::test_is_lazy_array_nan_size[shape1]\", \"tests/test_common.py::test_is_lazy_array_bool_raises[TypeError]\", \"tests/test_common.py::test_is_lazy_array_bool_raises[AssertionError]\", \"tests/test_common.py::test_is_array_any_object[is_numpy_array]\", \"tests/test_common.py::test_is_array_any_object[is_torch_array]\", \"tests/test_common.py::test_is_array_any_object[is_jax_array]\", \"tests/test_common.py::test_is_array_any_object[is_ndonnx_array]\", \"tests/test_common.py::test_device[torch]\", \"tests/test_common.py::test_device[array_api_strict]\", \"tests/test_common.py::test_device[jax.numpy]\", \"tests/test_common.py::test_asarray_cross_library[numpy-dask.array]\", \"tests/test_common.py::test_asarray_cross_library[torch-dask.array]\", \"tests/test_common.py::test_asarray_cross_library[jax.numpy-dask.array]\", \"tests/test_common.py::test_asarray_cross_library[ndonnx-ndonnx]\", \"tests/test_dask.py::test_unary_ops_no_compute\", \"tests/test_dask.py::test_astype_no_compute[False]\", \"tests/test_dask.py::test_sort_argsort_chunks[sort-1]\", \"tests/test_dask.py::test_sort_argsort_chunk_size[argsort-shape0-auto]\", \"tests/test_dask.py::test_sort_argsort_meta[argsort]\", \"tests/test_isdtype.py::test_isdtype_spec_dtypes[dask.array]\", \"tests/test_isdtype.py::test_isdtype_additional_dtypes[float16-numpy]\", \"tests/test_isdtype.py::test_isdtype_additional_dtypes[complex256-torch]\", \"tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-numpy]\", \"tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-torch]\", \"tests/test_jax.py::test_device_jit[3]\", \"tests/test_no_dependencies.py::test_numpy_dependency[jax.numpy]\", \"tests/test_no_dependencies.py::test_numpy_dependency[sparse]\", \"tests/test_vendoring.py::test_vendoring_torch\", \"tests/test_vendoring.py::test_vendoring_dask\"]", "responses_create_params": {"input": [{"role": "user", "content": "# `clip` fails when `x` is a float array and `min`/`max` are Python integers\n\nI noticed that `xp.clip` raises an exception when the input array `x` has a floating-point data type, but the provided `min` or `max` arguments are standard Python integers.\n\n### Reproduction Steps\n\nHere is a minimal example using the numpy wrapper that demonstrates the crash:\n\n```python\nimport array_api_compat.numpy as xp\n\n# Create a 0-d floating point array\nx = xp.asarray(0.0)\n\n# Attempt to clip using Python integers for bounds\n# This currently raises an exception\nxp.clip(x, 0, 1) \n```\n\n### Expected Behavior\nThe function should clip the floating-point values against the integer bounds (likely by promoting the integers or handling the comparison gracefully), similar to standard NumPy behavior.\n\n### Actual Behavior\nThe code crashes/raises an exception when executing the `clip` function with these types."}]}, "task_source": "scale_swe_example_agent"}
+{"instance_id": "globus_globus-sdk-python_pr680", "repo": "globus-sdk-python", "language": "python", "workdir": "/workspace/globus-sdk-python", "image_url": "aweaiteam/scaleswe:globus_globus-sdk-python_pr680", "patch": "diff --git a/changelog.d/20230207_032037_sirosen_remove_cast_one_of_many.rst b/changelog.d/20230207_032037_sirosen_remove_cast_one_of_many.rst\nnew file mode 100644\nindex 00000000..31498042\n--- /dev/null\n+++ b/changelog.d/20230207_032037_sirosen_remove_cast_one_of_many.rst\n@@ -0,0 +1,6 @@\n+* ``globus_sdk.ArrayResponse`` and ``globus_sdk.IterableResponse`` are now\n+ available as names. Previously, these were only importable from\n+ ``globus_sdk.response`` (:pr:`NUMBER`)\n+\n+* ``ArrayResponse`` and ``IterableResponse`` have better error behaviors when\n+ the API data does not match their expected types (:pr:`NUMBER`)\ndiff --git a/src/globus_sdk/__init__.py b/src/globus_sdk/__init__.py\nindex 9cdddd58..95d8e8c8 100644\n--- a/src/globus_sdk/__init__.py\n+++ b/src/globus_sdk/__init__.py\n@@ -46,6 +46,8 @@ _LAZY_IMPORT_TABLE = {\n },\n \"response\": {\n \"GlobusHTTPResponse\",\n+ \"IterableResponse\",\n+ \"ArrayResponse\",\n },\n \"services.auth\": {\n \"AuthAPIError\",\n@@ -140,6 +142,8 @@ if t.TYPE_CHECKING or sys.version_info < (3, 7):\n from .local_endpoint import LocalGlobusConnectPersonal\n from .local_endpoint import LocalGlobusConnectServer\n from .response import GlobusHTTPResponse\n+ from .response import IterableResponse\n+ from .response import ArrayResponse\n from .services.auth import AuthAPIError\n from .services.auth import AuthClient\n from .services.auth import ConfidentialAppAuthClient\n@@ -233,6 +237,7 @@ __all__ = (\n \"AccessTokenAuthorizer\",\n \"ActivationRequirementsResponse\",\n \"ActiveScaleStoragePolicies\",\n+ \"ArrayResponse\",\n \"AuthAPIError\",\n \"AuthClient\",\n \"AzureBlobStoragePolicies\",\n@@ -276,6 +281,7 @@ __all__ = (\n \"IdentityMap\",\n \"IrodsStoragePolicies\",\n \"IterableFlowsResponse\",\n+ \"IterableResponse\",\n \"IterableTransferResponse\",\n \"LocalGlobusConnectPersonal\",\n \"LocalGlobusConnectServer\",\ndiff --git a/src/globus_sdk/_generate_init.py b/src/globus_sdk/_generate_init.py\nindex 42f386b2..824ac9f6 100755\n--- a/src/globus_sdk/_generate_init.py\n+++ b/src/globus_sdk/_generate_init.py\n@@ -68,7 +68,14 @@ _LAZY_IMPORT_TABLE: t.List[t.Tuple[str, t.Tuple[str, ...]]] = [\n \"LocalGlobusConnectServer\",\n ),\n ),\n- (\"response\", (\"GlobusHTTPResponse\",)),\n+ (\n+ \"response\",\n+ (\n+ \"GlobusHTTPResponse\",\n+ \"IterableResponse\",\n+ \"ArrayResponse\",\n+ ),\n+ ),\n (\n \"services.auth\",\n (\ndiff --git a/src/globus_sdk/response.py b/src/globus_sdk/response.py\nindex 60176f6e..7f19efe5 100644\n--- a/src/globus_sdk/response.py\n+++ b/src/globus_sdk/response.py\n@@ -201,7 +201,12 @@ class IterableResponse(GlobusHTTPResponse):\n super().__init__(response, client)\n \n def __iter__(self) -> t.Iterator[t.Mapping[t.Any, t.Any]]:\n- return iter(t.cast(t.Mapping[t.Any, t.Any], self)[self.iter_key])\n+ if not isinstance(self.data, dict):\n+ raise TypeError(\n+ \"Cannot iterate on IterableResponse data when \"\n+ f\"type is '{type(self.data).__name__}'\"\n+ )\n+ return iter(self.data[self.iter_key])\n \n \n class ArrayResponse(GlobusHTTPResponse):\n@@ -209,7 +214,12 @@ class ArrayResponse(GlobusHTTPResponse):\n data of the response is a JSON array.\"\"\"\n \n def __iter__(self) -> t.Iterator[t.Any]:\n- return iter(t.cast(t.List[t.Any], self.data))\n+ if not isinstance(self.data, list):\n+ raise TypeError(\n+ \"Cannot iterate on ArrayResponse data when \"\n+ f\"type is '{type(self.data).__name__}'\"\n+ )\n+ return iter(self.data)\n \n def __len__(self) -> int:\n \"\"\"\n@@ -217,6 +227,7 @@ class ArrayResponse(GlobusHTTPResponse):\n \"\"\"\n if not isinstance(self.data, collections.abc.Sequence):\n raise TypeError(\n- f\"Cannot take len() on data when type is '{type(self.data).__name__}'\"\n+ \"Cannot take len() on ArrayResponse data when \"\n+ f\"type is '{type(self.data).__name__}'\"\n )\n return len(self.data)\ndiff --git a/tests/unit/responses/test_response.py b/tests/unit/responses/test_response.py\nindex f89da981..d57d36c1 100644\n--- a/tests/unit/responses/test_response.py\n+++ b/tests/unit/responses/test_response.py\n@@ -164,7 +164,7 @@ def test_bool(dict_response, list_response):\n assert bool(null.r) is False\n \n \n-def test_len(list_response):\n+def test_len_array(list_response):\n array = ArrayResponse(list_response.r)\n assert len(array) == len(list_response.data)\n \n@@ -174,20 +174,40 @@ def test_len(list_response):\n assert len(empty_array) == 0\n \n \n-def test_len_bad_data(dict_response):\n+def test_len_array_bad_data(dict_response):\n null_array = ArrayResponse(_mk_json_response(None).r)\n with pytest.raises(\n- TypeError, match=re.escape(\"Cannot take len() on data when type is 'NoneType'\")\n+ TypeError,\n+ match=re.escape(\n+ \"Cannot take len() on ArrayResponse data when type is 'NoneType'\"\n+ ),\n ):\n len(null_array)\n \n dict_array = ArrayResponse(dict_response.r)\n with pytest.raises(\n- TypeError, match=re.escape(\"Cannot take len() on data when type is 'dict'\")\n+ TypeError,\n+ match=re.escape(\"Cannot take len() on ArrayResponse data when type is 'dict'\"),\n ):\n len(dict_array)\n \n \n+def test_iter_array_bad_data(dict_response):\n+ null_array = ArrayResponse(_mk_json_response(None).r)\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'NoneType'\"),\n+ ):\n+ list(null_array)\n+\n+ dict_array = ArrayResponse(dict_response.r)\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'dict'\"),\n+ ):\n+ list(dict_array)\n+\n+\n def test_get(dict_response, list_response, text_http_response):\n \"\"\"\n Gets individual values from dict response, confirms results\n@@ -261,6 +281,28 @@ def test_iterable_response_using_iter_key():\n assert list(withkey) == [3, 4]\n \n \n+def test_iterable_response_errors_on_non_dict_data(list_response):\n+ class MyIterableResponse(IterableResponse):\n+ default_iter_key = \"default_iter\"\n+\n+ list_iterable = MyIterableResponse(list_response.r)\n+ null_iterable = MyIterableResponse(_mk_json_response(None).r)\n+\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on IterableResponse data when type is 'list'\"),\n+ ):\n+ list(list_iterable)\n+\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\n+ \"Cannot iterate on IterableResponse data when type is 'NoneType'\"\n+ ),\n+ ):\n+ list(null_iterable)\n+\n+\n def test_can_iter_array_response(list_response):\n arr = ArrayResponse(list_response.r)\n # sorted/reversed are just example stdlib functions which use iter\n", "pre_commands": "git clean -fd -e '*.egg-info' -e '.tox' -e '.venv' && git checkout 22961174e458637c0c8cc147fa1bee3b1a5bfa3a -f && git reset --hard HEAD && git checkout -b scaleswe && git config user.email 'scaleswe@example.com' && git config user.name 'scaleswe-engine' && rm -f .git/packed-refs && find .git/refs/heads -type f ! -name 'scaleswe' -delete && rm -rf .git/refs/tags .git/refs/remotes && git reflog expire --expire=now --all && git gc --prune=now --aggressive\\n", "problem_statement": "# Title: Expose `ArrayResponse` and `IterableResponse` at top-level and improve runtime type validation\n\n## Description\nI would like to propose a few improvements to the response classes in the SDK to improve usability and robustness.\n\n### 1. Top-Level Exports\nCurrently, `GlobusHTTPResponse` is available as a top-level export in `globus_sdk`, but `ArrayResponse` and `IterableResponse` are not. They currently must be imported specifically from `globus_sdk.response`.\n\nIt would be beneficial to expose `ArrayResponse` and `IterableResponse` directly under `globus_sdk`. This would make imports cleaner and simplify writing type annotations for SDK consumers.\n\n### 2. Improved Error Handling for Invalid Data Types\nCurrently, if the data wrapped by `ArrayResponse` or `IterableResponse` does not match the expected JSON structure (e.g., if `ArrayResponse` wraps a `dict` or `None` instead of a `list`), the SDK relies on standard Python behavior when iterating or checking length. This often results in generic runtime errors that may not clearly indicate the source of the problem.\n\nI propose updating these classes to explicitly check the type of the underlying data when operations like `__iter__` or `__len__` are performed. If the data is not of the expected type (e.g., `list` for `ArrayResponse`, `dict` for `IterableResponse`), the SDK should raise a descriptive `TypeError` indicating the mismatch.\n\n**Examples of desired behavior:**\n* Calling `len()` on an `ArrayResponse` that wraps `None` should raise a specific `TypeError` stating that `len()` cannot be taken on `NoneType` data, rather than a generic Python error.\n* Attempting to iterate over an `IterableResponse` that wraps a `list` (instead of a `dict`) should explicitly fail with a `TypeError` regarding the invalid data type.", "f2p_patch": "diff --git a/tests/unit/responses/test_response.py b/tests/unit/responses/test_response.py\nindex f89da981..d57d36c1 100644\n--- a/tests/unit/responses/test_response.py\n+++ b/tests/unit/responses/test_response.py\n@@ -164,7 +164,7 @@ def test_bool(dict_response, list_response):\n assert bool(null.r) is False\n \n \n-def test_len(list_response):\n+def test_len_array(list_response):\n array = ArrayResponse(list_response.r)\n assert len(array) == len(list_response.data)\n \n@@ -174,20 +174,40 @@ def test_len(list_response):\n assert len(empty_array) == 0\n \n \n-def test_len_bad_data(dict_response):\n+def test_len_array_bad_data(dict_response):\n null_array = ArrayResponse(_mk_json_response(None).r)\n with pytest.raises(\n- TypeError, match=re.escape(\"Cannot take len() on data when type is 'NoneType'\")\n+ TypeError,\n+ match=re.escape(\n+ \"Cannot take len() on ArrayResponse data when type is 'NoneType'\"\n+ ),\n ):\n len(null_array)\n \n dict_array = ArrayResponse(dict_response.r)\n with pytest.raises(\n- TypeError, match=re.escape(\"Cannot take len() on data when type is 'dict'\")\n+ TypeError,\n+ match=re.escape(\"Cannot take len() on ArrayResponse data when type is 'dict'\"),\n ):\n len(dict_array)\n \n \n+def test_iter_array_bad_data(dict_response):\n+ null_array = ArrayResponse(_mk_json_response(None).r)\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'NoneType'\"),\n+ ):\n+ list(null_array)\n+\n+ dict_array = ArrayResponse(dict_response.r)\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'dict'\"),\n+ ):\n+ list(dict_array)\n+\n+\n def test_get(dict_response, list_response, text_http_response):\n \"\"\"\n Gets individual values from dict response, confirms results\n@@ -261,6 +281,28 @@ def test_iterable_response_using_iter_key():\n assert list(withkey) == [3, 4]\n \n \n+def test_iterable_response_errors_on_non_dict_data(list_response):\n+ class MyIterableResponse(IterableResponse):\n+ default_iter_key = \"default_iter\"\n+\n+ list_iterable = MyIterableResponse(list_response.r)\n+ null_iterable = MyIterableResponse(_mk_json_response(None).r)\n+\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\"Cannot iterate on IterableResponse data when type is 'list'\"),\n+ ):\n+ list(list_iterable)\n+\n+ with pytest.raises(\n+ TypeError,\n+ match=re.escape(\n+ \"Cannot iterate on IterableResponse data when type is 'NoneType'\"\n+ ),\n+ ):\n+ list(null_iterable)\n+\n+\n def test_can_iter_array_response(list_response):\n arr = ArrayResponse(list_response.r)\n # sorted/reversed are just example stdlib functions which use iter\n", "f2p_script": "import json\nimport re\nfrom unittest import mock\nimport pytest\nimport requests\nfrom globus_sdk.response import ArrayResponse, IterableResponse, GlobusHTTPResponse\n\ndef _response(data=None, encoding=\"utf-8\", headers=None, status: int = 200):\n r = requests.Response()\n is_json = isinstance(data, (dict, list))\n datastr = json.dumps(data) if is_json else data\n if datastr is not None:\n if isinstance(datastr, str):\n r._content = datastr.encode(\"utf-8\")\n r.encoding = \"utf-8\"\n else:\n r._content = datastr\n r.encoding = \"ISO-8559-1\"\n if headers:\n r.headers.update(headers)\n elif is_json:\n r.headers[\"Content-Type\"] = \"application/json\"\n r.status_code = status\n r.reason = {200: \"OK\", 404: \"Not Found\"}.get(status, \"Unknown\")\n return r\n\ndef _mk_json_response(data):\n json_response = _response(data)\n return (data, GlobusHTTPResponse(json_response, client=mock.Mock()))\n\ndef test_arrayresponse_iter_dict_data():\n \"\"\"ArrayResponse with dict data should raise TypeError with clear message.\"\"\"\n data, r = _mk_json_response({\"foo\": \"bar\"})\n array_response = ArrayResponse(r)\n with pytest.raises(\n TypeError,\n match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'dict'\")\n ):\n list(array_response)\n\ndef test_arrayresponse_iter_null_data():\n \"\"\"ArrayResponse with null data should raise TypeError with clear message.\"\"\"\n data, r = _mk_json_response(None)\n array_response = ArrayResponse(r)\n with pytest.raises(\n TypeError,\n match=re.escape(\"Cannot iterate on ArrayResponse data when type is 'NoneType'\")\n ):\n list(array_response)\n\ndef test_iterableresponse_iter_list_data():\n \"\"\"IterableResponse with list data should raise TypeError with clear message.\"\"\"\n class MyIterableResponse(IterableResponse):\n default_iter_key = \"items\"\n data, r = _mk_json_response([1, 2, 3])\n iter_response = MyIterableResponse(r)\n with pytest.raises(\n TypeError,\n match=re.escape(\"Cannot iterate on IterableResponse data when type is 'list'\")\n ):\n list(iter_response)\n\ndef test_arrayresponse_len_error_message():\n \"\"\"ArrayResponse.__len__ error message should include class name.\"\"\"\n data, r = _mk_json_response({\"foo\": \"bar\"})\n array_response = ArrayResponse(r)\n with pytest.raises(\n TypeError,\n match=re.escape(\"Cannot take len() on ArrayResponse data when type is 'dict'\")\n ):\n len(array_response)\n\ndef test_iterableresponse_iter_dict_without_key():\n \"\"\"IterableResponse with dict but missing iter_key should raise KeyError.\"\"\"\n class MyIterableResponse(IterableResponse):\n default_iter_key = \"items\"\n data, r = _mk_json_response({\"foo\": \"bar\"})\n iter_response = MyIterableResponse(r)\n with pytest.raises(KeyError):\n list(iter_response)\n\ndef test_arrayresponse_iter_valid_list():\n \"\"\"ArrayResponse with valid list data should iterate successfully.\"\"\"\n data, r = _mk_json_response([1, 2, 3])\n array_response = ArrayResponse(r)\n result = list(array_response)\n assert result == [1, 2, 3]\n\ndef test_iterableresponse_iter_valid_dict():\n \"\"\"IterableResponse with valid dict and iter_key should iterate successfully.\"\"\"\n class MyIterableResponse(IterableResponse):\n default_iter_key = \"items\"\n data, r = _mk_json_response({\"items\": [4, 5, 6]})\n iter_response = MyIterableResponse(r)\n result = list(iter_response)\n assert result == [4, 5, 6]\n\nif __name__ == \"__main__\":\n import sys\n sys.exit(pytest.main([\"-v\", __file__]))", "FAIL_TO_PASS": "[\"tests/unit/responses/test_response.py::test_len_array_bad_data\", \"tests/unit/responses/test_response.py::test_iter_array_bad_data\", \"tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data\"]", "PASS_TO_PASS": "[\"tests/functional/base_client/test_advanced_http_options.py::test_allow_redirects_false\", \"tests/functional/base_client/test_encodings.py::test_cannot_encode_dict_as_text\", \"tests/functional/base_client/test_encodings.py::test_cannot_encode_with_unknown_encoding\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[502]\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_disabled_via_tune\", \"tests/functional/base_client/test_retry_behavior.py::test_retry_limit[6-True]\", \"tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi/]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[]\", \"tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data\", \"tests/functional/local_endpoint/test_server.py::test_info_dict_from_non_json_object_file_is_none\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential\", \"tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_confidential\", \"tests/functional/services/auth/test_id_token.py::test_decode_id_token_with_saved_oidc_config\", \"tests/functional/services/auth/test_id_token.py::test_invalid_decode_id_token_usage\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_add\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_keyerror\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_get_with_default\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_del\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-username]\", \"tests/functional/services/auth/test_identity_map.py::test_identity_map_batch_limit\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[globus@globus.org]\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[usernames2]\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[False-false]\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames1]\", \"tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[ids1]\", \"tests/functional/services/flows/test_flow_crud.py::test_get_flow\", \"tests/functional/services/flows/test_flow_crud.py::test_delete_flow\", \"tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-bar-foo]\", \"tests/functional/services/flows/test_flow_crud.py::test_list_flows_paginated[False]\", \"tests/functional/services/gcs/test_collections.py::test_get_collection_includes_sideloaded_data\", \"tests/functional/services/gcs/test_collections.py::test_get_collection_invalid_datatype_type\", \"tests/functional/services/gcs/test_get_collection_list.py::test_error_parsing_forbidden\", \"tests/functional/services/gcs/test_scope_helpers.py::test_manage_collections_scope_helper\", \"tests/functional/services/gcs/test_scope_helpers.py::test_data_access_scope_helper\", \"tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]\", \"tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[include_param3]\", \"tests/functional/services/gcs/test_user_credential.py::test_create_user_credential\", \"tests/functional/services/gcs/test_user_credential.py::test_delete_user_credential\", \"tests/functional/services/groups/test_get_group.py::test_get_group_include[policies]\", \"tests/functional/services/groups/test_get_group.py::test_get_group_include[policies,memberships]\", \"tests/functional/services/groups/test_get_my_groups.py::test_get_my_groups\", \"tests/functional/services/groups/test_group_memberships.py::test_approve_pending\", \"tests/functional/services/groups/test_update_group.py::test_update_group\", \"tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]\", \"tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc1]\", \"tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc0]\", \"tests/functional/services/search/test_search_roles.py::test_search_role_list\", \"tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]\", \"tests/functional/services/timer/test_jobs.py::test_create_job[interval0-2022-04-05T06:00:00]\", \"tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]\", \"tests/functional/services/timer/test_jobs.py::test_update_job\", \"tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults\", \"tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_non_paginated\", \"tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]\", \"tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]\", \"tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]\", \"tests/functional/services/transfer/test_simple.py::test_get_endpoint\", \"tests/functional/services/transfer/test_simple.py::test_create_endpoint\", \"tests/functional/services/transfer/test_simple.py::test_create_endpoint_invalid_activation_servers\", \"tests/functional/services/transfer/test_simple.py::test_autoactivation\", \"tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs0-qs0]\", \"tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs4-qs4]\", \"tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs6-qs6]\", \"tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs7-qs7]\", \"tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]\", \"tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[transfer]\", \"tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]\", \"tests/functional/services/transfer/test_task_wait.py::test_task_wait_success_case\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-foo]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-paramvalue4]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-foo]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_local_user-foouser]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]\", \"tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list\", \"tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists\", \"tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data\", \"tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]\", \"tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data\", \"tests/functional/tokenstorage/test_sqlite.py::test_iter_namespaces\", \"tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-AuthClient]\", \"tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-NativeAppAuthClient]\", \"tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-NativeAppAuthClient]\", \"tests/unit/test_base_client.py::test_set_app_name[init]\", \"tests/unit/test_base_client.py::test_http_methods[patch-True]\", \"tests/unit/test_config.py::test_get_ssl_verify[YES-True]\", \"tests/unit/test_config.py::test_get_ssl_verify[true-True]\", \"tests/unit/test_config.py::test_get_ssl_verify[True-True1]\", \"tests/unit/test_config.py::test_get_ssl_verify[False-False0]\", \"tests/unit/test_config.py::test_get_ssl_verify[NO-False]\", \"tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]\", \"tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[1.0 -1.0]\", \"tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]\", \"tests/unit/test_config.py::test_service_url_overrides\", \"tests/unit/test_exc.py::test_get_args_transfer\", \"tests/unit/test_exc.py::test_authz_params_info_containing_session_message\", \"tests/unit/test_exc.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]\", \"tests/unit/test_exc.py::test_requests_err_wrappers[orig3-GlobusConnectionError]\", \"tests/unit/test_exc.py::test_convert_requests_exception[orig1-GlobusTimeoutError]\", \"tests/unit/test_exc.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]\", \"tests/unit/test_exc.py::test_convert_requests_exception[orig3-GlobusConnectionError]\", \"tests/unit/test_exc.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]\", \"tests/unit/test_exc.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]\", \"tests/unit/test_imports.py::test_import_str[from globus_sdk import *]\", \"tests/unit/test_imports.py::test_import_str[from globus_sdk import TransferClient, AuthClient, SearchClient]\", \"tests/unit/test_paging.py::test_has_next_paginator\", \"tests/unit/test_scopes.py::test_known_scopes\", \"tests/unit/test_scopes.py::test_scopebuilder_str\", \"tests/unit/test_scopes.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr[MutableScope]\", \"tests/unit/test_scopes.py::test_flows_scopes_creation\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo*]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar*]]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo * ]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[* foo]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[[bar]]]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo]]\", \"tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar]]\", \"tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar]]\", \"tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo bar]\", \"tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar[baz]]]\", \"tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[url-example.globus.org]\", \"tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[bar]]\", \"tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[]\", \"tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo]]\", \"tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo[bar]]\", \"tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo bar]\", \"tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-foo-True]\", \"tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*bar-False]\", \"tests/unit/test_scopes.py::test_scope_contains_simple_cases[*foo-bar-False]\", \"tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*foo-False]\", \"tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[*bar]-foo[bar[*baz]]-True]\", \"tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[baz bar]-foo[bar[baz] baz]-True]\", \"tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[bar baz]-foo[bar[baz] baz buzz]-True]\", \"tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]\", \"tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[*transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]\", \"tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_config\", \"tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version\", \"tests/unit/test_utils.py::test_slash_join[a-b]\", \"tests/unit/test_utils.py::test_slash_join[a/-b]\", \"tests/unit/test_utils.py::test_slash_join[a/-/b]\", \"tests/unit/authorizers/test_access_token_authorizer.py::test_get_authorization_header\", \"tests/unit/authorizers/test_access_token_authorizer.py::test_handle_missing_authorization\", \"tests/unit/authorizers/test_basic_authorizer.py::test_handle_missing_authorization\", \"tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\\\u0434\\\\u0443\\\\u043c-pass]\", \"tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[with_new_refresh_token]\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]\", \"tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_init\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_ok\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_token\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration\", \"tests/unit/authorizers/test_renewing_authorizer.py::test_handle_missing_authorization\", \"tests/unit/helpers/test_search.py::test_init\", \"tests/unit/helpers/test_search.py::test_set_method[q]\", \"tests/unit/helpers/test_search.py::test_set_method[advanced]\", \"tests/unit/helpers/test_search.py::test_add_filter\", \"tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok\", \"tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args2]\", \"tests/unit/helpers/test_transfer.py::test_transfer_add_item\", \"tests/unit/helpers/test_transfer.py::test_transfer_add_symlink_item\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_client\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs1]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs3]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields\", \"tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args1-kwargs1]\", \"tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]\", \"tests/unit/helpers/test_transfer.py::test_transfer_iter_items\", \"tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[None-False-True]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[True-None-False]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[True-True-False]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]\", \"tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]\", \"tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[mtime-2]\", \"tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[2-2]\", \"tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[checksum-3]\", \"tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[hash-ValueError]\", \"tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]\", \"tests/unit/helpers/test_transfer.py::test_add_filter_rule\", \"tests/unit/helpers/test_transfer.py::test_ls_format_filter[foo-foo]\", \"tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter1-foo:bar/a:b,c]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs3-1.2.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]\", \"tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[GoogleCloudStorageCollectionPolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_policy_document_conversion\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleDriveStoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[S3StoragePolicies]\", \"tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]\", \"tests/unit/responses/test_activation_response.py::test_expires_at\", \"tests/unit/responses/test_activation_response.py::test_supports_auto_activation[False]\", \"tests/unit/responses/test_activation_response.py::test_supports_web_activation\", \"tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups\", \"tests/unit/responses/test_oauth_token_response.py::test_stringify\", \"tests/unit/responses/test_oauth_token_response.py::test_stringify_dependent_tokens\", \"tests/unit/responses/test_response.py::test_data\", \"tests/unit/responses/test_response.py::test_str\", \"tests/unit/responses/test_response.py::test_text_response_repr_and_str_contain_raw_data\", \"tests/unit/responses/test_response.py::test_getitem\", \"tests/unit/responses/test_response.py::test_contains\", \"tests/unit/responses/test_response.py::test_bool\", \"tests/unit/responses/test_response.py::test_len_array\", \"tests/unit/responses/test_response.py::test_get\", \"tests/unit/responses/test_response.py::test_text\", \"tests/unit/responses/test_response.py::test_no_content_type_header\", \"tests/unit/responses/test_response.py::test_client_required_with_requests_response\", \"tests/unit/responses/test_response.py::test_client_forbidden_when_wrapping\", \"tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data\", \"tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response\", \"tests/unit/responses/test_response.py::test_iterable_response_using_iter_key\", \"tests/unit/responses/test_response.py::test_can_iter_array_response\", \"tests/unit/responses/test_response.py::test_http_status_code_on_response\", \"tests/unit/responses/test_response.py::test_http_reason_on_response\", \"tests/unit/responses/test_response.py::test_http_headers_from_response\", \"tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_retry_after_header]\", \"tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_should_retry_explicit_on_first_check\", \"tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_fallthrough_to_false\", \"tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer\"]", "responses_create_params": {"input": [{"role": "user", "content": "# Title: Expose `ArrayResponse` and `IterableResponse` at top-level and improve runtime type validation\n\n## Description\nI would like to propose a few improvements to the response classes in the SDK to improve usability and robustness.\n\n### 1. Top-Level Exports\nCurrently, `GlobusHTTPResponse` is available as a top-level export in `globus_sdk`, but `ArrayResponse` and `IterableResponse` are not. They currently must be imported specifically from `globus_sdk.response`.\n\nIt would be beneficial to expose `ArrayResponse` and `IterableResponse` directly under `globus_sdk`. This would make imports cleaner and simplify writing type annotations for SDK consumers.\n\n### 2. Improved Error Handling for Invalid Data Types\nCurrently, if the data wrapped by `ArrayResponse` or `IterableResponse` does not match the expected JSON structure (e.g., if `ArrayResponse` wraps a `dict` or `None` instead of a `list`), the SDK relies on standard Python behavior when iterating or checking length. This often results in generic runtime errors that may not clearly indicate the source of the problem.\n\nI propose updating these classes to explicitly check the type of the underlying data when operations like `__iter__` or `__len__` are performed. If the data is not of the expected type (e.g., `list` for `ArrayResponse`, `dict` for `IterableResponse`), the SDK should raise a descriptive `TypeError` indicating the mismatch.\n\n**Examples of desired behavior:**\n* Calling `len()` on an `ArrayResponse` that wraps `None` should raise a specific `TypeError` stating that `len()` cannot be taken on `NoneType` data, rather than a generic Python error.\n* Attempting to iterate over an `IterableResponse` that wraps a `list` (instead of a `dict`) should explicitly fail with a `TypeError` regarding the invalid data type."}]}, "task_source": "scale_swe_example_agent"}
+{"instance_id": "globus_globus-sdk-python_pr568", "repo": "globus-sdk-python", "language": "python", "workdir": "/workspace/globus-sdk-python", "image_url": "aweaiteam/scaleswe:globus_globus-sdk-python_pr568", "patch": "diff --git a/changelog.d/20220526_173626_sirosen_scopebuilder_strings.rst b/changelog.d/20220526_173626_sirosen_scopebuilder_strings.rst\nnew file mode 100644\nindex 00000000..d4d79767\n--- /dev/null\n+++ b/changelog.d/20220526_173626_sirosen_scopebuilder_strings.rst\n@@ -0,0 +1,2 @@\n+* ``ScopeBuilder`` objects now implement ``__str__`` for easy viewing.\n+ For example, ``print(globus_sdk.TransferClient.scopes)`` (:pr:`NUMBER`)\ndiff --git a/src/globus_sdk/scopes.py b/src/globus_sdk/scopes.py\nindex cb02c1fa..862d6e87 100644\n--- a/src/globus_sdk/scopes.py\n+++ b/src/globus_sdk/scopes.py\n@@ -1,4 +1,4 @@\n-from typing import Dict, Iterable, Iterator, List, Union\n+from typing import Dict, Iterable, Iterator, List, Tuple, Union\n \n from globus_sdk import utils\n \n@@ -110,6 +110,8 @@ class ScopeBuilder:\n :type known_url_scopes: list of str, optional\n \"\"\"\n \n+ _classattr_scope_names: List[str] = []\n+\n def __init__(\n self,\n resource_server: str,\n@@ -128,11 +130,14 @@ class ScopeBuilder:\n if known_url_scopes is not None\n else []\n )\n+ self._known_scope_names: List[str] = []\n if self._known_scopes:\n for scope_name in self._known_scopes:\n+ self._known_scope_names.append(scope_name)\n setattr(self, scope_name, self.urn_scope_string(scope_name))\n if self._known_url_scopes:\n for scope_name in self._known_url_scopes:\n+ self._known_scope_names.append(scope_name)\n setattr(self, scope_name, self.url_scope_string(scope_name))\n \n # custom __getattr__ instructs `mypy` that unknown attributes of a ScopeBuilder are\n@@ -213,6 +218,17 @@ class ScopeBuilder:\n \"\"\"\n return MutableScope(getattr(self, scope))\n \n+ def _iter_scopes(self) -> Iterator[Tuple[str, str]]:\n+ for name in self._classattr_scope_names:\n+ yield (name, getattr(self, name))\n+ for name in self._known_scope_names:\n+ yield (name, getattr(self, name))\n+\n+ def __str__(self) -> str:\n+ return f\"ScopeBuilder[{self.resource_server}]\\n\" + \"\\n\".join(\n+ f\" {k}:\\n {v}\" for k, v in self._iter_scopes()\n+ )\n+\n \n class GCSEndpointScopeBuilder(ScopeBuilder):\n \"\"\"\n@@ -226,6 +242,8 @@ class GCSEndpointScopeBuilder(ScopeBuilder):\n >>> mc_scope = sb.manage_collections\n \"\"\"\n \n+ _classattr_scope_names = [\"manage_collections\"]\n+\n @property\n def manage_collections(self) -> str:\n return self.urn_scope_string(\"manage_collections\")\n@@ -244,6 +262,8 @@ class GCSCollectionScopeBuilder(ScopeBuilder):\n >>> https_scope = sb.https\n \"\"\"\n \n+ _classattr_scope_names = [\"data_access\", \"https\"]\n+\n @property\n def data_access(self) -> str:\n return self.url_scope_string(\"data_access\")\n@@ -254,6 +274,8 @@ class GCSCollectionScopeBuilder(ScopeBuilder):\n \n \n class _AuthScopesBuilder(ScopeBuilder):\n+ _classattr_scope_names = [\"openid\", \"email\", \"profile\"]\n+\n openid: str = \"openid\"\n email: str = \"email\"\n profile: str = \"profile\"\ndiff --git a/tests/functional/gcs/test_scope_helpers.py b/tests/functional/gcs/test_scope_helpers.py\nindex 80cada86..747411e3 100644\n--- a/tests/functional/gcs/test_scope_helpers.py\n+++ b/tests/functional/gcs/test_scope_helpers.py\n@@ -16,5 +16,18 @@ def test_manage_collections_scope_helper(client):\n def test_data_access_scope_helper(client):\n sb = client.get_gcs_collection_scopes(zero_id)\n assert sb.data_access == f\"https://auth.globus.org/scopes/{zero_id_s}/data_access\"\n+ assert sb.https == f\"https://auth.globus.org/scopes/{zero_id_s}/https\"\n # manage_collections is separated from collection scopes\n assert not hasattr(sb, \"manage_collections\")\n+\n+\n+def test_str_contains_scope_properties(client):\n+ ep_sb = client.get_gcs_endpoint_scopes(zero_id)\n+\n+ assert \"manage_collections\" in str(ep_sb)\n+ assert ep_sb.manage_collections in str(ep_sb)\n+\n+ collection_sb = client.get_gcs_collection_scopes(zero_id)\n+\n+ assert \"data_access\" in str(collection_sb)\n+ assert collection_sb.data_access in str(collection_sb)\ndiff --git a/tests/unit/test_scopes.py b/tests/unit/test_scopes.py\nindex 171ff6e6..7aa0699b 100644\n--- a/tests/unit/test_scopes.py\n+++ b/tests/unit/test_scopes.py\n@@ -32,6 +32,16 @@ def test_known_url_scopes():\n )\n \n \n+def test_scopebuilder_str():\n+ sb = ScopeBuilder(str(uuid.UUID(int=0)), known_scopes=\"foo\", known_url_scopes=\"bar\")\n+ rs, foo_scope, bar_scope = sb.resource_server, sb.foo, sb.bar\n+\n+ stringified = str(sb)\n+ assert rs in stringified\n+ assert foo_scope in stringified\n+ assert bar_scope in stringified\n+\n+\n def test_mutable_scope_str_and_repr_simple():\n s = MutableScope(\"simple\")\n assert str(s) == \"simple\"\n", "pre_commands": "git clean -fd -e '*.egg-info' -e '.tox' -e '.venv' && git checkout b8e5b554a80d9b7e9cf8c96776ca3ece1ed7bc6f -f && git reset --hard HEAD && git checkout -b scaleswe && git config user.email 'scaleswe@example.com' && git config user.name 'scaleswe-engine' && rm -f .git/packed-refs && find .git/refs/heads -type f ! -name 'scaleswe' -delete && rm -rf .git/refs/tags .git/refs/remotes && git reflog expire --expire=now --all && git gc --prune=now --aggressive\\n", "problem_statement": "# Add `__str__` to `ScopeBuilder` for easier inspection and add missing `https` scope\n\n## Description\n\nCurrently, `ScopeBuilder` objects are somewhat difficult to inspect during debugging or interactive use. When printing these objects, the output defaults to the standard Python object representation (e.g., ``), which does not provide immediate insight into the configured scopes or the resource server.\n\nI propose implementing a friendly `__str__` method for `ScopeBuilder` and its subclasses. This would allow users to easily view the contents of the builder.\n\nFor example, executing:\n```python\nprint(globus_sdk.TransferClient.scopes)\n```\nShould ideally display the resource server string and list the available scopes in a readable format.\n\nAdditionally, I noticed that the `https` scope property seems to be missing from the `GCSCollectionScopeBuilder`. It would be beneficial to add this property to ensure users can easily access the `https` scope URL for GCS Collections.", "f2p_patch": "diff --git a/tests/functional/gcs/test_scope_helpers.py b/tests/functional/gcs/test_scope_helpers.py\nindex 80cada86..747411e3 100644\n--- a/tests/functional/gcs/test_scope_helpers.py\n+++ b/tests/functional/gcs/test_scope_helpers.py\n@@ -16,5 +16,18 @@ def test_manage_collections_scope_helper(client):\n def test_data_access_scope_helper(client):\n sb = client.get_gcs_collection_scopes(zero_id)\n assert sb.data_access == f\"https://auth.globus.org/scopes/{zero_id_s}/data_access\"\n+ assert sb.https == f\"https://auth.globus.org/scopes/{zero_id_s}/https\"\n # manage_collections is separated from collection scopes\n assert not hasattr(sb, \"manage_collections\")\n+\n+\n+def test_str_contains_scope_properties(client):\n+ ep_sb = client.get_gcs_endpoint_scopes(zero_id)\n+\n+ assert \"manage_collections\" in str(ep_sb)\n+ assert ep_sb.manage_collections in str(ep_sb)\n+\n+ collection_sb = client.get_gcs_collection_scopes(zero_id)\n+\n+ assert \"data_access\" in str(collection_sb)\n+ assert collection_sb.data_access in str(collection_sb)\ndiff --git a/tests/unit/test_scopes.py b/tests/unit/test_scopes.py\nindex 171ff6e6..7aa0699b 100644\n--- a/tests/unit/test_scopes.py\n+++ b/tests/unit/test_scopes.py\n@@ -32,6 +32,16 @@ def test_known_url_scopes():\n )\n \n \n+def test_scopebuilder_str():\n+ sb = ScopeBuilder(str(uuid.UUID(int=0)), known_scopes=\"foo\", known_url_scopes=\"bar\")\n+ rs, foo_scope, bar_scope = sb.resource_server, sb.foo, sb.bar\n+\n+ stringified = str(sb)\n+ assert rs in stringified\n+ assert foo_scope in stringified\n+ assert bar_scope in stringified\n+\n+\n def test_mutable_scope_str_and_repr_simple():\n s = MutableScope(\"simple\")\n assert str(s) == \"simple\"\n", "f2p_script": "import pytest\nimport sys\nfrom globus_sdk import TransferClient\nfrom globus_sdk.scopes import (\n TransferScopes,\n GCSCollectionScopeBuilder,\n AuthScopes,\n GroupsScopes,\n TimerScopes,\n SearchScopes,\n ScopeBuilder,\n)\n\n\ndef test_transfer_scopes_str_contains_scope_names():\n \"\"\"Printing TransferScopes should list its known scopes.\"\"\"\n s = str(TransferScopes)\n assert \"all\" in s\n assert \"gcp_install\" in s\n assert \"monitor_ongoing\" in s\n assert \"urn:globus:auth:scope:transfer.api.globus.org:all\" in s\n assert \"urn:globus:auth:scope:transfer.api.globus.org:gcp_install\" in s\n assert \"urn:globus:auth:scope:transfer.api.globus.org:monitor_ongoing\" in s\n # Ensure it's not the default object representation\n assert not s.startswith(\"`), which does not provide immediate insight into the configured scopes or the resource server.\n\nI propose implementing a friendly `__str__` method for `ScopeBuilder` and its subclasses. This would allow users to easily view the contents of the builder.\n\nFor example, executing:\n```python\nprint(globus_sdk.TransferClient.scopes)\n```\nShould ideally display the resource server string and list the available scopes in a readable format.\n\nAdditionally, I noticed that the `https` scope property seems to be missing from the `GCSCollectionScopeBuilder`. It would be beneficial to add this property to ensure users can easily access the `https` scope URL for GCS Collections."}]}, "task_source": "scale_swe_example_agent"}
+{"instance_id": "more-itertools_more-itertools_pr490", "repo": "more-itertools", "language": "python", "workdir": "/workspace/more-itertools", "image_url": "aweaiteam/scaleswe:more-itertools_more-itertools_pr490", "patch": "diff --git a/more_itertools/more.py b/more_itertools/more.py\nindex 1915693..90cd63c 100755\n--- a/more_itertools/more.py\n+++ b/more_itertools/more.py\n@@ -3035,9 +3035,11 @@ def set_partitions(iterable, k=None):\n yield from set_partitions_helper(L, k)\n \n \n-def time_limited(limit_seconds, iterable):\n+class time_limited:\n \"\"\"\n Yield items from *iterable* until *limit_seconds* have passed.\n+ If the time limit expires before all items have been yielded, the\n+ ``timed_out`` parameter will be set to ``True``.\n \n >>> from time import sleep\n >>> def generator():\n@@ -3045,9 +3047,11 @@ def time_limited(limit_seconds, iterable):\n ... yield 2\n ... sleep(0.2)\n ... yield 3\n- >>> iterable = generator()\n- >>> list(time_limited(0.1, iterable))\n+ >>> iterable = time_limited(0.1, generator())\n+ >>> list(iterable)\n [1, 2]\n+ >>> iterable.timed_out\n+ True\n \n Note that the time is checked before each item is yielded, and iteration\n stops if the time elapsed is greater than *limit_seconds*. If your time\n@@ -3055,14 +3059,25 @@ def time_limited(limit_seconds, iterable):\n the iterable, the function will run for 2 seconds and not yield anything.\n \n \"\"\"\n- if limit_seconds < 0:\n- raise ValueError('limit_seconds must be positive')\n \n- start_time = monotonic()\n- for item in iterable:\n- if monotonic() - start_time > limit_seconds:\n- break\n- yield item\n+ def __init__(self, limit_seconds, iterable):\n+ if limit_seconds < 0:\n+ raise ValueError('limit_seconds must be positive')\n+ self.limit_seconds = limit_seconds\n+ self._iterable = iter(iterable)\n+ self._start_time = monotonic()\n+ self.timed_out = False\n+\n+ def __iter__(self):\n+ return self\n+\n+ def __next__(self):\n+ item = next(self._iterable)\n+ if monotonic() - self._start_time > self.limit_seconds:\n+ self.timed_out = True\n+ raise StopIteration\n+\n+ return item\n \n \n def only(iterable, default=None, too_long=None):\ndiff --git a/more_itertools/more.pyi b/more_itertools/more.pyi\nindex ba08120..84a8f14 100644\n--- a/more_itertools/more.pyi\n+++ b/more_itertools/more.pyi\n@@ -387,9 +387,14 @@ def partitions(iterable: Iterable[_T]) -> Iterator[List[List[_T]]]: ...\n def set_partitions(\n iterable: Iterable[_T], k: Optional[int] = ...\n ) -> Iterator[List[List[_T]]]: ...\n-def time_limited(\n- limit_seconds: float, iterable: Iterable[_T]\n-) -> Iterator[_T]: ...\n+\n+class time_limited(Generic[_T], Iterator[_T]):\n+ def __init__(\n+ self, limit_seconds: float, iterable: Iterable[_T]\n+ ) -> None: ...\n+ def __iter__(self) -> islice_extended[_T]: ...\n+ def __next__(self) -> _T: ...\n+\n @overload\n def only(\n iterable: Iterable[_T], *, too_long: Optional[_Raisable] = ...\ndiff --git a/tests/test_more.py b/tests/test_more.py\nindex e07eb71..e314f96 100644\n--- a/tests/test_more.py\n+++ b/tests/test_more.py\n@@ -3674,16 +3674,25 @@ class TimeLimitedTests(TestCase):\n sleep(0.2)\n yield 3\n \n- iterable = generator()\n- actual = list(mi.time_limited(0.1, iterable))\n+ iterable = mi.time_limited(0.1, generator())\n+ actual = list(iterable)\n expected = [1, 2]\n self.assertEqual(actual, expected)\n+ self.assertTrue(iterable.timed_out)\n+\n+ def test_complete(self):\n+ iterable = mi.time_limited(2, iter(range(10)))\n+ actual = list(iterable)\n+ expected = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n+ self.assertEqual(actual, expected)\n+ self.assertFalse(iterable.timed_out)\n \n def test_zero_limit(self):\n- iterable = count()\n- actual = list(mi.time_limited(0, iterable))\n+ iterable = mi.time_limited(0, count())\n+ actual = list(iterable)\n expected = []\n self.assertEqual(actual, expected)\n+ self.assertTrue(iterable.timed_out)\n \n def test_invalid_limit(self):\n with self.assertRaises(ValueError):\n", "pre_commands": "git clean -fd -e '*.egg-info' -e '.tox' -e '.venv' && git checkout ad385b3aae0923daacc85fe2928fdbe872720e8a -f && git reset --hard HEAD && git checkout -b scaleswe && git config user.email 'scaleswe@example.com' && git config user.name 'scaleswe-engine' && rm -f .git/packed-refs && find .git/refs/heads -type f ! -name 'scaleswe' -delete && rm -rf .git/refs/tags .git/refs/remotes && git reflog expire --expire=now --all && git gc --prune=now --aggressive\\n", "problem_statement": "# Feature Request: Add `timed_out` attribute to `time_limited`\n\n## Description\nCurrently, the `more_itertools.time_limited` function yields items from an iterable until a specified time limit has passed. However, when the iteration stops, there is no mechanism to distinguish between two scenarios:\n1. The underlying iterable was fully exhausted.\n2. The time limit was reached, causing the iteration to abort early.\n\nIt would be very useful to have a way to inspect the result to determine if a timeout actually occurred.\n\n## Proposed Solution\nI propose that the object returned by `time_limited` should expose a `timed_out` attribute. This boolean flag would indicate whether the time limit expired (`True`) or if the iterable finished naturally (`False`).\n\n## Example Usage\n\n```python\nfrom more_itertools import time_limited\nfrom time import sleep\n\ndef generator():\n yield 1\n yield 2\n sleep(0.2)\n yield 3\n\n# Case 1: Time limit is hit\niterable = time_limited(0.1, generator())\nresults = list(iterable)\n# Expected: iterable.timed_out is True\n\n# Case 2: Iterable finishes within time\niterable_complete = time_limited(2, range(3))\nresults_complete = list(iterable_complete)\n# Expected: iterable_complete.timed_out is False\n```", "f2p_patch": "diff --git a/tests/test_more.py b/tests/test_more.py\nindex e07eb71..e314f96 100644\n--- a/tests/test_more.py\n+++ b/tests/test_more.py\n@@ -3674,16 +3674,25 @@ class TimeLimitedTests(TestCase):\n sleep(0.2)\n yield 3\n \n- iterable = generator()\n- actual = list(mi.time_limited(0.1, iterable))\n+ iterable = mi.time_limited(0.1, generator())\n+ actual = list(iterable)\n expected = [1, 2]\n self.assertEqual(actual, expected)\n+ self.assertTrue(iterable.timed_out)\n+\n+ def test_complete(self):\n+ iterable = mi.time_limited(2, iter(range(10)))\n+ actual = list(iterable)\n+ expected = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n+ self.assertEqual(actual, expected)\n+ self.assertFalse(iterable.timed_out)\n \n def test_zero_limit(self):\n- iterable = count()\n- actual = list(mi.time_limited(0, iterable))\n+ iterable = mi.time_limited(0, count())\n+ actual = list(iterable)\n expected = []\n self.assertEqual(actual, expected)\n+ self.assertTrue(iterable.timed_out)\n \n def test_invalid_limit(self):\n with self.assertRaises(ValueError):\n", "f2p_script": "import time\nimport pytest\nimport more_itertools as mi\nfrom itertools import count\n\n\ndef test_time_limited_timed_out_true():\n \"\"\"Test that timed_out is True when time limit expires.\"\"\"\n def slow_gen():\n yield 1\n time.sleep(0.05)\n yield 2\n time.sleep(0.05)\n yield 3\n\n iterable = mi.time_limited(0.08, slow_gen())\n items = list(iterable)\n # Should have yielded 1 and 2 before timeout\n assert items == [1, 2]\n assert iterable.timed_out is True\n\n\ndef test_time_limited_timed_out_false():\n \"\"\"Test that timed_out is False when iterable exhausted before timeout.\"\"\"\n iterable = mi.time_limited(2, range(5))\n items = list(iterable)\n assert items == [0, 1, 2, 3, 4]\n assert iterable.timed_out is False\n\n\ndef test_time_limited_zero_limit():\n \"\"\"Test zero time limit: should timeout immediately.\"\"\"\n iterable = mi.time_limited(0, count())\n items = list(iterable)\n assert items == []\n assert iterable.timed_out is True\n\n\ndef test_time_limited_negative_limit():\n \"\"\"Test that negative limit raises ValueError.\"\"\"\n with pytest.raises(ValueError, match='limit_seconds must be positive'):\n mi.time_limited(-1, range(5))\n\n\ndef test_time_limited_no_iteration():\n \"\"\"Test that timed_out is False if no iteration started.\"\"\"\n iterable = mi.time_limited(10, range(5))\n # Not iterating at all\n assert iterable.timed_out is False\n # After partial iteration without timeout\n it = iter(iterable)\n item = next(it) # 0\n assert item == 0\n # timed_out should still be False because time hasn't expired\n assert iterable.timed_out is False\n\n\nif __name__ == \"__main__\":\n import sys\n sys.exit(pytest.main([\"-v\", __file__]))", "FAIL_TO_PASS": "[\"tests/test_more.py::TimeLimitedTests::test_basic\", \"tests/test_more.py::TimeLimitedTests::test_complete\", \"tests/test_more.py::TimeLimitedTests::test_zero_limit\"]", "PASS_TO_PASS": "[\"tests/test_more.py::CollateTests::test_alias\", \"tests/test_more.py::CollateTests::test_default\", \"tests/test_more.py::CollateTests::test_empty\", \"tests/test_more.py::CollateTests::test_key\", \"tests/test_more.py::CollateTests::test_one\", \"tests/test_more.py::CollateTests::test_reverse\", \"tests/test_more.py::ChunkedTests::test_even\", \"tests/test_more.py::ChunkedTests::test_odd\", \"tests/test_more.py::ChunkedTests::test_strict_being_true\", \"tests/test_more.py::ChunkedTests::test_strict_false\", \"tests/test_more.py::FirstTests::test_default\", \"tests/test_more.py::FirstTests::test_empty_stop_iteration\", \"tests/test_more.py::FirstTests::test_many\", \"tests/test_more.py::FirstTests::test_one\", \"tests/test_more.py::LastTests::test_basic\", \"tests/test_more.py::LastTests::test_default\", \"tests/test_more.py::LastTests::test_empty\", \"tests/test_more.py::NthOrLastTests::test_basic\", \"tests/test_more.py::NthOrLastTests::test_default_value\", \"tests/test_more.py::NthOrLastTests::test_empty_iterable_no_default\", \"tests/test_more.py::PeekableTests::test_empty\", \"tests/test_more.py::PeekableTests::test_indexing\", \"tests/test_more.py::PeekableTests::test_multi_prepend\", \"tests/test_more.py::PeekableTests::test_multi_prepend_peek\", \"tests/test_more.py::PeekableTests::test_passthrough\", \"tests/test_more.py::PeekableTests::test_peek_default\", \"tests/test_more.py::PeekableTests::test_prepend\", \"tests/test_more.py::PeekableTests::test_prepend_after_stop\", \"tests/test_more.py::PeekableTests::test_prepend_indexing\", \"tests/test_more.py::PeekableTests::test_prepend_iterable\", \"tests/test_more.py::PeekableTests::test_prepend_many\", \"tests/test_more.py::PeekableTests::test_prepend_reversed\", \"tests/test_more.py::PeekableTests::test_prepend_slicing\", \"tests/test_more.py::PeekableTests::test_prepend_truthiness\", \"tests/test_more.py::PeekableTests::test_simple_peeking\", \"tests/test_more.py::PeekableTests::test_slicing\", \"tests/test_more.py::PeekableTests::test_slicing_error\", \"tests/test_more.py::PeekableTests::test_slicing_reset\", \"tests/test_more.py::PeekableTests::test_truthiness\", \"tests/test_more.py::ConsumerTests::test_consumer\", \"tests/test_more.py::DistinctPermutationsTests::test_distinct_permutations\", \"tests/test_more.py::DistinctPermutationsTests::test_other_iterables\", \"tests/test_more.py::DistinctPermutationsTests::test_r\", \"tests/test_more.py::IlenTests::test_ilen\", \"tests/test_more.py::WithIterTests::test_with_iter\", \"tests/test_more.py::OneTests::test_basic\", \"tests/test_more.py::OneTests::test_too_long\", \"tests/test_more.py::OneTests::test_too_long_default_message\", \"tests/test_more.py::OneTests::test_too_short\", \"tests/test_more.py::IntersperseTest::test_even\", \"tests/test_more.py::IntersperseTest::test_n\", \"tests/test_more.py::IntersperseTest::test_n_zero\", \"tests/test_more.py::IntersperseTest::test_nested\", \"tests/test_more.py::IntersperseTest::test_not_iterable\", \"tests/test_more.py::IntersperseTest::test_odd\", \"tests/test_more.py::UniqueToEachTests::test_all_unique\", \"tests/test_more.py::UniqueToEachTests::test_duplicates\", \"tests/test_more.py::UniqueToEachTests::test_mixed\", \"tests/test_more.py::WindowedTests::test_basic\", \"tests/test_more.py::WindowedTests::test_fillvalue\", \"tests/test_more.py::WindowedTests::test_large_size\", \"tests/test_more.py::WindowedTests::test_negative\", \"tests/test_more.py::WindowedTests::test_step\", \"tests/test_more.py::WindowedTests::test_zero\", \"tests/test_more.py::SubstringsTests::test_basic\", \"tests/test_more.py::SubstringsTests::test_empty\", \"tests/test_more.py::SubstringsTests::test_order\", \"tests/test_more.py::SubstringsTests::test_strings\", \"tests/test_more.py::SubstringsIndexesTests::test_basic\", \"tests/test_more.py::SubstringsIndexesTests::test_empty\", \"tests/test_more.py::SubstringsIndexesTests::test_order\", \"tests/test_more.py::SubstringsIndexesTests::test_reverse\", \"tests/test_more.py::SubstringsIndexesTests::test_strings\", \"tests/test_more.py::BucketTests::test_basic\", \"tests/test_more.py::BucketTests::test_in\", \"tests/test_more.py::BucketTests::test_list\", \"tests/test_more.py::BucketTests::test_list_validator\", \"tests/test_more.py::BucketTests::test_validator\", \"tests/test_more.py::SpyTests::test_basic\", \"tests/test_more.py::SpyTests::test_immutable\", \"tests/test_more.py::SpyTests::test_too_many\", \"tests/test_more.py::SpyTests::test_unpacking\", \"tests/test_more.py::SpyTests::test_zero\", \"tests/test_more.py::InterleaveTests::test_even\", \"tests/test_more.py::InterleaveTests::test_mixed_types\", \"tests/test_more.py::InterleaveTests::test_short\", \"tests/test_more.py::InterleaveLongestTests::test_even\", \"tests/test_more.py::InterleaveLongestTests::test_mixed_types\", \"tests/test_more.py::InterleaveLongestTests::test_short\", \"tests/test_more.py::TestCollapse::test_collapse\", \"tests/test_more.py::TestCollapse::test_collapse_flatten\", \"tests/test_more.py::TestCollapse::test_collapse_to_bytes\", \"tests/test_more.py::TestCollapse::test_collapse_to_level\", \"tests/test_more.py::TestCollapse::test_collapse_to_list\", \"tests/test_more.py::TestCollapse::test_collapse_to_string\", \"tests/test_more.py::SideEffectTests::test_before_after\", \"tests/test_more.py::SideEffectTests::test_before_fails\", \"tests/test_more.py::SideEffectTests::test_chunked\", \"tests/test_more.py::SideEffectTests::test_individual\", \"tests/test_more.py::SlicedTests::test_even\", \"tests/test_more.py::SlicedTests::test_not_sliceable\", \"tests/test_more.py::SlicedTests::test_numpy_like_array\", \"tests/test_more.py::SlicedTests::test_odd\", \"tests/test_more.py::SlicedTests::test_odd_and_strict\", \"tests/test_more.py::SplitAtTests::test_basic\", \"tests/test_more.py::SplitAtTests::test_combination\", \"tests/test_more.py::SplitAtTests::test_keep_separator\", \"tests/test_more.py::SplitAtTests::test_maxsplit\", \"tests/test_more.py::SplitBeforeTest::test_ends_with_sep\", \"tests/test_more.py::SplitBeforeTest::test_max_split\", \"tests/test_more.py::SplitBeforeTest::test_no_sep\", \"tests/test_more.py::SplitBeforeTest::test_starts_with_sep\", \"tests/test_more.py::SplitAfterTest::test_ends_with_sep\", \"tests/test_more.py::SplitAfterTest::test_max_split\", \"tests/test_more.py::SplitAfterTest::test_no_sep\", \"tests/test_more.py::SplitAfterTest::test_starts_with_sep\", \"tests/test_more.py::SplitWhenTests::test_after_emulation_ends_with_sep\", \"tests/test_more.py::SplitWhenTests::test_after_emulation_no_sep\", \"tests/test_more.py::SplitWhenTests::test_after_emulation_starts_with_sep\", \"tests/test_more.py::SplitWhenTests::test_before_emulation_ends_with_sep\", \"tests/test_more.py::SplitWhenTests::test_before_emulation_no_sep\", \"tests/test_more.py::SplitWhenTests::test_before_emulation_starts_with_sep\", \"tests/test_more.py::SplitWhenTests::test_empty_iterable\", \"tests/test_more.py::SplitWhenTests::test_max_split\", \"tests/test_more.py::SplitWhenTests::test_one_element\", \"tests/test_more.py::SplitWhenTests::test_one_element_is_first_item\", \"tests/test_more.py::SplitWhenTests::test_one_element_is_second_item\", \"tests/test_more.py::SplitIntoTests::test_bool_in_sizes\", \"tests/test_more.py::SplitIntoTests::test_both_empty\", \"tests/test_more.py::SplitIntoTests::test_generator_iterable_integrity\", \"tests/test_more.py::SplitIntoTests::test_generator_sizes_integrity\", \"tests/test_more.py::SplitIntoTests::test_invalid_in_sizes\", \"tests/test_more.py::SplitIntoTests::test_invalid_in_sizes_after_none\", \"tests/test_more.py::SplitIntoTests::test_iterable_empty\", \"tests/test_more.py::SplitIntoTests::test_iterable_empty_using_none\", \"tests/test_more.py::SplitIntoTests::test_iterable_just_right\", \"tests/test_more.py::SplitIntoTests::test_iterable_too_large\", \"tests/test_more.py::SplitIntoTests::test_iterable_too_small\", \"tests/test_more.py::SplitIntoTests::test_iterable_too_small_extra\", \"tests/test_more.py::SplitIntoTests::test_sizes_empty\", \"tests/test_more.py::SplitIntoTests::test_using_none_mid_sizes\", \"tests/test_more.py::SplitIntoTests::test_using_none_with_leftover\", \"tests/test_more.py::SplitIntoTests::test_using_none_without_leftover\", \"tests/test_more.py::PaddedTest::test_invalid_n\", \"tests/test_more.py::PaddedTest::test_next_multiple\", \"tests/test_more.py::PaddedTest::test_no_n\", \"tests/test_more.py::PaddedTest::test_valid_n\", \"tests/test_more.py::RepeatLastTests::test_basic\", \"tests/test_more.py::RepeatLastTests::test_default_value\", \"tests/test_more.py::RepeatLastTests::test_empty_iterable\", \"tests/test_more.py::DistributeTest::test_basic\", \"tests/test_more.py::DistributeTest::test_invalid_n\", \"tests/test_more.py::DistributeTest::test_large_n\", \"tests/test_more.py::StaggerTest::test_default\", \"tests/test_more.py::StaggerTest::test_longest\", \"tests/test_more.py::StaggerTest::test_offsets\", \"tests/test_more.py::ZipEqualTest::test_equal\", \"tests/test_more.py::ZipEqualTest::test_unequal_lists\", \"tests/test_more.py::ZipOffsetTest::test_longest\", \"tests/test_more.py::ZipOffsetTest::test_mismatch\", \"tests/test_more.py::ZipOffsetTest::test_shortest\", \"tests/test_more.py::UnzipTests::test_empty_iterable\", \"tests/test_more.py::UnzipTests::test_improperly_zipped\", \"tests/test_more.py::UnzipTests::test_increasingly_zipped\", \"tests/test_more.py::UnzipTests::test_length_one_iterable\", \"tests/test_more.py::UnzipTests::test_normal_case\", \"tests/test_more.py::SortTogetherTest::test_invalid_key_list\", \"tests/test_more.py::SortTogetherTest::test_key_list\", \"tests/test_more.py::SortTogetherTest::test_reverse\", \"tests/test_more.py::SortTogetherTest::test_uneven_iterables\", \"tests/test_more.py::DivideTest::test_basic\", \"tests/test_more.py::DivideTest::test_invalid_n\", \"tests/test_more.py::DivideTest::test_large_n\", \"tests/test_more.py::TestAlwaysIterable::test_base_type\", \"tests/test_more.py::TestAlwaysIterable::test_generator\", \"tests/test_more.py::TestAlwaysIterable::test_iterables\", \"tests/test_more.py::TestAlwaysIterable::test_none\", \"tests/test_more.py::TestAlwaysIterable::test_single\", \"tests/test_more.py::TestAlwaysIterable::test_strings\", \"tests/test_more.py::AdjacentTests::test_call_once\", \"tests/test_more.py::AdjacentTests::test_consecutive_true\", \"tests/test_more.py::AdjacentTests::test_distance\", \"tests/test_more.py::AdjacentTests::test_empty_iterable\", \"tests/test_more.py::AdjacentTests::test_grouping\", \"tests/test_more.py::AdjacentTests::test_large_distance\", \"tests/test_more.py::AdjacentTests::test_length_one\", \"tests/test_more.py::AdjacentTests::test_negative_distance\", \"tests/test_more.py::AdjacentTests::test_typical\", \"tests/test_more.py::AdjacentTests::test_zero_distance\", \"tests/test_more.py::GroupByTransformTests::test_default_funcs\", \"tests/test_more.py::GroupByTransformTests::test_no_valuefunc\", \"tests/test_more.py::GroupByTransformTests::test_reducefunc\", \"tests/test_more.py::GroupByTransformTests::test_valuefunc\", \"tests/test_more.py::NumericRangeTests::test_arg_count\", \"tests/test_more.py::NumericRangeTests::test_bad_key\", \"tests/test_more.py::NumericRangeTests::test_basic\", \"tests/test_more.py::NumericRangeTests::test_bool\", \"tests/test_more.py::NumericRangeTests::test_contains\", \"tests/test_more.py::NumericRangeTests::test_count\", \"tests/test_more.py::NumericRangeTests::test_eq\", \"tests/test_more.py::NumericRangeTests::test_get_item_by_index\", \"tests/test_more.py::NumericRangeTests::test_get_item_by_slice\", \"tests/test_more.py::NumericRangeTests::test_hash\", \"tests/test_more.py::NumericRangeTests::test_index\", \"tests/test_more.py::NumericRangeTests::test_iter_twice\", \"tests/test_more.py::NumericRangeTests::test_len\", \"tests/test_more.py::NumericRangeTests::test_parent_classes\", \"tests/test_more.py::NumericRangeTests::test_pickle\", \"tests/test_more.py::NumericRangeTests::test_repr\", \"tests/test_more.py::NumericRangeTests::test_reversed\", \"tests/test_more.py::NumericRangeTests::test_zero_step\", \"tests/test_more.py::CountCycleTests::test_basic\", \"tests/test_more.py::CountCycleTests::test_empty\", \"tests/test_more.py::CountCycleTests::test_negative\", \"tests/test_more.py::MarkEndsTests::test_basic\", \"tests/test_more.py::LocateTests::test_custom_pred\", \"tests/test_more.py::LocateTests::test_default_pred\", \"tests/test_more.py::LocateTests::test_no_matches\", \"tests/test_more.py::LocateTests::test_window_size\", \"tests/test_more.py::LocateTests::test_window_size_large\", \"tests/test_more.py::LocateTests::test_window_size_zero\", \"tests/test_more.py::StripFunctionTests::test_hashable\", \"tests/test_more.py::StripFunctionTests::test_math\", \"tests/test_more.py::StripFunctionTests::test_not_hashable\", \"tests/test_more.py::IsliceExtendedTests::test_all\", \"tests/test_more.py::IsliceExtendedTests::test_invalid_slice\", \"tests/test_more.py::IsliceExtendedTests::test_slicing\", \"tests/test_more.py::IsliceExtendedTests::test_slicing_extensive\", \"tests/test_more.py::IsliceExtendedTests::test_zero_step\", \"tests/test_more.py::ConsecutiveGroupsTest::test_custom_ordering\", \"tests/test_more.py::ConsecutiveGroupsTest::test_exotic_ordering\", \"tests/test_more.py::ConsecutiveGroupsTest::test_numbers\", \"tests/test_more.py::DifferenceTest::test_custom\", \"tests/test_more.py::DifferenceTest::test_empty\", \"tests/test_more.py::DifferenceTest::test_initial\", \"tests/test_more.py::DifferenceTest::test_normal\", \"tests/test_more.py::DifferenceTest::test_one\", \"tests/test_more.py::DifferenceTest::test_roundtrip\", \"tests/test_more.py::SeekableTest::test_elements\", \"tests/test_more.py::SeekableTest::test_exhaustion_reset\", \"tests/test_more.py::SeekableTest::test_forward\", \"tests/test_more.py::SeekableTest::test_maxlen\", \"tests/test_more.py::SeekableTest::test_maxlen_zero\", \"tests/test_more.py::SeekableTest::test_partial_reset\", \"tests/test_more.py::SeekableTest::test_passthrough\", \"tests/test_more.py::SeekableTest::test_past_end\", \"tests/test_more.py::SeekableTest::test_peek_default\", \"tests/test_more.py::SeekableTest::test_simple_peeking\", \"tests/test_more.py::SeekableTest::test_truthiness\", \"tests/test_more.py::SequenceViewTests::test_abc_methods\", \"tests/test_more.py::SequenceViewTests::test_indexing\", \"tests/test_more.py::SequenceViewTests::test_init\", \"tests/test_more.py::SequenceViewTests::test_slicing\", \"tests/test_more.py::SequenceViewTests::test_update\", \"tests/test_more.py::RunLengthTest::test_decode\", \"tests/test_more.py::RunLengthTest::test_encode\", \"tests/test_more.py::ExactlyNTests::test_empty\", \"tests/test_more.py::ExactlyNTests::test_false\", \"tests/test_more.py::ExactlyNTests::test_true\", \"tests/test_more.py::AlwaysReversibleTests::test_nonseq_reversed\", \"tests/test_more.py::AlwaysReversibleTests::test_regular_reversed\", \"tests/test_more.py::CircularShiftsTests::test_duplicates\", \"tests/test_more.py::CircularShiftsTests::test_empty\", \"tests/test_more.py::CircularShiftsTests::test_simple_circular_shifts\", \"tests/test_more.py::MakeDecoratorTests::test_basic\", \"tests/test_more.py::MakeDecoratorTests::test_result_index\", \"tests/test_more.py::MakeDecoratorTests::test_wrap_class\", \"tests/test_more.py::MapReduceTests::test_default\", \"tests/test_more.py::MapReduceTests::test_reducefunc\", \"tests/test_more.py::MapReduceTests::test_ret\", \"tests/test_more.py::MapReduceTests::test_valuefunc\", \"tests/test_more.py::RlocateTests::test_custom_pred\", \"tests/test_more.py::RlocateTests::test_default_pred\", \"tests/test_more.py::RlocateTests::test_efficient_reversal\", \"tests/test_more.py::RlocateTests::test_no_matches\", \"tests/test_more.py::RlocateTests::test_window_size\", \"tests/test_more.py::RlocateTests::test_window_size_large\", \"tests/test_more.py::RlocateTests::test_window_size_zero\", \"tests/test_more.py::ReplaceTests::test_basic\", \"tests/test_more.py::ReplaceTests::test_count\", \"tests/test_more.py::ReplaceTests::test_iterable_substitutes\", \"tests/test_more.py::ReplaceTests::test_window_size\", \"tests/test_more.py::ReplaceTests::test_window_size_count\", \"tests/test_more.py::ReplaceTests::test_window_size_end\", \"tests/test_more.py::ReplaceTests::test_window_size_large\", \"tests/test_more.py::ReplaceTests::test_window_size_zero\", \"tests/test_more.py::PartitionsTest::test_duplicates\", \"tests/test_more.py::PartitionsTest::test_empty\", \"tests/test_more.py::PartitionsTest::test_order\", \"tests/test_more.py::PartitionsTest::test_types\", \"tests/test_more.py::SetPartitionsTests::test_duplicates\", \"tests/test_more.py::SetPartitionsTests::test_each_correct\", \"tests/test_more.py::SetPartitionsTests::test_found_all\", \"tests/test_more.py::SetPartitionsTests::test_no_group\", \"tests/test_more.py::SetPartitionsTests::test_repeated\", \"tests/test_more.py::SetPartitionsTests::test_stirling_numbers\", \"tests/test_more.py::SetPartitionsTests::test_to_many_groups\", \"tests/test_more.py::TimeLimitedTests::test_invalid_limit\", \"tests/test_more.py::OnlyTests::test_custom_exception\", \"tests/test_more.py::OnlyTests::test_custom_value\", \"tests/test_more.py::OnlyTests::test_default_exception_message\", \"tests/test_more.py::OnlyTests::test_defaults\", \"tests/test_more.py::IchunkedTests::test_even\", \"tests/test_more.py::IchunkedTests::test_laziness\", \"tests/test_more.py::IchunkedTests::test_negative\", \"tests/test_more.py::IchunkedTests::test_odd\", \"tests/test_more.py::IchunkedTests::test_out_of_order\", \"tests/test_more.py::IchunkedTests::test_zero\", \"tests/test_more.py::DistinctCombinationsTests::test_basic\", \"tests/test_more.py::DistinctCombinationsTests::test_empty\", \"tests/test_more.py::DistinctCombinationsTests::test_negative\", \"tests/test_more.py::FilterExceptTests::test_false\", \"tests/test_more.py::FilterExceptTests::test_multiple\", \"tests/test_more.py::FilterExceptTests::test_no_exceptions_pass\", \"tests/test_more.py::FilterExceptTests::test_no_exceptions_raise\", \"tests/test_more.py::FilterExceptTests::test_raise\", \"tests/test_more.py::MapExceptTests::test_multiple\", \"tests/test_more.py::MapExceptTests::test_no_exceptions_pass\", \"tests/test_more.py::MapExceptTests::test_no_exceptions_raise\", \"tests/test_more.py::MapExceptTests::test_raise\", \"tests/test_more.py::SampleTests::test_invariance_under_permutations_unweighted\", \"tests/test_more.py::SampleTests::test_invariance_under_permutations_weighted\", \"tests/test_more.py::SampleTests::test_length\", \"tests/test_more.py::SampleTests::test_samling_entire_iterable\", \"tests/test_more.py::SampleTests::test_scale_invariance_of_weights\", \"tests/test_more.py::SampleTests::test_unit_case\", \"tests/test_more.py::IsSortedTests::test_basic\", \"tests/test_more.py::CallbackIterTests::test_abort\", \"tests/test_more.py::CallbackIterTests::test_basic\", \"tests/test_more.py::CallbackIterTests::test_callback_kwd\", \"tests/test_more.py::CallbackIterTests::test_exception\", \"tests/test_more.py::CallbackIterTests::test_no_result\", \"tests/test_more.py::CallbackIterTests::test_partial_consumption\", \"tests/test_more.py::WindowedCompleteTests::test_basic\", \"tests/test_more.py::WindowedCompleteTests::test_every_partition\", \"tests/test_more.py::WindowedCompleteTests::test_wrong_length\", \"tests/test_more.py::WindowedCompleteTests::test_zero_length\", \"tests/test_more.py::AllUniqueTests::test_basic\", \"tests/test_more.py::AllUniqueTests::test_infinite\", \"tests/test_more.py::AllUniqueTests::test_key\", \"tests/test_more.py::AllUniqueTests::test_non_hashable\", \"tests/test_more.py::AllUniqueTests::test_partially_hashable\", \"tests/test_more.py::NthProductTests::test_basic\", \"tests/test_more.py::NthProductTests::test_invalid_index\", \"tests/test_more.py::NthProductTests::test_long\", \"tests/test_more.py::NthProductTests::test_negative\", \"tests/test_more.py::ValueChainTests::test_complex\", \"tests/test_more.py::ValueChainTests::test_empty\", \"tests/test_more.py::ValueChainTests::test_empty_lists\", \"tests/test_more.py::ValueChainTests::test_more\", \"tests/test_more.py::ValueChainTests::test_simple\", \"tests/test_recipes.py::TakeTests::test_simple_take\", \"tests/test_recipes.py::ConsumeTests::test_negative_consume\", \"tests/test_recipes.py::ConsumeTests::test_total_consume\", \"tests/test_recipes.py::NthTests::test_default\", \"tests/test_recipes.py::AllEqualTests::test_false\", \"tests/test_recipes.py::AllEqualTests::test_tricky\", \"tests/test_recipes.py::NcyclesTests::test_happy_path\", \"tests/test_recipes.py::NcyclesTests::test_null_case\", \"tests/test_recipes.py::RepeatfuncTests::test_added_arguments\", \"tests/test_recipes.py::RepeatfuncTests::test_finite_repeat\", \"tests/test_recipes.py::PairwiseTests::test_base_case\", \"tests/test_recipes.py::PairwiseTests::test_short_case\", \"tests/test_recipes.py::GrouperTests::test_even\", \"tests/test_recipes.py::GrouperTests::test_fill_value\", \"tests/test_recipes.py::UniqueJustseenTests::test_custom_key\", \"tests/test_recipes.py::UniqueJustseenTests::test_justseen\", \"tests/test_recipes.py::IterExceptTests::test_first\", \"tests/test_recipes.py::IterExceptTests::test_uncaught_exception_is_raised\", \"tests/test_recipes.py::FirstTrueTests::test_nothing_true\", \"tests/test_recipes.py::FirstTrueTests::test_something_true\", \"tests/test_recipes.py::RandomProductTests::test_simple_lists\", \"tests/test_recipes.py::RandomPermutationTests::test_full_permutation\", \"tests/test_recipes.py::RandomPermutationTests::test_partial_permutation\", \"tests/test_recipes.py::RandomCombinationTests::test_no_replacement\", \"tests/test_recipes.py::NthCombinationTests::test_basic\", \"tests/test_recipes.py::NthPermutationTests::test_long\", \"tests/test_recipes.py::NthPermutationTests::test_null\", \"tests/test_recipes.py::PrependTests::test_multiple\"]", "responses_create_params": {"input": [{"role": "user", "content": "# Feature Request: Add `timed_out` attribute to `time_limited`\n\n## Description\nCurrently, the `more_itertools.time_limited` function yields items from an iterable until a specified time limit has passed. However, when the iteration stops, there is no mechanism to distinguish between two scenarios:\n1. The underlying iterable was fully exhausted.\n2. The time limit was reached, causing the iteration to abort early.\n\nIt would be very useful to have a way to inspect the result to determine if a timeout actually occurred.\n\n## Proposed Solution\nI propose that the object returned by `time_limited` should expose a `timed_out` attribute. This boolean flag would indicate whether the time limit expired (`True`) or if the iterable finished naturally (`False`).\n\n## Example Usage\n\n```python\nfrom more_itertools import time_limited\nfrom time import sleep\n\ndef generator():\n yield 1\n yield 2\n sleep(0.2)\n yield 3\n\n# Case 1: Time limit is hit\niterable = time_limited(0.1, generator())\nresults = list(iterable)\n# Expected: iterable.timed_out is True\n\n# Case 2: Iterable finishes within time\niterable_complete = time_limited(2, range(3))\nresults_complete = list(iterable_complete)\n# Expected: iterable_complete.timed_out is False\n```"}]}, "task_source": "scale_swe_example_agent"}
diff --git a/resources_servers/scale_swe/data/example_metrics.json b/resources_servers/scale_swe/data/example_metrics.json
new file mode 100644
index 00000000000..d0e657e0657
--- /dev/null
+++ b/resources_servers/scale_swe/data/example_metrics.json
@@ -0,0 +1,87 @@
+{
+ "name": "example",
+ "type": "example",
+ "jsonl_fpath": "resources_servers/scale_swe/data/example.jsonl",
+ "num_repeats": 1,
+ "source": null,
+ "gitlab_identifier": null,
+ "huggingface_identifier": null,
+ "license": null,
+ "Number of examples": 5,
+ "Number of tools": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "Json-dumped number of words (proxy for token count)": {
+ "Total # non-null values": 5,
+ "Average": 150.8,
+ "Min": 80.0,
+ "Max": 254.0,
+ "Standard deviation": 64.12
+ },
+ "Number of turns": {
+ "Total # non-null values": 5,
+ "Average": 1.0,
+ "Min": 1.0,
+ "Max": 1.0,
+ "Standard deviation": 0.0
+ },
+ "Temperature": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "instance_id": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "repo": {
+ "unique_count": 3,
+ "total_count": 5
+ },
+ "language": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "workdir": {
+ "unique_count": 3,
+ "total_count": 5
+ },
+ "image_url": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "pre_commands": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "problem_statement": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "f2p_patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "f2p_script": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "FAIL_TO_PASS": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "PASS_TO_PASS": {
+ "unique_count": 5,
+ "total_count": 5
+ }
+}
\ No newline at end of file
diff --git a/resources_servers/scale_swe/data/example_rollouts.jsonl b/resources_servers/scale_swe/data/example_rollouts.jsonl
new file mode 100644
index 00000000000..ab986118c58
--- /dev/null
+++ b/resources_servers/scale_swe/data/example_rollouts.jsonl
@@ -0,0 +1,5 @@
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "globus_globus-sdk-python_pr1029", "language": "python", "test_results": {"FAIL_TO_PASS": {"success": ["tests/unit/experimental/test_client_integration.py::test_flows_client_default_scopes"], "failure": []}, "PASS_TO_PASS": {"success": ["tests/functional/base_client/test_advanced_http_options.py::test_allow_redirects_false", "tests/functional/base_client/test_advanced_http_options.py::test_stream_true", "tests/functional/base_client/test_default_headers.py::test_clientinfo_header_can_be_supressed", "tests/functional/base_client/test_encodings.py::test_text_encoding_can_send_non_ascii_utf8_bytes", "tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[504]", "tests/functional/base_client/test_retry_behavior.py::test_retry_on_network_error", "tests/functional/base_client/test_retry_behavior.py::test_retry_limit[5-False]", "tests/functional/base_client/test_retry_behavior.py::test_retry_limit[7-True]", "tests/functional/base_client/test_retry_behavior.py::test_transport_retry_limit", "tests/functional/base_client/test_retry_behavior.py::test_no_retry_401_no_authorizer", "tests/functional/local_endpoint/test_personal.py::test_localep_load_id_alternate_conf_dir", "tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_aaaaaaaaaaaaaaaaaaaaaaaaa]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_aaaaaaaaaaaaaaaaaaaaaaaaa/]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=koala\" panda fossa]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"\" koala]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data", "tests/functional/local_endpoint/test_server.py::test_info_dict_from_empty_json_file_is_okay_but_has_no_properties", "tests/functional/local_endpoint/test_server.py::test_endpoint_id_property_ignores_non_str_value", "tests/functional/local_endpoint/test_server.py::test_domain_name_property_ignores_non_str_value", "tests/functional/services/auth/base/test_oauth2_validate_token.py::test_oauth2_validate_token_emits_deprecation_warning", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[public_client]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[publicly_visible]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_confidential_client]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_resource_server]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_hybrid_confidential_client_resource_server]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_create_child_client_args[client_type_public_webapp_client]", "tests/functional/services/auth/confidential_client/test_create_child_client.py::test_links_requirement", "tests/functional/services/auth/confidential_client/test_oauth2_get_dependent_tokens.py::test_oauth2_get_dependent_tokens", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[private_client]", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[publicly_visible]", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[not_publicly_visible]", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_confidential_client]", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_resource_server]", "tests/functional/services/auth/service_client/test_create_client.py::test_create_client_args[client_type_public_webapp_client]", "tests/functional/services/auth/service_client/test_create_client.py::test_links_requirement", "tests/functional/services/auth/service_client/test_create_client_credential.py::test_create_credential[str]", "tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[project_id_uuid]", "tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[display_name]", "tests/functional/services/auth/service_client/test_create_policy.py::test_create_policy[domain_constraints_exclude]", "tests/functional/services/auth/service_client/test_create_policy.py::test_compatible_create_policy_usage_rejects_too_many_positionals", "tests/functional/services/auth/service_client/test_create_policy.py::test_policy_usage_warns_and_errors_when_argument_is_supplied_twice", "tests/functional/services/auth/service_client/test_create_project.py::test_create_project_admin_id_styles[list]", "tests/functional/services/auth/service_client/test_create_project.py::test_create_project_admin_id_styles[uuid]", "tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[required_domains]", "tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[no_dependent_scopes]", "tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[not_advertised]", "tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[allows_refresh_token]", "tests/functional/services/auth/service_client/test_create_scope.py::test_create_scope[disallows_refresh_token]", "tests/functional/services/auth/service_client/test_delete_client_credential.py::test_delete_credential[UUID]", "tests/functional/services/auth/service_client/test_delete_scope.py::test_delete_scope[UUID]", "tests/functional/services/auth/service_client/test_get_client_credentials.py::test_get_client_credentials[str]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[globus@globus.org]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[usernames1]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_success[usernames2]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_provision[1-true]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_provision[true-true]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]", "tests/functional/services/auth/service_client/test_get_identities.py::test_get_identities_multiple_usernames_success[usernames2]", "tests/functional/services/auth/service_client/test_get_identity_providers.py::test_get_identity_providers_by_ids", "tests/functional/services/auth/service_client/test_get_projects.py::test_get_projects", "tests/functional/services/auth/service_client/test_update_client.py::test_links_requirement", "tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[project_id_uuid]", "tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[display_name]", "tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[no_domain_constrants_include]", "tests/functional/services/auth/service_client/test_update_policy.py::test_update_policy[no_domain_constrants_exclude]", "tests/functional/services/auth/service_client/test_update_project.py::test_update_project_admin_id_styles[list]", "tests/functional/services/auth/service_client/test_update_project.py::test_update_project_admin_id_styles[set]", "tests/functional/services/auth/service_client/test_update_project.py::test_update_project_group_id_styles[set]", "tests/functional/services/auth/service_client/test_update_project.py::test_update_project_group_id_styles[uuid]", "tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[name]", "tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[scope_suffix]", "tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[dependent_scopes]", "tests/functional/services/auth/service_client/test_update_scope.py::test_update_scope[advertised]", "tests/functional/services/auth/service_client/test_userinfo.py::test_userinfo_error_handling[unauthorized]", "tests/functional/services/auth/service_client/test_userinfo.py::test_userinfo_error_handling[forbidden]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-None-None-confidential_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[example.edu-None-None-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option3-None-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-foo-id-None-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option5-None-None-None-confidential_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-identity_option6-None-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-policy_option8-None-None-confidential_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-policy_option10-None-None-native_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_supports_session_params[None-None-None-True-None-confidential_app]", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_native_defaults", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential_custom_params", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_native", "tests/functional/services/auth/test_identity_map.py::test_identity_map_batch_limit", "tests/functional/services/flows/test_flow_crud.py::test_create_flow[None]", "tests/functional/services/flows/test_flow_crud.py::test_create_flow[dummy_subscription_id]", "tests/functional/services/flows/test_flow_crud.py::test_get_flow", "tests/functional/services/flows/test_flow_crud.py::test_delete_flow", "tests/functional/services/flows/test_flow_validate.py::test_validate_flow_error_parsing", "tests/functional/services/flows/test_get_run.py::test_get_run[True]", "tests/functional/services/flows/test_get_run_logs.py::test_get_run_logs_paginated", "tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[None-bar-foo]", "tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[created_at ASC-None-None]", "tests/functional/services/flows/test_list_flows.py::test_list_flows_simple[created_at ASC-bar-None]", "tests/functional/services/flows/test_list_flows.py::test_list_flows_paginated[False]", "tests/functional/services/flows/test_list_flows.py::test_list_flows_orderby_multi[seq-orderby_value1]", "tests/functional/services/flows/test_list_flows.py::test_list_flows_orderby_multi[generator-orderby_value3]", "tests/functional/services/flows/test_list_runs.py::test_list_runs_paginated[True]", "tests/functional/services/flows/test_run_crud.py::test_update_run[values3]", "tests/functional/services/flows/test_run_crud.py::test_update_run[values5]", "tests/functional/services/flows/test_run_crud.py::test_update_run[values6]", "tests/functional/services/flows/test_run_crud.py::test_update_run[values7]", "tests/functional/services/flows/test_run_crud.py::test_update_run_additional_fields", "tests/functional/services/flows/test_run_crud.py::test_delete_run_success", "tests/functional/services/flows/test_run_crud.py::test_delete_run_conflict", "tests/functional/services/flows/test_run_flow.py::test_run_flow", "tests/functional/services/flows/test_run_flow.py::test_run_flow_missing_scope", "tests/functional/services/gcs/test_collections.py::test_get_collection_includes_sideloaded_data", "tests/functional/services/gcs/test_collections.py::test_get_collection_invalid_datatype_type", "tests/functional/services/gcs/test_collections.py::test_delete_collection", "tests/functional/services/gcs/test_endpoints.py::test_get_endpoint", "tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_infers_data_type", "tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_infers_data_type_when_control_port_specified", "tests/functional/services/gcs/test_endpoints.py::test_endpoint_document_respects_explicit_data_type", "tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list", "tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[None-None]", "tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[include_param3-foo,bar]", "tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]", "tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[include_param3]", "tests/functional/services/gcs/test_storage_gateways.py::test_create_storage_gateway", "tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[None]", "tests/functional/services/gcs/test_storage_gateways.py::test_delete_storage_gateway_permission_denied", "tests/functional/services/groups/test_delete_group.py::test_delete_group", "tests/functional/services/groups/test_get_group.py::test_get_group", "tests/functional/services/groups/test_get_group_by_subscription_id.py::test_get_group_by_subscription_id", "tests/functional/services/groups/test_group_memberships.py::test_add_member[GroupRole.admin]", "tests/functional/services/groups/test_group_memberships.py::test_batch_action_payload[GroupRole.admin]", "tests/functional/services/groups/test_group_memberships.py::test_batch_action_payload[admin]", "tests/functional/services/groups/test_set_group_policies.py::test_set_group_policies_explicit_payload[str-GroupVisibility.authenticated-GroupMemberVisibility.managers-signup_fields1-signup_fields_str1-auth_timeout1]", "tests/functional/services/search/test_batch_delete_by_subject.py::test_batch_delete_by_subject_accepts_string", "tests/functional/services/search/test_create_index.py::test_create_index_limit_exceeded", "tests/functional/services/search/test_reopen_index.py::test_reopen_index_already_open", "tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]", "tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc2]", "tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc0]", "tests/functional/services/search/test_search_roles.py::test_search_role_create", "tests/functional/services/timer/test_jobs.py::test_get_job_errors", "tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]", "tests/functional/services/timer/test_jobs.py::test_create_job[interval1-start0]", "tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]", "tests/functional/services/timer/test_jobs.py::test_update_job", "tests/functional/services/timer/test_jobs.py::test_resume_job[None]", "tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[0-0]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-paramvalue2]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-0]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]", "tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs0-expected_qs0]", "tests/functional/services/transfer/test_operation_mkdir.py::test_operation_mkdir[my-user]", "tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[None]", "tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[local_user2]", "tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults", "tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-__iter__]", "tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]", "tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]", "tests/functional/services/transfer/test_simple.py::test_update_endpoint_invalid_activation_servers", "tests/functional/services/transfer/test_simple.py::test_create_endpoint", "tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs0-qs0]", "tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs2-qs2]", "tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs4-qs4]", "tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs5-qs5]", "tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo-foo]", "tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo,bar-foo,bar]", "tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo ASC,bar-foo ASC,bar]", "tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_success", "tests/functional/services/transfer/test_task_submit.py::test_delete_submit_success", "tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]", "tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[delete]", "tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]", "tests/functional/test_login_manager.py::test_command_line_login_flower_manager_native", "tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs1]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs5]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]", "tests/functional/tokenstorage_v2/test_json_token_storage.py::test_file_does_not_exist", "tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_and_get_token_data_by_resource_server", "tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_token_response_with_namespace", "tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_store_and_get_token_data_by_resource_server", "tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_get_token_data", "tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_constructor_rejects_memory_db", "tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_store_and_get_token_data_by_resource_server", "tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_base_error_class", "tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[SearchAPIError]", "tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[GCSAPIError]", "tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_json_for_dict_body", "tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[foo-bar-add_params2-latin-1-foo-bar]", "tests/unit/authorizers/test_basic_authorizer.py::test_get_authorization_header", "tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u30c6\\u30b9\\u30c8-\\u0434\\u0443\\u043c]", "tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers", "tests/unit/authorizers/test_client_credentials_authorizer.py::test_can_create_authorizer_from_mutable_scopes", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[with_new_refresh_token]", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_refresh_token_authorizer_rejects_auth_service_client", "tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_expired", "tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header", "tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_expired", "tests/unit/errors/test_auth_errors.py::test_auth_error_get_args_simple", "tests/unit/errors/test_common_functionality.py::test_binary_content_property", "tests/unit/errors/test_common_functionality.py::test_raw_text_property_warns", "tests/unit/errors/test_common_functionality.py::test_get_args[text_data-response_headers0-401-Error-Unauthorized]", "tests/unit/errors/test_common_functionality.py::test_get_args[{-response_headers4-400-Error-Bad Request]", "tests/unit/errors/test_common_functionality.py::test_consent_required_info_str", "tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_message", "tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[True]", "tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[False]", "tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig0-NetworkError]", "tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]", "tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]", "tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]", "tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]", "tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments[application/vnd.api+json]", "tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments_with_common_code[application/json]", "tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_messages_from_various_fields[application/unknown+json]", "tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_root_as_errors_array_by_default[error_doc0]", "tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory", "tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory_expired_access_token", "tests/unit/experimental/globus_app/test_authorizer_factory.py::test_client_credentials_authorizer_factory_no_tokens", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_client_environment_mismatch", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[sqlite-SQLiteTokenStorage]", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[memory-MemoryTokenStorage]", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[CustomMemoryTokenStorage-CustomMemoryTokenStorage]", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_creates_consent_client", "tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_refresh", "tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[scope_collection2]", "tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[scope_collection3]", "tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_evaluates_root_scope_requirements", "tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_fails_non_identifiable_responses", "tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_consent_error[error_dict1-401]", "tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters2]", "tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error_csv[authorization_parameters0]", "tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_errors_from_multiple_errors", "tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_legacy_authorization_error_with_code", "tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[GlobusAuthRequirementsError-data0-'code' must be a string]", "tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[LegacyConsentRequiredTransferError-data2-'code' must be the string 'ConsentRequired']", "tests/unit/experimental/test_client_integration.py::test_client_inherits_environment_from_globus_app", "tests/unit/experimental/test_client_integration.py::test_client_environment_does_not_match_the_globus_app_environment", "tests/unit/experimental/test_client_integration.py::test_transfer_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_transfer_client_add_app_data_access_scope", "tests/unit/experimental/test_client_integration.py::test_transfer_client_add_app_data_access_scope_chaining", "tests/unit/experimental/test_client_integration.py::test_auth_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_groups_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_search_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_timer_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_specific_flow_client_default_scopes", "tests/unit/experimental/test_client_integration.py::test_gcs_client_default_scopes", "tests/unit/experimental/test_local_server.py::test_server[localhost?code=abc123-abc123]", "tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[my-cool-app-my-cool-app]", "tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[jonathan-jonathan]", "tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[PRN\\n]", "tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[nul]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs6-1.7.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs7-1.5.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs11-1.8.0]", "tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[POSIXCollectionPolicies]", "tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[allow_guest_collections]", "tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[delete_protected]", "tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[sharing_users_deny]", "tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-allow_guest_collections]", "tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-delete_protected]", "tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[False-allow_guest_collections]", "tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-allow_guest_collections]", "tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-disable_anonymous_writes]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data2]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data5]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data4]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data8]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data10]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data3]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data10]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data11]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data0]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data3]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data5]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data9]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data13]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google drive-Google Drive]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google-----drive-Google Drive]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google_-drIVE -Google Drive]", "tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[ GOOGLE DRIVE -Google Drive]", "tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[BlackPearl]", "tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[HPSS]", "tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[iRODS]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[StorageGatewayDocument]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStagingStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[AzureBlobStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[HPSSStoragePolicies]", "tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxx]", "tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]", "tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_string", "tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj0]", "tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj2]", "tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok", "tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[submission_id-foo]", "tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[skip_activation_check-True]", "tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_interval_only", "tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_formats_start[input_time1-2023-10-27T05:38:49+00:00]", "tests/unit/helpers/test_transfer.py::test_transfer_init_no_client", "tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args2]", "tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args3]", "tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs2]", "tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields", "tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args0-kwargs0]", "tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args2-kwargs2]", "tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]", "tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args3]", "tests/unit/helpers/test_transfer.py::test_delete_iter_items", "tests/unit/helpers/test_transfer.py::test_transfer_iter_items", "tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]", "tests/unit/helpers/test_transfer.py::test_notification_options[None-False-None]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-None-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-True-None]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]", "tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[exists-0]", "tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[size-1]", "tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[EXISTS-ValueError]", "tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-transfer]", "tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]", "tests/unit/helpers/test_transfer.py::test_add_filter_rule", "tests/unit/responses/test_activation_response.py::test_supports_web_activation", "tests/unit/responses/test_activation_response.py::test_always_activated", "tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups", "tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope1-resource_server_1]", "tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures", "tests/unit/responses/test_response.py::test_data", "tests/unit/responses/test_response.py::test_bool", "tests/unit/responses/test_response.py::test_len_array", "tests/unit/responses/test_response.py::test_iter_array_bad_data", "tests/unit/responses/test_response.py::test_text", "tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data", "tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data", "tests/unit/responses/test_response.py::test_http_status_code_on_response", "tests/unit/responses/test_response.py::test_http_reason_on_response", "tests/unit/responses/test_response.py::test_http_headers_from_response", "tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1]", "tests/unit/scopes/test_mutable_scope.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr", "tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo[]", "tests/unit/scopes/test_scope_builder.py::test_known_url_scopes", "tests/unit/scopes/test_scope_builder.py::test_scopebuilder_make_mutable_produces_same_strings", "tests/unit/scopes/test_scope_builder.py::test_flows_scopes_creation", "tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection1-scope1 scope2]", "tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection4-scope1 scope2 scope3 scope4]", "tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope1]", "tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection3-scope1 scope2 scope3]", "tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection5-bar]", "tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_simple", "tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_optional", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo*[bar]]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *[bar]]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[* foo]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[[foo]]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar]baz]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[baz[bar]]]]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_very_large_cycles_quickly", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo]", "tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_fails_on_multiple_top_level_scopes", "tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo[]", "tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[bar[baz]] bar[*baz]-reserialized2]", "tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_treenode_repr", "tests/unit/test_auth_clients.py::test_service_client_does_not_require_client_id", "tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-AuthLoginClient]", "tests/unit/test_auth_clients.py::test_native_app_auth_client_rejects_authorizer", "tests/unit/test_auth_clients.py::test_confidential_app_auth_client_rejects_authorizer", "tests/unit/test_base_client.py::test_http_methods[delete-False]", "tests/unit/test_base_client.py::test_http_methods[post-True]", "tests/unit/test_base_client.py::test_handle_url_unsafe_chars", "tests/unit/test_base_client.py::test_base_path_matching_prefix[True-True]", "tests/unit/test_base_client.py::test_base_path_matching_prefix[False-False]", "tests/unit/test_base_client.py::test_app_integration", "tests/unit/test_base_client.py::test_add_app_scope_chaining", "tests/unit/test_config.py::test_get_ssl_verify[true-True]", "tests/unit/test_config.py::test_get_ssl_verify[0-False]", "tests/unit/test_config.py::test_get_ssl_verify[f-False]", "tests/unit/test_config.py::test_get_ssl_verify[False-False]", "tests/unit/test_config.py::test_get_ssl_verify[OFF-False]", "tests/unit/test_config.py::test_get_ssl_verify[/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert-/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert]", "tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]", "tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[1.0]", "tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[/workspace/globus-sdk-python/tests/unit/bogus.bogus]", "tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]", "tests/unit/test_config.py::test_get_http_timeout[1-1.0]", "tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]", "tests/unit/test_config.py::test_get_http_timeout[0-0.0]", "tests/unit/test_config.py::test_get_http_timeout[-1-None]", "tests/unit/test_config.py::test_get_http_timeout[t-ValueError]", "tests/unit/test_config.py::test_get_http_timeout_with_explicit_value", "tests/unit/test_config.py::test_get_environment_name", "tests/unit/test_config.py::test_env_config_registration", "tests/unit/test_config.py::test_service_url_from_env_var", "tests/unit/test_guards.py::test_list_of_guard[value0-str-True]", "tests/unit/test_guards.py::test_list_of_guard[value1-int-True]", "tests/unit/test_guards.py::test_list_of_guard[value4-list-True]", "tests/unit/test_guards.py::test_list_of_guard[value7-int-False]", "tests/unit/test_guards.py::test_list_of_guard[list-list-False]", "tests/unit/test_guards.py::test_list_of_guard[list-str-False]", "tests/unit/test_guards.py::test_list_of_guard[value11-list-False]", "tests/unit/test_guards.py::test_opt_guard[foo-str-True]", "tests/unit/test_guards.py::test_opt_guard[foo-str-False]", "tests/unit/test_guards.py::test_opt_guard[-int-False]", "tests/unit/test_guards.py::test_opt_list_guard[NoneType-str-False]", "tests/unit/test_lazy_imports.py::test_explicit_dir_func_works", "tests/unit/test_lazy_imports.py::test_attribute_error_on_bad_name", "tests/unit/test_missing_type.py::test_missing_sentinel_bools_as_false", "tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[list_runs]", "tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_collection_list]", "tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[scroll]", "tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_skipped_errors]", "tests/unit/test_specific_flows_client.py::test_specific_flow_client_class_errors_on_resource_server_access", "tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_scope_access", "tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_resource_server_access", "tests/unit/test_timers_client.py::test_create_job_rejects_transfer_timer", "tests/unit/test_tokenstorage.py::test_sqliteadapter_passes_connect_params", "tests/unit/test_utils.py::test_b64str_ascii", "tests/unit/test_utils.py::test_sha256string", "tests/unit/test_utils.py::test_slash_join[a-/b]", "tests/unit/test_utils.py::test_slash_join[a/b-]", "tests/unit/test_utils.py::test_classproperty_simple", "tests/unit/test_utils.py::test_safe_strseq_iter[value3-expected_result3]", "tests/unit/test_utils.py::test_check_uuid_ok[00000000-0000-0000-0000-000000000001]", "tests/unit/test_utils.py::test_check_uuid_fails_value[]", "tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[x=y,omicron=iota-x=y,omicron=iota]", "tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value2-x=y]", "tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value3-x=y,alpha=b01]", "tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[503]", "tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]", "tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_transient_error]", "tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-False]", "tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-tune_value4]", "tests/unit/transport/test_transport.py::test_transport_tuning[http_timeout-60-120]", "tests/unit/transport/test_transport.py::test_transport_tuning[retry_backoff-_exponential_backoff-_linear_backoff]", "tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-1]", "tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer", "tests/unit/transport/test_transport_authz_handling.py::test_will_null_authz_header_with_null_authorizer", "tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[foo]", "tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[bar]", "tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents1-expected_data1]", "tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[True-payload_contents0-expected_data0]", "tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[False-payload_contents5-expected_data5]"], "failure": []}, "tests_observed": 454, "resolved": true}, "test_output": "pVisibility.authenticated-GroupMemberVisibility.managers-signup_fields1-signup_fields_str1-auth_timeout1]\nPASSED tests/functional/services/groups/test_set_group_policies.py::test_set_group_policies_explicit_payload[str-private-members-signup_fields2-signup_fields_str2-0]\nPASSED tests/functional/services/groups/test_set_group_policies.py::test_set_group_policies_explicit_payload[str-authenticated-managers-signup_fields3-signup_fields_str3-None]\nPASSED tests/functional/services/search/test_batch_delete_by_subject.py::test_batch_delete_by_subject\nPASSED tests/functional/services/search/test_batch_delete_by_subject.py::test_batch_delete_by_subject_accepts_string\nPASSED tests/functional/services/search/test_batch_delete_by_subject.py::test_batch_delete_by_subject_allows_additional_params\nPASSED tests/functional/services/search/test_create_index.py::test_create_index\nPASSED tests/functional/services/search/test_create_index.py::test_create_index_limit_exceeded\nPASSED tests/functional/services/search/test_reopen_index.py::test_reopen_index\nPASSED tests/functional/services/search/test_reopen_index.py::test_reopen_index_already_open\nPASSED tests/functional/services/search/test_search.py::test_search_query_simple\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc1]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc2]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc1]\nPASSED tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc1]\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_create\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_delete\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_list\nPASSED tests/functional/services/timer/test_jobs.py::test_list_jobs\nPASSED tests/functional/services/timer/test_jobs.py::test_get_job\nPASSED tests/functional/services/timer/test_jobs.py::test_get_job_errors\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval0-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval1-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval1-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[600-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[600-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[None-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job_validation_error\nPASSED tests/functional/services/timer/test_jobs.py::test_update_job\nPASSED tests/functional/services/timer/test_jobs.py::test_delete_job\nPASSED tests/functional/services/timer/test_jobs.py::test_pause_job\nPASSED tests/functional/services/timer/test_jobs.py::test_resume_job[True]\nPASSED tests/functional/services/timer/test_jobs.py::test_resume_job[False]\nPASSED tests/functional/services/timer/test_jobs.py::test_resume_job[None]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[True-1]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[False-0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[1-1]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[0-0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-paramvalue2]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-paramvalue4]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-True]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-False]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_local_user-foouser]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_status-ACTIVE]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_status_list\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_completion_time_datetime_tuple\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_by_endpoint_use[source]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_by_endpoint_use[destination]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_usage_error_on_filter_endpoint_use_without_endpoint[source]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_usage_error_on_filter_endpoint_use_without_endpoint[destination]\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs0-expected_qs0]\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs1-expected_qs1]\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs2-expected_qs2]\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs3-expected_qs3]\nPASSED tests/functional/services/transfer/test_operation_ls.py::test_operation_ls_params[kwargs4-expected_qs4]\nPASSED tests/functional/services/transfer/test_operation_mkdir.py::test_operation_mkdir[my-user]\nPASSED tests/functional/services/transfer/test_operation_mkdir.py::test_operation_mkdir[None]\nPASSED tests/functional/services/transfer/test_operation_mkdir.py::test_operation_mkdir[local_user2]\nPASSED tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[my-user]\nPASSED tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[None]\nPASSED tests/functional/services/transfer/test_operation_rename.py::test_operation_rename[local_user2]\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_one_page\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_manager_task_list-paged_data2-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_manager_task_list-paged_data2-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_multipage_iter_items\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_non_paginated\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[wrap]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]\nPASSED tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[wrap]\nPASSED tests/functional/services/transfer/test_simple.py::test_get_endpoint\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint[UUID]\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint[str]\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint_rewrites_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint_invalid_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_create_endpoint\nPASSED tests/functional/services/transfer/test_simple.py::test_create_endpoint_invalid_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_autoactivation\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs0-qs0]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs1-qs1]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs2-qs2]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs3-qs3]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs4-qs4]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs5-qs5]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs6-qs6]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list[client_kwargs7-qs7]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo-foo]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[orderby_value1-foo]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo,bar-foo,bar]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[foo ASC,bar-foo ASC,bar]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[orderby_value4-foo ASC,bar]\nPASSED tests/functional/services/transfer/test_task_list.py::test_task_list_orderby_parameter[orderby_value5-foo ASC,bar DESC]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_failure\nPASSED tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_success\nPASSED tests/functional/services/transfer/test_task_submit.py::test_delete_submit_success\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[delete]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[transfer]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[delete]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs0]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs1]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs2]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_success_case\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_unfinished_case\nPASSED tests/functional/test_login_manager.py::test_command_line_login_flower_manager_native\nPASSED tests/functional/test_login_manager.py::test_command_line_login_flower_manager_confidential\nPASSED tests/functional/test_login_manager.py::test_local_server_login_flower_manager_native\nPASSED tests/functional/test_login_manager.py::test_local_server_login_flower_manager_confidential\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_does_not_exist\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_perms\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs1]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs2]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs3]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs4]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs5]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs6]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve_simple_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_on_refresh_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve_different_namespaces\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_token_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_tokens\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_iter_namespaces\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_file_does_not_exist\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_file_exists\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_and_get_token_data_by_resource_server\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_token_response_with_namespace\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_get_token_data\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_remove_token_data\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_store_perms\nPASSED tests/functional/tokenstorage_v2/test_json_token_storage.py::test_migrate_from_simple\nPASSED tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_store_and_get_token_data_by_resource_server\nPASSED tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_store_token_response_with_namespace\nPASSED tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_get_token_data\nPASSED tests/functional/tokenstorage_v2/test_memory_token_storage.py::test_remove_token_data\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_constructor[kwargs0]\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_constructor[kwargs1]\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_constructor_rejects_memory_db\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_store_and_get_token_data_by_resource_server\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_multiple_adapters_store_and_retrieve\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_multiple_adapters_store_and_retrieve_different_namespaces\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_load_missing_token_data\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_remove_tokens\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_iter_namespaces\nPASSED tests/functional/tokenstorage_v2/test_sqlite_token_storage.py::test_backwards_compatible_storage\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_base_error_class\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[SearchAPIError]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[AuthAPIError]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[TransferAPIError]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[FlowsAPIError]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_can_be_customized_to_service_error_classes[GCSAPIError]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_defaults_to_json_for_dict_body\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[foo-bar-add_params0-utf-8-foo-bar]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[foo-bar-add_params1-utf-8-foo-bar]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[foo-bar-add_params2-latin-1-foo-bar]\nPASSED tests/unit/_testing/test_construct_error.py::test_construct_error_allows_binary_content[\\xe9-add_params3-latin-1-\\xe9]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[user-\\u30c6\\u30b9\\u30c8]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u0434\\u0443\\u043c-pass]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u30c6\\u30b9\\u30c8-\\u0434\\u0443\\u043c]\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_get_token_response\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_can_create_authorizer_from_mutable_scopes\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_refresh_token_authorizer_rejects_auth_service_client\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_init\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_new_access_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_ok\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_expires\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/errors/test_auth_errors.py::test_auth_error_get_args_simple\nPASSED tests/unit/errors/test_auth_errors.py::test_nested_auth_error_message_and_code\nPASSED tests/unit/errors/test_auth_errors.py::test_auth_error_parses_error_id[error_body0-foo]\nPASSED tests/unit/errors/test_auth_errors.py::test_auth_error_parses_error_id[error_body1-None]\nPASSED tests/unit/errors/test_auth_errors.py::test_auth_error_parses_error_id[error_body2-foo]\nPASSED tests/unit/errors/test_auth_errors.py::test_auth_error_parses_error_id[error_body3-foo]\nPASSED tests/unit/errors/test_common_functionality.py::test_raw_json_property\nPASSED tests/unit/errors/test_common_functionality.py::test_raw_json_none_on_nonjson_data[text_data-response_headers0]\nPASSED tests/unit/errors/test_common_functionality.py::test_raw_json_none_on_nonjson_data[{-response_headers1]\nPASSED tests/unit/errors/test_common_functionality.py::test_text_property\nPASSED tests/unit/errors/test_common_functionality.py::test_binary_content_property\nPASSED tests/unit/errors/test_common_functionality.py::test_raw_text_property_warns\nPASSED tests/unit/errors/test_common_functionality.py::test_get_args[text_data-response_headers0-401-Error-Unauthorized]\nPASSED tests/unit/errors/test_common_functionality.py::test_get_args[body1-response_headers1-403-Error-Forbidden]\nPASSED tests/unit/errors/test_common_functionality.py::test_get_args[body2-response_headers2-403-foo-bar]\nPASSED tests/unit/errors/test_common_functionality.py::test_get_args[[]-response_headers3-403-Error-Forbidden]\nPASSED tests/unit/errors/test_common_functionality.py::test_get_args[{-response_headers4-400-Error-Bad Request]\nPASSED tests/unit/errors/test_common_functionality.py::test_info_is_falsey_on_non_dict_json\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body0-True-required_scopes0]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body1-True-required_scopes1]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body2-False-None]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body3-False-None]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body4-False-None]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info[body5-False-None]\nPASSED tests/unit/errors/test_common_functionality.py::test_consent_required_info_str\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_message\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_malformed_session_message\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_identities\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_malformed_session_required_identities\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_single_domain\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_malformed_session_required_single_domain\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_policies[foo,bar]\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_policies[policies_value1]\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_malformed_session_required_policies\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[True]\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_session_required_mfa[False]\nPASSED tests/unit/errors/test_common_functionality.py::test_authz_params_info_containing_malformed_session_required_mfa\nPASSED tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig0-NetworkError]\nPASSED tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]\nPASSED tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig2-GlobusConnectionTimeoutError]\nPASSED tests/unit/errors/test_common_functionality.py::test_requests_err_wrappers[orig3-GlobusConnectionError]\nPASSED tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig0-NetworkError]\nPASSED tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig1-GlobusTimeoutError]\nPASSED tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]\nPASSED tests/unit/errors/test_common_functionality.py::test_convert_requests_exception[orig3-GlobusConnectionError]\nPASSED tests/unit/errors/test_common_functionality.py::test_http_reason_exposure[400-Bad Request]\nPASSED tests/unit/errors/test_common_functionality.py::test_http_reason_exposure[500-Internal Server Error]\nPASSED tests/unit/errors/test_common_functionality.py::test_http_header_exposure\nPASSED tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]\nPASSED tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]\nPASSED tests/unit/errors/test_common_functionality.py::test_error_repr_has_expected_info[PUT-501-None-https://bogus.example.org/bar-Not Implemented-None]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments[application/json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments[application/unknown+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments[application/vnd.api+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments_with_common_code[application/json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments_with_common_code[application/unknown+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_subdocuments_with_common_code[application/vnd.api+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_messages_from_various_fields[application/json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_messages_from_various_fields[application/unknown+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_loads_jsonapi_error_messages_from_various_fields[application/vnd.api+json]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_root_as_errors_array_by_default[error_doc0]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_root_as_errors_array_by_default[error_doc1]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_errors_array_if_present[error_doc0]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_errors_array_if_present[error_doc1]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_errors_array_if_present[error_doc2]\nPASSED tests/unit/errors/test_common_functionality.py::test_non_jsonapi_parsing_uses_errors_array_if_present[error_doc3]\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory_no_tokens\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_access_token_authorizer_factory_expired_access_token\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_refresh_token_authorizer_factory\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_refresh_token_authorizer_factory_expired_access_token\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_refresh_token_authorizer_factory_no_refresh_token\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_client_credentials_authorizer_factory\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_client_credentials_authorizer_factory_no_tokens\nPASSED tests/unit/experimental/globus_app/test_authorizer_factory.py::test_client_credentials_authorizer_factory_no_scopes\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_native\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_client\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_no_client_or_id\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_both_client_and_id\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_client_environment_mismatch\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_default_token_storage\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[json-JSONTokenStorage]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[sqlite-SQLiteTokenStorage]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[memory-MemoryTokenStorage]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[token_storage_value3-CustomMemoryTokenStorage]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_token_storage_configuration[CustomMemoryTokenStorage-CustomMemoryTokenStorage]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_creates_consent_client\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_flow_manager_configuration[None-CommandLineLoginFlowManager]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_flow_manager_configuration[command-line-CommandLineLoginFlowManager]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_flow_manager_configuration[local-server-LocalServerLoginFlowManager]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_flow_manager_configuration[value3-MockLoginFlowManager]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_login_flow_manager_configuration[MockLoginFlowManager-MockLoginFlowManager]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_templated\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_refresh\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_client_app\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_client_app_no_secret\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_and_auth_params_with_required_scopes\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[email0]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[email1]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[scope_collection2]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_add_scope_requirements_accepts_different_scope_types[scope_collection3]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[email0]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[email1]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[scope_collection2]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_constructor_scope_requirements_accepts_different_scope_types[scope_collection3]\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_get_authorizer\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_get_authorizer_clears_cache_when_adding_scope_requirements\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_get_authorizer_refresh\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_expired_authorizer_triggers_login\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_client_app_get_authorizer\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_user_app_run_login_flow\nPASSED tests/unit/experimental/globus_app/test_globus_app.py::test_client_app_run_login_flow\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_evaluates_identity_requirements\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_evaluates_root_scope_requirements\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_evaluates_dependent_scope_requirements\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_fails_non_identifiable_responses\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_loads_identity_info_from_storage\nPASSED tests/unit/experimental/globus_app/test_validating_token_storage.py::test_validating_token_storage_raises_error_when_no_token_data\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_consent_error[error_dict0-403]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_consent_error[error_dict1-401]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters0]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters1]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters2]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error[authorization_parameters3]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error_csv[authorization_parameters0]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_authorization_error_csv[authorization_parameters1]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_errors_from_multiple_errors\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_create_auth_requirements_error_from_legacy_authorization_error_with_code\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_backward_compatibility_consent_required_error\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[GlobusAuthRequirementsError-data0-'code' must be a string]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[LegacyAuthorizationParametersError-data1-'authorization_parameters' must be a 'LegacyAuthorizationParameters' object or a dictionary]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[LegacyConsentRequiredTransferError-data2-'code' must be the string 'ConsentRequired']\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_error_from_dict_insufficient_input[LegacyConsentRequiredAPError-data3-'code' must be the string 'ConsentRequired']\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_authorization_parameters_from_empty_dict[GlobusAuthorizationParameters]\nPASSED tests/unit/experimental/test_auth_requirements_error.py::test_authorization_parameters_from_empty_dict[LegacyAuthorizationParameters]\nPASSED tests/unit/experimental/test_local_server.py::test_server[localhost?code=abc123-abc123]\nPASSED tests/unit/experimental/test_local_server.py::test_server[localhost?error=bad_login-expected_result1]\nPASSED tests/unit/experimental/test_local_server.py::test_server[localhost-expected_result2]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[Globus CLI v3.30.0-globus-cli-v3-30-0]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[my-cool-app-my-cool-app]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_of_basic_app_names[jonathan-jonathan]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_replaces_reserved_characters\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_removes_control_characters\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_empty_name\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[CON]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[PRN\\n]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[nul]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[LPT9]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_slugification_rejects_reserved_names[COM1]\nPASSED tests/unit/experimental/test_token_storage.py::test_app_name_allows_reserved_name_prefixes\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_base_abstract\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_type_field\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs4-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs6-1.7.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs0-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs1-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs2-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs3-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs4-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs6-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs7-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs9-1.8.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs10-1.7.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs11-1.8.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_add_custom\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[dict]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[POSIXCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[POSIXStagingCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field_encoded[GoogleCloudStorageCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[allow_guest_collections]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[delete_protected]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[disable_anonymous_writes]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[domain_name]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[guest_auth_policy_id]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[policies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[sharing_restrict_paths]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[sharing_users_allow]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[sharing_users_deny]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_mapped_collections[storage_gateway_id]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_guest_collections[mapped_collection_id]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_settings_which_are_only_supported_in_guest_collections[user_credential_id]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-allow_guest_collections]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-delete_protected]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[True-disable_anonymous_writes]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[False-allow_guest_collections]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[False-delete_protected]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[False-disable_anonymous_writes]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-allow_guest_collections]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-delete_protected]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_mapped_collection_opt_bool[None-disable_anonymous_writes]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_deprecated_connector_lookup_method_warns\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data0]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data1]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data2]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data3]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data4]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data5]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data6]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data7]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data8]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data9]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data10]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data11]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data12]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_attribute[connector_data13]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data0]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data1]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data2]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data3]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data4]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data5]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data6]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data7]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data8]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data9]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data10]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data11]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data12]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[True-connector_data13]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data0]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data1]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data2]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data3]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data4]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data5]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data6]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data7]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data8]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data9]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data10]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data11]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data12]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_id[False-connector_data13]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data0]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data1]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data2]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data3]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data4]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data5]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data6]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data7]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data8]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data9]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data10]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data11]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data12]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name[connector_data13]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[Google Drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google_drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google-drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google-----drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google-_-drive-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[ google_-drIVE-Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[google_-drIVE -Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_lookup_by_name_normalization[ GOOGLE DRIVE -Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[ActiveScale]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Azure Blob]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[BlackPearl]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Box]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Ceph]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Dropbox]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Google Cloud Storage]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[Google Drive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[HPSS]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[iRODS]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[POSIX]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[POSIX Staging]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[OneDrive]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_names_map_to_attributes[S3]\nPASSED tests/unit/helpers/gcs/test_connector_table.py::test_all_connector_attributes_are_assigned\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_policy_document_conversion\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_posix_staging_env_vars\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[StorageGatewayDocument]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStagingStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BoxStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[CephStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleDriveStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleCloudStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[OneDriveStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[AzureBlobStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[S3StoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[ActiveScaleStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[HPSSStoragePolicies]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxx]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_simple_input_native_app_challenge\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_random_native_app_challenge\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_get_authorize_url_for_authorization_code\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_roundtrips_string\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_matches_str_of_mutable_scope\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_string\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj0]\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj1]\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_rejects_empty_collection[collection_obj2]\nPASSED tests/unit/helpers/test_auth_scope_stringify.py::test_scope_stringify_handles_none_with_default\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[submission_id-foo]\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[skip_activation_check-True]\nPASSED tests/unit/helpers/test_timer.py::test_transfer_timer_ok\nPASSED tests/unit/helpers/test_timer.py::test_transfer_timer_removes_disallowed_fields\nPASSED tests/unit/helpers/test_timer.py::test_once_timer_schedule_formats_datetime[tomorrow-tomorrow]\nPASSED tests/unit/helpers/test_timer.py::test_once_timer_schedule_formats_datetime[input_time1-2023-10-27T05:38:49+00:00]\nPASSED tests/unit/helpers/test_timer.py::test_once_timer_schedule_formats_datetime[input_time2-2023-10-27T05:38:49+01:00]\nPASSED tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_interval_only\nPASSED tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_formats_start[tomorrow-tomorrow]\nPASSED tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_formats_start[input_time1-2023-10-27T05:38:49+00:00]\nPASSED tests/unit/helpers/test_timer.py::test_recurring_timer_schedule_formats_datetime_for_end\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_simple\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_w_params\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_no_client\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args0]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args1]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args2]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args3]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_init_rejects_bad_usage[tdata_args4]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_symlink_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_client\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs3]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args0-kwargs0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args1-kwargs1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args2-kwargs2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args3]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[exists-0]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[0-0]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[size-1]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[1-1]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[mtime-2]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[2-2]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[checksum-3]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[3-3]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[EXISTS-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[hash-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_sync_levels_result[100-100]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[None-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[None-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_add_filter_rule\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[foo-foo]\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter1-foo:bar/a:b,c]\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter2-expected2]\nPASSED tests/unit/responses/test_activation_response.py::test_expires_at\nPASSED tests/unit/responses/test_activation_response.py::test_supports_auto_activation[True]\nPASSED tests/unit/responses/test_activation_response.py::test_supports_auto_activation[False]\nPASSED tests/unit/responses/test_activation_response.py::test_supports_web_activation\nPASSED tests/unit/responses/test_activation_response.py::test_active_until\nPASSED tests/unit/responses/test_activation_response.py::test_always_activated\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope1-resource_server_1]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope2 scope2:0 scope2:1-resource_server_2]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope3:0 scope3:1-resource_server_3]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_fancy\nPASSED tests/unit/responses/test_oauth_token_response.py::test_stringify\nPASSED tests/unit/responses/test_oauth_token_response.py::test_stringify_dependent_tokens\nPASSED tests/unit/responses/test_response.py::test_data\nPASSED tests/unit/responses/test_response.py::test_str\nPASSED tests/unit/responses/test_response.py::test_text_response_repr_and_str_contain_raw_data\nPASSED tests/unit/responses/test_response.py::test_getitem\nPASSED tests/unit/responses/test_response.py::test_contains\nPASSED tests/unit/responses/test_response.py::test_bool\nPASSED tests/unit/responses/test_response.py::test_len_array\nPASSED tests/unit/responses/test_response.py::test_len_array_bad_data\nPASSED tests/unit/responses/test_response.py::test_iter_array_bad_data\nPASSED tests/unit/responses/test_response.py::test_get\nPASSED tests/unit/responses/test_response.py::test_text\nPASSED tests/unit/responses/test_response.py::test_binary_content_property\nPASSED tests/unit/responses/test_response.py::test_no_content_type_header\nPASSED tests/unit/responses/test_response.py::test_client_required_with_requests_response\nPASSED tests/unit/responses/test_response.py::test_client_forbidden_when_wrapping\nPASSED tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data\nPASSED tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response\nPASSED tests/unit/responses/test_response.py::test_iterable_response_using_iter_key\nPASSED tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data\nPASSED tests/unit/responses/test_response.py::test_can_iter_array_response\nPASSED tests/unit/responses/test_response.py::test_http_status_code_on_response\nPASSED tests/unit/responses/test_response.py::test_http_reason_on_response\nPASSED tests/unit/responses/test_response.py::test_http_headers_from_response\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_with_callback\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#0.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#2.0.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_invalid_spec\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_invalid_datatype\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_str_and_repr_simple\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_str_and_repr_optional\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_str_and_repr_with_dependencies\nPASSED tests/unit/scopes/test_mutable_scope.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[*foo]\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo[bar]]\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo[]\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo]]\nPASSED tests/unit/scopes/test_mutable_scope.py::test_scope_init_forbids_special_chars[foo bar]\nPASSED tests/unit/scopes/test_scope_builder.py::test_url_scope_string\nPASSED tests/unit/scopes/test_scope_builder.py::test_urn_scope_string\nPASSED tests/unit/scopes/test_scope_builder.py::test_known_scopes\nPASSED tests/unit/scopes/test_scope_builder.py::test_known_url_scopes\nPASSED tests/unit/scopes/test_scope_builder.py::test_scopebuilder_str\nPASSED tests/unit/scopes/test_scope_builder.py::test_uniquely_named_scopes\nPASSED tests/unit/scopes/test_scope_builder.py::test_sb_allowed_inputs_types\nPASSED tests/unit/scopes/test_scope_builder.py::test_scopebuilder_make_mutable_produces_same_strings\nPASSED tests/unit/scopes/test_scope_builder.py::test_scopebuilder_make_mutable_can_be_optional\nPASSED tests/unit/scopes/test_scope_builder.py::test_flows_scopes_creation\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_roundtrip_simple_str\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_stringifies_single_scope\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_roundtrip_simple_str_in_collection[scope_collection0]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_roundtrip_simple_str_in_collection[scope_collection1]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_roundtrip_simple_str_in_collection[scope_collection2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_roundtrip_simple_str_in_collection[]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection0-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection1-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection2-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection3-scope1 scope2 scope3]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection4-scope1 scope2 scope3 scope4]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_str_handles_mixed_data[scope_collection5-bar]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope_collection0]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope_collection1]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope1]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_simple[scope_collection3]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection0-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection1-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection2-scope1 scope2]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection3-scope1 scope2 scope3]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection4-scope1 scope2 scope3 scope4]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_mixed_data[scope_collection5-bar]\nPASSED tests/unit/scopes/test_scope_normalization.py::test_scopes_to_scope_list_handles_dependent_scopes\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_simple\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_optional\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_str_and_repr_with_dependencies\nPASSED tests/unit/scopes/test_scope_parser.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr\nPASSED tests/unit/scopes/test_scope_parser.py::test_add_dependency_fails_if_optional_is_combined_with_scope[True]\nPASSED tests/unit/scopes/test_scope_parser.py::test_add_dependency_fails_if_optional_is_combined_with_scope[False]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_str_nested\nPASSED tests/unit/scopes/test_scope_parser.py::test_add_dependency_parses_scope_with_optional_marker\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_allows_empty_string\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_ignores_non_semantic_whitespace[foo -foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_ignores_non_semantic_whitespace[ foo-foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_ignores_non_semantic_whitespace[foo[ bar]-foo[bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo*]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo*[bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo *[bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo [bar*]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo * ]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[* foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[[foo]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[[bar]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar] baz]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo [bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_rejects_bad_inputs[foo[bar]baz]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[foo]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[*foo]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[foo]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[baz[bar]]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[*baz[bar]]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_cycles[foo[bar[*baz[*bar]]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_catches_and_rejects_very_large_cycles_quickly\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[*foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo[bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo[*bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo bar]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_accepts_valid_inputs[foo[bar[baz]]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_simple\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_with_dependencies\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_fails_on_empty\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_deserialize_fails_on_multiple_top_level_scopes\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[*foo]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo[bar]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo[]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo]]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_init_forbids_special_chars[foo bar]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[bar *bar]-reserialized0]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[*bar bar]-reserialized1]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[bar[baz]] bar[*baz]-reserialized2]\nPASSED tests/unit/scopes/test_scope_parser.py::test_scope_parsing_normalizes_optionals[foo[bar[*baz]] bar[baz]-reserialized3]\nPASSED tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_graph_str_single_node\nPASSED tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_graph_str_single_optional_node\nPASSED tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_graph_str_single_dependency\nPASSED tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_graph_str_optional_dependency\nPASSED tests/unit/scopes/test_scope_parser_intermediate_representations.py::test_treenode_repr\nPASSED tests/unit/test_auth_clients.py::test_service_client_does_not_require_client_id\nPASSED tests/unit/test_auth_clients.py::test_service_client_allows_client_id_but_warns[str]\nPASSED tests/unit/test_auth_clients.py::test_service_client_allows_client_id_but_warns[uuid]\nPASSED tests/unit/test_auth_clients.py::test_service_client_allows_client_id_assignment[str]\nPASSED tests/unit/test_auth_clients.py::test_service_client_allows_client_id_assignment[uuid]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-AuthLoginClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-ConfidentialAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-NativeAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-AuthLoginClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-ConfidentialAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-NativeAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_native_app_auth_client_rejects_authorizer\nPASSED tests/unit/test_auth_clients.py::test_confidential_app_auth_client_rejects_authorizer\nPASSED tests/unit/test_base_client.py::test_cannot_instantiate_plain_base_client\nPASSED tests/unit/test_base_client.py::test_can_instantiate_base_client_with_explicit_url\nPASSED tests/unit/test_base_client.py::test_set_http_timeout\nPASSED tests/unit/test_base_client.py::test_set_app_name[init]\nPASSED tests/unit/test_base_client.py::test_set_app_name[post_init]\nPASSED tests/unit/test_base_client.py::test_http_methods[get-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[delete-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[post-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[put-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[patch-True]\nPASSED tests/unit/test_base_client.py::test_handle_url_unsafe_chars\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_instance\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_class\nPASSED tests/unit/test_base_client.py::test_base_path_matching_prefix[True-True]\nPASSED tests/unit/test_base_client.py::test_base_path_matching_prefix[True-False]\nPASSED tests/unit/test_base_client.py::test_base_path_matching_prefix[False-True]\nPASSED tests/unit/test_base_client.py::test_base_path_matching_prefix[False-False]\nPASSED tests/unit/test_base_client.py::test_app_integration\nPASSED tests/unit/test_base_client.py::test_app_scopes\nPASSED tests/unit/test_base_client.py::test_add_app_scope\nPASSED tests/unit/test_base_client.py::test_add_app_scope_chaining\nPASSED tests/unit/test_base_client.py::test_app_mutually_exclusive\nPASSED tests/unit/test_base_client.py::test_app_name_override\nPASSED tests/unit/test_config.py::test_get_service_url\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[YES-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[true-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[t-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[True-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[ON-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[NO-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[false-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[f-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[False-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[OFF-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert-/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[/workspace/globus-sdk-python/tests/unit-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[/workspace/globus-sdk-python/tests/unit/bogus.bogus-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[invalid]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[1.0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[value2]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[value3]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[/workspace/globus-sdk-python/tests/unit]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[value5]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[/workspace/globus-sdk-python/tests/unit/bogus.bogus]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0 -1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0.0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-60.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-1-None]\nPASSED tests/unit/test_config.py::test_get_http_timeout[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[no-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[t-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[f-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_environment_name\nPASSED tests/unit/test_config.py::test_env_config_registration\nPASSED tests/unit/test_config.py::test_service_url_overrides\nPASSED tests/unit/test_config.py::test_service_url_from_env_var\nPASSED tests/unit/test_guards.py::test_list_of_guard[value0-str-True]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value1-int-True]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value2-str-True]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value3-list-True]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value4-list-True]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value5-str-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value6-int-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value7-int-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[list-list-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[list-str-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value10-str-False]\nPASSED tests/unit/test_guards.py::test_list_of_guard[value11-list-False]\nPASSED tests/unit/test_guards.py::test_opt_guard[None-str-True]\nPASSED tests/unit/test_guards.py::test_opt_guard[foo-str-True]\nPASSED tests/unit/test_guards.py::test_opt_guard[foo-str-False]\nPASSED tests/unit/test_guards.py::test_opt_guard[-int-False]\nPASSED tests/unit/test_guards.py::test_opt_guard[NoneType-str-False]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[value0-str-True]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[value1-int-True]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[value2-int-True]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[value3-str-True]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[None-str-True]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[value5-str-False]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[foo-str-False]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[-str-False]\nPASSED tests/unit/test_guards.py::test_opt_list_guard[NoneType-str-False]\nPASSED tests/unit/test_lazy_imports.py::test_explicit_dir_func_works\nPASSED tests/unit/test_lazy_imports.py::test_force_eager_imports_can_run\nPASSED tests/unit/test_lazy_imports.py::test_attribute_error_on_bad_name\nPASSED tests/unit/test_missing_type.py::test_missing_type_cannot_be_instantiated\nPASSED tests/unit/test_missing_type.py::test_missing_sentinel_bools_as_false\nPASSED tests/unit/test_missing_type.py::test_str_of_missing\nPASSED tests/unit/test_missing_type.py::test_copy_of_missing_is_self\nPASSED tests/unit/test_missing_type.py::test_pickle_of_missing_is_self\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_run_logs]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[list_flows]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[list_runs]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_collection_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_role_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_storage_gateway_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_user_credential_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[post_search]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[scroll]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[search]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_event_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_skipped_errors]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_manager_task_successful_transfers]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[endpoint_search]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[get_shared_endpoint_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[task_event_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[task_list]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[task_skipped_errors]\nPASSED tests/unit/test_paginator_signature_matching.py::test_paginated_method_matches_paginator_requirements[task_successful_transfers]\nPASSED tests/unit/test_specific_flows_client.py::test_specific_flow_client_class_errors_on_scope_access\nPASSED tests/unit/test_specific_flows_client.py::test_specific_flow_client_class_errors_on_resource_server_access\nPASSED tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_scope_access\nPASSED tests/unit/test_specific_flows_client.py::test_specific_flow_client_instance_supports_resource_server_access\nPASSED tests/unit/test_timers_client.py::test_create_job_rejects_transfer_timer\nPASSED tests/unit/test_timers_client.py::test_create_timer_rejects_timer_job\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_config\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_token_data\nPASSED tests/unit/test_tokenstorage.py::test_sqliteadapter_passes_connect_params\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_bad_data\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version\nPASSED tests/unit/test_tokenstorage.py::test_memory_adapter_store_overwrites_only_new_data\nPASSED tests/unit/test_utils.py::test_b64str_non_ascii\nPASSED tests/unit/test_utils.py::test_b64str_ascii\nPASSED tests/unit/test_utils.py::test_sha256string\nPASSED tests/unit/test_utils.py::test_slash_join[a-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-None]\nPASSED tests/unit/test_utils.py::test_payload_wrapper_methods\nPASSED tests/unit/test_utils.py::test_classproperty_simple\nPASSED tests/unit/test_utils.py::test_classproperty_prefers_instance\nPASSED tests/unit/test_utils.py::test_safe_strseq_iter[foo-expected_result0]\nPASSED tests/unit/test_utils.py::test_safe_strseq_iter[value1-expected_result1]\nPASSED tests/unit/test_utils.py::test_safe_strseq_iter[value2-expected_result2]\nPASSED tests/unit/test_utils.py::test_safe_strseq_iter[value3-expected_result3]\nPASSED tests/unit/test_utils.py::test_check_uuid_ok[value0]\nPASSED tests/unit/test_utils.py::test_check_uuid_ok[00000000-0000-0000-0000-000000000001]\nPASSED tests/unit/test_utils.py::test_check_uuid_fails_value[00000000-0000-0000-0000-00000000000]\nPASSED tests/unit/test_utils.py::test_check_uuid_fails_value[]\nPASSED tests/unit/test_utils.py::test_check_uuid_fails_type[value0]\nPASSED tests/unit/test_utils.py::test_check_uuid_fails_type[None]\nPASSED tests/unit/test_utils.py::test_check_uuid_fails_type[value2]\nPASSED tests/unit/transport/test_clientinfo.py::test_clientinfo_bool\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[x=y-x=y]\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[x=y,omicron=iota-x=y,omicron=iota]\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value2-x=y]\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_simple_item[value3-x=y,alpha=b01]\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_multiple_items[values0-x=y]\nPASSED tests/unit/transport/test_clientinfo.py::test_format_of_multiple_items[values1-x=y;alpha=b01,omicron=iota]\nPASSED tests/unit/transport/test_clientinfo.py::test_clientinfo_parses_as_expected\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_retry_after_header]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_transient_error]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-True]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-False]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-tune_value2]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-/workspace/globus-sdk-python/tests/unit/CA-Bundle.cert]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-tune_value4]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-/workspace/globus-sdk-python/tests/unit]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-tune_value6]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-/workspace/globus-sdk-python/tests/unit/bogus.bogus]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[http_timeout-60-120]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[retry_backoff-_exponential_backoff-_linear_backoff]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-10]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-1]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_retries-0-5]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_retries-10-0]\nPASSED tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer\nPASSED tests/unit/transport/test_transport_authz_handling.py::test_will_null_authz_header_with_null_authorizer\nPASSED tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[foo]\nPASSED tests/unit/transport/test_transport_encoders.py::test_text_request_encoder_accepts_string_data[bar]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_stringify_uuids_in_params_and_headers[FormRequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_stringify_uuids_in_params_and_headers[JSONRequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_stringify_uuids_in_params_and_headers[RequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_remove_missing_in_params_and_headers[FormRequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_remove_missing_in_params_and_headers[JSONRequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_all_request_encoders_remove_missing_in_params_and_headers[RequestEncoder]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[False-payload_contents0-expected_data0]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents1-expected_data1]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents2-expected_data2]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[False-payload_contents3-expected_data3]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents4-expected_data4]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[False-payload_contents5-expected_data5]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents6-expected_data6]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_payload_preparation[True-payload_contents7-expected_data7]\nPASSED tests/unit/transport/test_transport_encoders.py::test_json_encoder_is_well_defined_on_array_containing_missing\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[True-payload_contents0-expected_data0]\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[False-payload_contents1-expected_data1]\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[True-payload_contents2-expected_data2]\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[False-payload_contents3-expected_data3]\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[True-payload_contents4-expected_data4]\nPASSED tests/unit/transport/test_transport_encoders.py::test_form_encoder_payload_preparation[False-payload_contents5-expected_data5]\nSKIPPED [1] tests/functional/local_endpoint/test_personal.py:103: test requires Windows\nXFAIL tests/functional/services/auth/service_client/test_userinfo.py::test_userinfo\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_gridmap_permission_denied\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_endpoint_id_permission_denied\n============= 2 failed, 1376 passed, 1 skipped, 1 xfailed in 2.87s =============\n___NEMO_GYM_SCALE_SWE_TEST_END___\n\nexit status 1", "error": null, "eval_sandbox_start_time_taken": 12.20162296295166, "patch_verification_time_taken": 29.69845414161682, "_ng_task_index": 0, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "data-apis_array-api-compat_pr276", "language": "python", "test_results": {"FAIL_TO_PASS": {"success": ["test_fail_to_pass.py::test_clip_float_with_python_int[numpy]", "test_fail_to_pass.py::test_clip_float_with_python_int[torch]", "test_fail_to_pass.py::test_clip_float32_with_int_bounds[numpy]", "test_fail_to_pass.py::test_clip_float32_with_int_bounds[torch]", "test_fail_to_pass.py::test_clip_float_with_int_min_only[numpy]", "test_fail_to_pass.py::test_clip_float_with_int_min_only[torch]", "test_fail_to_pass.py::test_clip_float_with_int_max_only[numpy]", "test_fail_to_pass.py::test_clip_float_with_int_max_only[torch]"], "failure": []}, "PASS_TO_PASS": {"success": ["tests/test_all.py::test_all[dask.array]", "tests/test_array_namespace.py::test_array_namespace[numpy-None-None]", "tests/test_array_namespace.py::test_array_namespace[numpy-2021.12-False]", "tests/test_array_namespace.py::test_array_namespace[numpy-2022.12-True]", "tests/test_array_namespace.py::test_array_namespace[dask.array-None-True]", "tests/test_array_namespace.py::test_array_namespace[dask.array-None-None]", "tests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-None]", "tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-False]", "tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-None]", "tests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-None]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-None-False]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-True]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-False]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-None]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-True]", "tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-False]", "tests/test_array_namespace.py::test_array_namespace[jax.numpy-None-True]", "tests/test_array_namespace.py::test_array_namespace[jax.numpy-2021.12-False]", "tests/test_array_namespace.py::test_array_namespace[jax.numpy-2022.12-False]", "tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-True]", "tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-False]", "tests/test_array_namespace.py::test_array_namespace[ndonnx-None-True]", "tests/test_array_namespace.py::test_array_namespace[ndonnx-None-None]", "tests/test_array_namespace.py::test_array_namespace[ndonnx-2023.12-False]", "tests/test_array_namespace.py::test_array_namespace[sparse-None-False]", "tests/test_array_namespace.py::test_array_namespace[sparse-2023.12-True]", "tests/test_array_namespace.py::test_jax_zero_gradient", "tests/test_common.py::test_is_xp_array[is_numpy_array-numpy]", "tests/test_common.py::test_is_xp_array[is_numpy_array-dask.array]", "tests/test_common.py::test_is_xp_array[is_numpy_array-ndonnx]", "tests/test_common.py::test_is_xp_array[is_cupy_array-torch]", "tests/test_common.py::test_is_xp_array[is_torch_array-numpy]", "tests/test_common.py::test_is_xp_array[is_torch_array-jax.numpy]", "tests/test_common.py::test_is_xp_array[is_torch_array-ndonnx]", "tests/test_common.py::test_is_xp_array[is_dask_array-sparse]", "tests/test_common.py::test_is_xp_array[is_jax_array-torch]", "tests/test_common.py::test_is_xp_array[is_jax_array-dask.array]", "tests/test_common.py::test_is_xp_array[is_jax_array-jax.numpy]", "tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-torch]", "tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-dask.array]", "tests/test_common.py::test_is_xp_array[is_ndonnx_array-sparse]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-numpy]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-torch]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-dask.array]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-jax.numpy]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-sparse]", "tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-ndonnx]", "tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-torch]", "tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-dask.array]", "tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-sparse]", "tests/test_common.py::test_is_xp_namespace[is_torch_namespace-torch]", "tests/test_common.py::test_is_xp_namespace[is_dask_namespace-jax.numpy]", "tests/test_common.py::test_is_xp_namespace[is_dask_namespace-sparse]", "tests/test_common.py::test_is_xp_namespace[is_dask_namespace-array_api_strict]", "tests/test_common.py::test_is_xp_namespace[is_dask_namespace-ndonnx]", "tests/test_common.py::test_is_xp_namespace[is_jax_namespace-dask.array]", "tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-torch]", "tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-torch]", "tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-sparse]", "tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-ndonnx]", "tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-dask.array]", "tests/test_common.py::test_xp_is_array_generics[torch]", "tests/test_common.py::test_is_writeable_array[torch]", "tests/test_common.py::test_is_writeable_array[jax.numpy]", "tests/test_common.py::test_is_writeable_array[sparse]", "tests/test_common.py::test_size[numpy]", "tests/test_common.py::test_size[array_api_strict]", "tests/test_common.py::test_size[sparse]", "tests/test_common.py::test_size_none[torch]", "tests/test_common.py::test_is_lazy_array[torch]", "tests/test_common.py::test_is_lazy_array_nan_size[shape1]", "tests/test_common.py::test_is_lazy_array_bool_raises[TypeError]", "tests/test_common.py::test_is_lazy_array_bool_raises[AssertionError]", "tests/test_common.py::test_is_array_any_object[is_numpy_array]", "tests/test_common.py::test_is_array_any_object[is_torch_array]", "tests/test_common.py::test_is_array_any_object[is_jax_array]", "tests/test_common.py::test_is_array_any_object[is_ndonnx_array]", "tests/test_common.py::test_device[torch]", "tests/test_common.py::test_device[array_api_strict]", "tests/test_common.py::test_device[jax.numpy]", "tests/test_common.py::test_asarray_cross_library[numpy-dask.array]", "tests/test_common.py::test_asarray_cross_library[torch-dask.array]", "tests/test_common.py::test_asarray_cross_library[jax.numpy-dask.array]", "tests/test_common.py::test_asarray_cross_library[ndonnx-ndonnx]", "tests/test_dask.py::test_unary_ops_no_compute", "tests/test_dask.py::test_astype_no_compute[False]", "tests/test_dask.py::test_sort_argsort_chunks[sort-1]", "tests/test_dask.py::test_sort_argsort_chunk_size[argsort-shape0-auto]", "tests/test_dask.py::test_sort_argsort_meta[argsort]", "tests/test_isdtype.py::test_isdtype_spec_dtypes[dask.array]", "tests/test_isdtype.py::test_isdtype_additional_dtypes[float16-numpy]", "tests/test_isdtype.py::test_isdtype_additional_dtypes[complex256-torch]", "tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-numpy]", "tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-torch]", "tests/test_jax.py::test_device_jit[3]", "tests/test_no_dependencies.py::test_numpy_dependency[jax.numpy]", "tests/test_no_dependencies.py::test_numpy_dependency[sparse]", "tests/test_vendoring.py::test_vendoring_torch", "tests/test_vendoring.py::test_vendoring_dask"], "failure": []}, "tests_observed": 107, "resolved": true}, "test_output": "Previous HEAD position was adbb6ef Merge pull request #234 from lithomas1/dask-astype-copy\nHEAD is now at e14754b BUG: `clip(out=...)` is broken (#261)\nHEAD is now at e14754b BUG: `clip(out=...)` is broken (#261)\nSwitched to a new branch 'scaleswe'\nChecking patch array_api_compat/common/_aliases.py...\nApplied patch array_api_compat/common/_aliases.py cleanly.\n___NEMO_GYM_SCALE_SWE_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0\nrootdir: /workspace/array-api-compat\nplugins: asyncio-1.3.0, cov-7.0.0, timeout-2.4.0, xdist-3.8.0\nasyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function\ncollected 419 items\n\ntest_fail_to_pass.py .s..s..s..s..s. [ 3%]\ntests/test_all.py F.s.. [ 4%]\ntests/test_array_namespace.py ............ssssssssssss.................. [ 14%]\n..................................ss.ss..................... [ 29%]\ntests/test_common.py .s......s......s......s......s......s......s......s [ 41%]\n.......s.......s.......s.......s.......s.......s.......s.......s.......s [ 58%]\n........s.......s.....s.s.......................s....x..s...s.....ssssss [ 75%]\ns.s....F.sx...F.sx...Fsssss.sxsxxxx..s...s. [ 85%]\ntests/test_dask.py ...................... [ 91%]\ntests/test_isdtype.py .s...s...s...s...s.. [ 95%]\ntests/test_jax.py ...... [ 97%]\ntests/test_no_dependencies.py s...... [ 99%]\ntests/test_vendoring.py .s.. [100%]\n\n=============================== warnings summary ===============================\ntests/test_array_namespace.py::test_array_namespace[numpy-2021.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2021.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2021.12-None]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-True]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-None]\n /workspace/array-api-compat/array_api_compat/common/_helpers.py:436: UserWarning: The 2021.12 version of the array API specification was requested but the returned namespace is actually version 2024.12\n warnings.warn(f\"The {api_version} version of the array API specification was requested but the returned namespace is actually version 2024.12\")\n\ntests/test_array_namespace.py::test_array_namespace[numpy-2022.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2022.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2022.12-None]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-True]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-None]\n /workspace/array-api-compat/array_api_compat/common/_helpers.py:436: UserWarning: The 2022.12 version of the array API specification was requested but the returned namespace is actually version 2024.12\n warnings.warn(f\"The {api_version} version of the array API specification was requested but the returned namespace is actually version 2024.12\")\n\ntests/test_array_namespace.py::test_array_namespace[numpy-2023.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2023.12-True]\ntests/test_array_namespace.py::test_array_namespace[torch-2023.12-None]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-True]\ntests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-None]\ntests/test_array_namespace.py::test_api_version_torch\n /workspace/array-api-compat/array_api_compat/common/_helpers.py:436: UserWarning: The 2023.12 version of the array API specification was requested but the returned namespace is actually version 2024.12\n warnings.warn(f\"The {api_version} version of the array API specification was requested but the returned namespace is actually version 2024.12\")\n\ntests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-False]\ntests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-None]\n /usr/local/lib/python3.11/site-packages/array_api_strict/_array_object.py:577: UserWarning: The 2021.12 version of the array API specification was requested but the returned namespace is actually version 2022.12\n set_array_api_strict_flags(api_version=api_version)\n\ntests/test_common.py::test_asarray_cross_library[torch-dask.array]\n /workspace/array-api-compat/array_api_compat/dask/array/_aliases.py:184: DeprecationWarning: __array__ implementation doesn't accept a copy keyword, so passing copy=False failed. __array__ must implement 'dtype' and 'copy' keyword arguments. To learn more, see the migration guide https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword\n obj = np.array(obj, dtype=dtype, copy=True)\n\ntests/test_common.py::test_asarray_cross_library[jax.numpy-torch]\n /workspace/array-api-compat/tests/test_common.py:257: UserWarning: The given buffer is not writable, and PyTorch does not support non-writable tensors. This means you can write to the underlying (supposedly non-writable) buffer using the tensor. You may want to copy the buffer to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_new.cpp:1581.)\n b = tgt_lib.asarray(a)\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n=========================== short test summary info ============================\nPASSED test_fail_to_pass.py::test_clip_float_with_python_int[numpy]\nPASSED test_fail_to_pass.py::test_clip_float_with_python_int[torch]\nPASSED test_fail_to_pass.py::test_clip_float32_with_int_bounds[numpy]\nPASSED test_fail_to_pass.py::test_clip_float32_with_int_bounds[torch]\nPASSED test_fail_to_pass.py::test_clip_float_with_int_min_only[numpy]\nPASSED test_fail_to_pass.py::test_clip_float_with_int_min_only[torch]\nPASSED test_fail_to_pass.py::test_clip_float_with_int_max_only[numpy]\nPASSED test_fail_to_pass.py::test_clip_float_with_int_max_only[torch]\nPASSED test_fail_to_pass.py::test_clip_int_with_python_int[numpy]\nPASSED test_fail_to_pass.py::test_clip_int_with_python_int[torch]\nPASSED tests/test_all.py::test_all[numpy]\nPASSED tests/test_all.py::test_all[torch]\nPASSED tests/test_all.py::test_all[dask.array]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[numpy-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[torch-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[dask.array-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[array_api_strict-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[jax.numpy-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[ndonnx-2023.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-None-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-None-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-None-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2021.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2021.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2021.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2022.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2022.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2022.12-None]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2023.12-True]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2023.12-False]\nPASSED tests/test_array_namespace.py::test_array_namespace[sparse-2023.12-None]\nPASSED tests/test_array_namespace.py::test_jax_zero_gradient\nPASSED tests/test_array_namespace.py::test_array_namespace_errors\nPASSED tests/test_array_namespace.py::test_array_namespace_errors_torch\nPASSED tests/test_array_namespace.py::test_api_version_torch\nPASSED tests/test_array_namespace.py::test_get_namespace\nPASSED tests/test_array_namespace.py::test_python_scalars\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_numpy_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_cupy_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_torch_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_dask_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_jax_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_pydata_sparse_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-torch]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-dask.array]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-sparse]\nPASSED tests/test_common.py::test_is_xp_array[is_ndonnx_array-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_numpy_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_cupy_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_torch_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_dask_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_jax_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_pydata_sparse_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_array_api_strict_namespace-ndonnx]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-torch]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-dask.array]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-jax.numpy]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-sparse]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-array_api_strict]\nPASSED tests/test_common.py::test_is_xp_namespace[is_ndonnx_namespace-ndonnx]\nPASSED tests/test_common.py::test_xp_is_array_generics[numpy]\nPASSED tests/test_common.py::test_xp_is_array_generics[torch]\nPASSED tests/test_common.py::test_xp_is_array_generics[dask.array]\nPASSED tests/test_common.py::test_xp_is_array_generics[array_api_strict]\nPASSED tests/test_common.py::test_xp_is_array_generics[jax.numpy]\nPASSED tests/test_common.py::test_xp_is_array_generics[ndonnx]\nPASSED tests/test_common.py::test_xp_is_array_generics[sparse]\nPASSED tests/test_common.py::test_is_writeable_array[numpy]\nPASSED tests/test_common.py::test_is_writeable_array[torch]\nPASSED tests/test_common.py::test_is_writeable_array[dask.array]\nPASSED tests/test_common.py::test_is_writeable_array[array_api_strict]\nPASSED tests/test_common.py::test_is_writeable_array[jax.numpy]\nPASSED tests/test_common.py::test_is_writeable_array[ndonnx]\nPASSED tests/test_common.py::test_is_writeable_array[sparse]\nPASSED tests/test_common.py::test_is_writeable_array_numpy\nPASSED tests/test_common.py::test_size[numpy]\nPASSED tests/test_common.py::test_size[torch]\nPASSED tests/test_common.py::test_size[dask.array]\nPASSED tests/test_common.py::test_size[array_api_strict]\nPASSED tests/test_common.py::test_size[jax.numpy]\nPASSED tests/test_common.py::test_size[ndonnx]\nPASSED tests/test_common.py::test_size[sparse]\nPASSED tests/test_common.py::test_size_none[numpy]\nPASSED tests/test_common.py::test_size_none[torch]\nPASSED tests/test_common.py::test_size_none[dask.array]\nPASSED tests/test_common.py::test_size_none[array_api_strict]\nPASSED tests/test_common.py::test_size_none[jax.numpy]\nPASSED tests/test_common.py::test_size_none[ndonnx]\nPASSED tests/test_common.py::test_is_lazy_array[numpy]\nPASSED tests/test_common.py::test_is_lazy_array[torch]\nPASSED tests/test_common.py::test_is_lazy_array[dask.array]\nPASSED tests/test_common.py::test_is_lazy_array[array_api_strict]\nPASSED tests/test_common.py::test_is_lazy_array[jax.numpy]\nPASSED tests/test_common.py::test_is_lazy_array[ndonnx]\nPASSED tests/test_common.py::test_is_lazy_array[sparse]\nPASSED tests/test_common.py::test_is_lazy_array_nan_size[shape0]\nPASSED tests/test_common.py::test_is_lazy_array_nan_size[shape1]\nPASSED tests/test_common.py::test_is_lazy_array_nan_size[shape2]\nPASSED tests/test_common.py::test_is_lazy_array_nan_size[shape3]\nPASSED tests/test_common.py::test_is_lazy_array_bool_raises[TypeError]\nPASSED tests/test_common.py::test_is_lazy_array_bool_raises[AssertionError]\nPASSED tests/test_common.py::test_is_array_any_object[is_numpy_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_cupy_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_torch_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_dask_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_jax_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_pydata_sparse_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_ndonnx_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_array_api_obj]\nPASSED tests/test_common.py::test_is_array_any_object[is_lazy_array]\nPASSED tests/test_common.py::test_is_array_any_object[is_writeable_array]\nPASSED tests/test_common.py::test_device[numpy]\nPASSED tests/test_common.py::test_device[torch]\nPASSED tests/test_common.py::test_device[dask.array]\nPASSED tests/test_common.py::test_device[array_api_strict]\nPASSED tests/test_common.py::test_device[jax.numpy]\nPASSED tests/test_common.py::test_device[sparse]\nPASSED tests/test_common.py::test_to_device_host[numpy]\nPASSED tests/test_common.py::test_to_device_host[torch]\nPASSED tests/test_common.py::test_to_device_host[dask.array]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-torch]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-dask.array]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-jax.numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-sparse]\nPASSED tests/test_common.py::test_asarray_cross_library[numpy-ndonnx]\nPASSED tests/test_common.py::test_asarray_cross_library[torch-numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[torch-torch]\nPASSED tests/test_common.py::test_asarray_cross_library[torch-dask.array]\nPASSED tests/test_common.py::test_asarray_cross_library[torch-jax.numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[torch-sparse]\nPASSED tests/test_common.py::test_asarray_cross_library[dask.array-numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[dask.array-dask.array]\nPASSED tests/test_common.py::test_asarray_cross_library[dask.array-jax.numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[dask.array-sparse]\nPASSED tests/test_common.py::test_asarray_cross_library[jax.numpy-numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[jax.numpy-dask.array]\nPASSED tests/test_common.py::test_asarray_cross_library[jax.numpy-jax.numpy]\nPASSED tests/test_common.py::test_asarray_cross_library[jax.numpy-sparse]\nPASSED tests/test_common.py::test_asarray_cross_library[sparse-sparse]\nPASSED tests/test_common.py::test_asarray_cross_library[ndonnx-ndonnx]\nPASSED tests/test_common.py::test_asarray_copy[numpy]\nPASSED tests/test_common.py::test_asarray_copy[torch]\nPASSED tests/test_common.py::test_asarray_copy[dask.array]\nPASSED tests/test_common.py::test_clip_out[numpy]\nPASSED tests/test_common.py::test_clip_out[torch]\nPASSED tests/test_dask.py::test_assert_no_compute\nPASSED tests/test_dask.py::test_unary_ops_no_compute\nPASSED tests/test_dask.py::test_matmul_tensordot_no_compute\nPASSED tests/test_dask.py::test_asarray_no_compute\nPASSED tests/test_dask.py::test_astype_no_compute[True]\nPASSED tests/test_dask.py::test_astype_no_compute[False]\nPASSED tests/test_dask.py::test_clip_no_compute\nPASSED tests/test_dask.py::test_sort_argsort_nocompute[5]\nPASSED tests/test_dask.py::test_sort_argsort_nocompute[10]\nPASSED tests/test_dask.py::test_generators_are_lazy\nPASSED tests/test_dask.py::test_sort_argsort_chunks[sort-0]\nPASSED tests/test_dask.py::test_sort_argsort_chunks[sort-1]\nPASSED tests/test_dask.py::test_sort_argsort_chunks[argsort-0]\nPASSED tests/test_dask.py::test_sort_argsort_chunks[argsort-1]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[sort-shape0-auto]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[sort-shape1-auto]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[sort-shape2-chunks2]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[argsort-shape0-auto]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[argsort-shape1-auto]\nPASSED tests/test_dask.py::test_sort_argsort_chunk_size[argsort-shape2-chunks2]\nPASSED tests/test_dask.py::test_sort_argsort_meta[sort]\nPASSED tests/test_dask.py::test_sort_argsort_meta[argsort]\nPASSED tests/test_isdtype.py::test_isdtype_spec_dtypes[numpy]\nPASSED tests/test_isdtype.py::test_isdtype_spec_dtypes[torch]\nPASSED tests/test_isdtype.py::test_isdtype_spec_dtypes[dask.array]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float16-numpy]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float16-torch]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float16-dask.array]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float128-numpy]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float128-torch]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[float128-dask.array]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[complex256-numpy]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[complex256-torch]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[complex256-dask.array]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-numpy]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-torch]\nPASSED tests/test_isdtype.py::test_isdtype_additional_dtypes[bfloat16-dask.array]\nPASSED tests/test_jax.py::test_device_jit[0]\nPASSED tests/test_jax.py::test_device_jit[1]\nPASSED tests/test_jax.py::test_device_jit[2]\nPASSED tests/test_jax.py::test_device_jit[3]\nPASSED tests/test_jax.py::test_device_jit[4]\nPASSED tests/test_jax.py::test_device_jit[5]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[numpy]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[torch]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[dask.array]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[jax.numpy]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[sparse]\nPASSED tests/test_no_dependencies.py::test_numpy_dependency[array_api_strict]\nPASSED tests/test_vendoring.py::test_vendoring_numpy\nPASSED tests/test_vendoring.py::test_vendoring_torch\nPASSED tests/test_vendoring.py::test_vendoring_dask\nSKIPPED [54] tests/_helpers.py:11: could not import 'cupy': No module named 'cupy'\nSKIPPED [4] tests/test_array_namespace.py:26: Unsupported API version\nSKIPPED [1] tests/test_common.py:119: No arange(); no indexing by sparse arrays\nSKIPPED [6] tests/test_common.py:248: cupy does not support implicit conversion to CPU\nSKIPPED [6] tests/test_common.py:250: `sparse` does not allow implicit densification\nSKIPPED [1] tests/test_vendoring.py:11: could not import 'cupy': No module named 'cupy'\nXFAIL tests/test_common.py::test_device[ndonnx] - Needs ndonnx >=0.9.4\nXFAIL tests/test_common.py::test_asarray_cross_library[dask.array-torch] - Bug in dask raising error on conversion\nXFAIL tests/test_common.py::test_asarray_cross_library[jax.numpy-torch] - casts int to float\nXFAIL tests/test_common.py::test_asarray_cross_library[ndonnx-numpy] - produces numpy array of ndonnx scalar arrays\nXFAIL tests/test_common.py::test_asarray_cross_library[ndonnx-torch] - The truth value of lazy Array Array(dtype=Boolean) is unknown\nXFAIL tests/test_common.py::test_asarray_cross_library[ndonnx-dask.array] - The truth value of lazy Array Array(dtype=Boolean) is unknown\nXFAIL tests/test_common.py::test_asarray_cross_library[ndonnx-jax.numpy] - The truth value of lazy Array Array(dtype=Boolean) is unknown\nXFAIL tests/test_common.py::test_asarray_cross_library[ndonnx-sparse] - The truth value of lazy Array Array(dtype=Boolean) is unknown\nFAILED tests/test_all.py::test_all[common] - AssertionError: Some dir() names...\nFAILED tests/test_common.py::test_asarray_cross_library[torch-ndonnx] - Value...\nFAILED tests/test_common.py::test_asarray_cross_library[dask.array-ndonnx] - ...\nFAILED tests/test_common.py::test_asarray_cross_library[jax.numpy-ndonnx] - V...\n= 4 failed, 335 passed, 72 skipped, 8 xfailed, 20 warnings in 190.98s (0:03:10) =\n___NEMO_GYM_SCALE_SWE_TEST_END___\n\nexit status 1", "error": null, "eval_sandbox_start_time_taken": 11.959441423416138, "patch_verification_time_taken": 245.67064595222473, "_ng_task_index": 1, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "globus_globus-sdk-python_pr680", "language": "python", "test_results": {"FAIL_TO_PASS": {"success": ["tests/unit/responses/test_response.py::test_len_array_bad_data", "tests/unit/responses/test_response.py::test_iter_array_bad_data", "tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data"], "failure": []}, "PASS_TO_PASS": {"success": ["tests/functional/base_client/test_advanced_http_options.py::test_allow_redirects_false", "tests/functional/base_client/test_encodings.py::test_cannot_encode_dict_as_text", "tests/functional/base_client/test_encodings.py::test_cannot_encode_with_unknown_encoding", "tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[502]", "tests/functional/base_client/test_retry_behavior.py::test_retry_disabled_via_tune", "tests/functional/base_client/test_retry_behavior.py::test_retry_limit[6-True]", "tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi/]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data", "tests/functional/local_endpoint/test_server.py::test_info_dict_from_non_json_object_file_is_none", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential", "tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_confidential", "tests/functional/services/auth/test_id_token.py::test_decode_id_token_with_saved_oidc_config", "tests/functional/services/auth/test_id_token.py::test_invalid_decode_id_token_usage", "tests/functional/services/auth/test_identity_map.py::test_identity_map_add", "tests/functional/services/auth/test_identity_map.py::test_identity_map_keyerror", "tests/functional/services/auth/test_identity_map.py::test_identity_map_get_with_default", "tests/functional/services/auth/test_identity_map.py::test_identity_map_del", "tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-username]", "tests/functional/services/auth/test_identity_map.py::test_identity_map_batch_limit", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[globus@globus.org]", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[usernames2]", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[False-false]", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames1]", "tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[ids1]", "tests/functional/services/flows/test_flow_crud.py::test_get_flow", "tests/functional/services/flows/test_flow_crud.py::test_delete_flow", "tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-bar-foo]", "tests/functional/services/flows/test_flow_crud.py::test_list_flows_paginated[False]", "tests/functional/services/gcs/test_collections.py::test_get_collection_includes_sideloaded_data", "tests/functional/services/gcs/test_collections.py::test_get_collection_invalid_datatype_type", "tests/functional/services/gcs/test_get_collection_list.py::test_error_parsing_forbidden", "tests/functional/services/gcs/test_scope_helpers.py::test_manage_collections_scope_helper", "tests/functional/services/gcs/test_scope_helpers.py::test_data_access_scope_helper", "tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]", "tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[include_param3]", "tests/functional/services/gcs/test_user_credential.py::test_create_user_credential", "tests/functional/services/gcs/test_user_credential.py::test_delete_user_credential", "tests/functional/services/groups/test_get_group.py::test_get_group_include[policies]", "tests/functional/services/groups/test_get_group.py::test_get_group_include[policies,memberships]", "tests/functional/services/groups/test_get_my_groups.py::test_get_my_groups", "tests/functional/services/groups/test_group_memberships.py::test_approve_pending", "tests/functional/services/groups/test_update_group.py::test_update_group", "tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]", "tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc1]", "tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc0]", "tests/functional/services/search/test_search_roles.py::test_search_role_list", "tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]", "tests/functional/services/timer/test_jobs.py::test_create_job[interval0-2022-04-05T06:00:00]", "tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]", "tests/functional/services/timer/test_jobs.py::test_update_job", "tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults", "tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_non_paginated", "tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]", "tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]", "tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]", "tests/functional/services/transfer/test_simple.py::test_get_endpoint", "tests/functional/services/transfer/test_simple.py::test_create_endpoint", "tests/functional/services/transfer/test_simple.py::test_create_endpoint_invalid_activation_servers", "tests/functional/services/transfer/test_simple.py::test_autoactivation", "tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs0-qs0]", "tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs4-qs4]", "tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs6-qs6]", "tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs7-qs7]", "tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]", "tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[transfer]", "tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]", "tests/functional/services/transfer/test_task_wait.py::test_task_wait_success_case", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-foo]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-paramvalue4]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-foo]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_local_user-foouser]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]", "tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list", "tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists", "tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]", "tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data", "tests/functional/tokenstorage/test_sqlite.py::test_iter_namespaces", "tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-AuthClient]", "tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-NativeAppAuthClient]", "tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-NativeAppAuthClient]", "tests/unit/test_base_client.py::test_set_app_name[init]", "tests/unit/test_base_client.py::test_http_methods[patch-True]", "tests/unit/test_config.py::test_get_ssl_verify[YES-True]", "tests/unit/test_config.py::test_get_ssl_verify[true-True]", "tests/unit/test_config.py::test_get_ssl_verify[True-True1]", "tests/unit/test_config.py::test_get_ssl_verify[False-False0]", "tests/unit/test_config.py::test_get_ssl_verify[NO-False]", "tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]", "tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]", "tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]", "tests/unit/test_config.py::test_get_http_timeout[1.0 -1.0]", "tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]", "tests/unit/test_config.py::test_service_url_overrides", "tests/unit/test_exc.py::test_get_args_transfer", "tests/unit/test_exc.py::test_authz_params_info_containing_session_message", "tests/unit/test_exc.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]", "tests/unit/test_exc.py::test_requests_err_wrappers[orig3-GlobusConnectionError]", "tests/unit/test_exc.py::test_convert_requests_exception[orig1-GlobusTimeoutError]", "tests/unit/test_exc.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]", "tests/unit/test_exc.py::test_convert_requests_exception[orig3-GlobusConnectionError]", "tests/unit/test_exc.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]", "tests/unit/test_exc.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]", "tests/unit/test_imports.py::test_import_str[from globus_sdk import *]", "tests/unit/test_imports.py::test_import_str[from globus_sdk import TransferClient, AuthClient, SearchClient]", "tests/unit/test_paging.py::test_has_next_paginator", "tests/unit/test_scopes.py::test_known_scopes", "tests/unit/test_scopes.py::test_scopebuilder_str", "tests/unit/test_scopes.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr[MutableScope]", "tests/unit/test_scopes.py::test_flows_scopes_creation", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo*]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar*]]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo * ]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[* foo]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[[bar]]]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo]]", "tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar]]", "tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar]]", "tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo bar]", "tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar[baz]]]", "tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[url-example.globus.org]", "tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[bar]]", "tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[]", "tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo]]", "tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo[bar]]", "tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo bar]", "tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-foo-True]", "tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*bar-False]", "tests/unit/test_scopes.py::test_scope_contains_simple_cases[*foo-bar-False]", "tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*foo-False]", "tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[*bar]-foo[bar[*baz]]-True]", "tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[baz bar]-foo[bar[baz] baz]-True]", "tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[bar baz]-foo[bar[baz] baz buzz]-True]", "tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]", "tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[*transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]", "tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_config", "tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version", "tests/unit/test_utils.py::test_slash_join[a-b]", "tests/unit/test_utils.py::test_slash_join[a/-b]", "tests/unit/test_utils.py::test_slash_join[a/-/b]", "tests/unit/authorizers/test_access_token_authorizer.py::test_get_authorization_header", "tests/unit/authorizers/test_access_token_authorizer.py::test_handle_missing_authorization", "tests/unit/authorizers/test_basic_authorizer.py::test_handle_missing_authorization", "tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u0434\\u0443\\u043c-pass]", "tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[with_new_refresh_token]", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]", "tests/unit/authorizers/test_renewing_authorizer.py::test_init", "tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_ok", "tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_token", "tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration", "tests/unit/authorizers/test_renewing_authorizer.py::test_handle_missing_authorization", "tests/unit/helpers/test_search.py::test_init", "tests/unit/helpers/test_search.py::test_set_method[q]", "tests/unit/helpers/test_search.py::test_set_method[advanced]", "tests/unit/helpers/test_search.py::test_add_filter", "tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok", "tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args2]", "tests/unit/helpers/test_transfer.py::test_transfer_add_item", "tests/unit/helpers/test_transfer.py::test_transfer_add_symlink_item", "tests/unit/helpers/test_transfer.py::test_delete_init_with_client", "tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs1]", "tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs3]", "tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields", "tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args1-kwargs1]", "tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]", "tests/unit/helpers/test_transfer.py::test_transfer_iter_items", "tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]", "tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]", "tests/unit/helpers/test_transfer.py::test_notification_options[None-False-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[True-None-False]", "tests/unit/helpers/test_transfer.py::test_notification_options[True-True-False]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]", "tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[mtime-2]", "tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[2-2]", "tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[checksum-3]", "tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[hash-ValueError]", "tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]", "tests/unit/helpers/test_transfer.py::test_add_filter_rule", "tests/unit/helpers/test_transfer.py::test_ls_format_filter[foo-foo]", "tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter1-foo:bar/a:b,c]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs3-1.2.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]", "tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[GoogleCloudStorageCollectionPolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs2-1.1.0]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_policy_document_conversion", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleDriveStoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[S3StoragePolicies]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]", "tests/unit/responses/test_activation_response.py::test_expires_at", "tests/unit/responses/test_activation_response.py::test_supports_auto_activation[False]", "tests/unit/responses/test_activation_response.py::test_supports_web_activation", "tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups", "tests/unit/responses/test_oauth_token_response.py::test_stringify", "tests/unit/responses/test_oauth_token_response.py::test_stringify_dependent_tokens", "tests/unit/responses/test_response.py::test_data", "tests/unit/responses/test_response.py::test_str", "tests/unit/responses/test_response.py::test_text_response_repr_and_str_contain_raw_data", "tests/unit/responses/test_response.py::test_getitem", "tests/unit/responses/test_response.py::test_contains", "tests/unit/responses/test_response.py::test_bool", "tests/unit/responses/test_response.py::test_len_array", "tests/unit/responses/test_response.py::test_get", "tests/unit/responses/test_response.py::test_text", "tests/unit/responses/test_response.py::test_no_content_type_header", "tests/unit/responses/test_response.py::test_client_required_with_requests_response", "tests/unit/responses/test_response.py::test_client_forbidden_when_wrapping", "tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data", "tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response", "tests/unit/responses/test_response.py::test_iterable_response_using_iter_key", "tests/unit/responses/test_response.py::test_can_iter_array_response", "tests/unit/responses/test_response.py::test_http_status_code_on_response", "tests/unit/responses/test_response.py::test_http_reason_on_response", "tests/unit/responses/test_response.py::test_http_headers_from_response", "tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_retry_after_header]", "tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_should_retry_explicit_on_first_check", "tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_fallthrough_to_false", "tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer"], "failure": []}, "tests_observed": 233, "resolved": true}, "test_output": "Previous HEAD position was 194b2abe allow passing multiple ls filter params (#652)\nHEAD is now at 22961174 (actions) update PR references\nHEAD is now at 22961174 (actions) update PR references\nSwitched to a new branch 'scaleswe'\nChecking patch changelog.d/20230207_032037_sirosen_remove_cast_one_of_many.rst...\nChecking patch src/globus_sdk/__init__.py...\nChecking patch src/globus_sdk/_generate_init.py...\nChecking patch src/globus_sdk/response.py...\nChecking patch tests/unit/responses/test_response.py...\nApplied patch changelog.d/20230207_032037_sirosen_remove_cast_one_of_many.rst cleanly.\nApplied patch src/globus_sdk/__init__.py cleanly.\nApplied patch src/globus_sdk/_generate_init.py cleanly.\nApplied patch src/globus_sdk/response.py cleanly.\nApplied patch tests/unit/responses/test_response.py cleanly.\nChecking patch tests/unit/responses/test_response.py...\nerror: while searching for:\n assert bool(null.r) is False\n\n\ndef test_len(list_response):\n array = ArrayResponse(list_response.r)\n assert len(array) == len(list_response.data)\n\n\nerror: patch failed: tests/unit/responses/test_response.py:164\nerror: while searching for:\n assert len(empty_array) == 0\n\n\ndef test_len_bad_data(dict_response):\n null_array = ArrayResponse(_mk_json_response(None).r)\n with pytest.raises(\n TypeError, match=re.escape(\"Cannot take len() on data when type is 'NoneType'\")\n ):\n len(null_array)\n\n dict_array = ArrayResponse(dict_response.r)\n with pytest.raises(\n TypeError, match=re.escape(\"Cannot take len() on data when type is 'dict'\")\n ):\n len(dict_array)\n\n\ndef test_get(dict_response, list_response, text_http_response):\n \"\"\"\n Gets individual values from dict response, confirms results\n\nerror: patch failed: tests/unit/responses/test_response.py:174\nerror: while searching for:\n assert list(withkey) == [3, 4]\n\n\ndef test_can_iter_array_response(list_response):\n arr = ArrayResponse(list_response.r)\n # sorted/reversed are just example stdlib functions which use iter\n\nerror: patch failed: tests/unit/responses/test_response.py:261\nApplying patch tests/unit/responses/test_response.py with 3 rejects...\nRejected hunk #1.\nRejected hunk #2.\nRejected hunk #3.\n___NEMO_GYM_SCALE_SWE_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-6.2.5, py-1.11.0, pluggy-1.6.0\nrootdir: /workspace/globus-sdk-python, configfile: setup.cfg\nplugins: forked-1.6.0, xdist-2.5.0\ncollected 674 items\n\ntests/unit/responses/test_response.py ...................... [ 3%]\ntests/functional/base_client/test_advanced_http_options.py .. [ 3%]\ntests/functional/base_client/test_encodings.py .... [ 4%]\ntests/functional/base_client/test_retry_behavior.py ................. [ 6%]\ntests/functional/local_endpoint/test_personal.py s................FF [ 9%]\ntests/functional/local_endpoint/test_server.py .......... [ 10%]\ntests/functional/services/auth/test_auth_client_flow.py .... [ 11%]\ntests/functional/services/auth/test_id_token.py .... [ 12%]\ntests/functional/services/auth/test_identity_map.py .................... [ 15%]\n [ 15%]\ntests/functional/services/auth/test_simple_auth_usage.py ............... [ 17%]\n. [ 17%]\ntests/functional/services/flows/test_flow_crud.py ............. [ 19%]\ntests/functional/services/gcs/test_collections.py ........ [ 20%]\ntests/functional/services/gcs/test_get_collection_list.py ......... [ 21%]\ntests/functional/services/gcs/test_scope_helpers.py ... [ 22%]\ntests/functional/services/gcs/test_storage_gateways.py ........... [ 24%]\ntests/functional/services/gcs/test_user_credential.py ..... [ 24%]\ntests/functional/services/groups/test_get_group.py .... [ 25%]\ntests/functional/services/groups/test_get_my_groups.py . [ 25%]\ntests/functional/services/groups/test_group_memberships.py ... [ 25%]\ntests/functional/services/groups/test_update_group.py . [ 26%]\ntests/functional/services/search/test_search.py ........ [ 27%]\ntests/functional/services/search/test_search_roles.py ... [ 27%]\ntests/functional/services/timer/test_jobs.py ............ [ 29%]\ntests/functional/services/transfer/test_paginated.py ................ [ 31%]\ntests/functional/services/transfer/test_simple.py ................. [ 34%]\ntests/functional/services/transfer/test_task_submit.py ....... [ 35%]\ntests/functional/services/transfer/test_task_wait.py ...... [ 36%]\ntests/functional/services/transfer/endpoint_manager/test_task_list.py .. [ 36%]\n.............. [ 38%]\ntests/functional/tokenstorage/test_simplejson_file.py ...... [ 39%]\ntests/functional/tokenstorage/test_sqlite.py ................... [ 42%]\ntests/unit/test_auth_clients.py ....... [ 43%]\ntests/unit/test_base_client.py ............ [ 45%]\ntests/unit/test_config.py ........................................ [ 51%]\ntests/unit/test_exc.py ............................. [ 55%]\ntests/unit/test_imports.py .. [ 55%]\ntests/unit/test_paging.py . [ 55%]\ntests/unit/test_scopes.py .............................................. [ 62%]\n...................................................... [ 70%]\ntests/unit/test_tokenstorage.py ..... [ 71%]\ntests/unit/test_utils.py ........... [ 73%]\ntests/unit/authorizers/test_access_token_authorizer.py .. [ 73%]\ntests/unit/authorizers/test_basic_authorizer.py ..... [ 74%]\ntests/unit/authorizers/test_client_credentials_authorizer.py ... [ 74%]\ntests/unit/authorizers/test_refresh_token_authorizer.py ...... [ 75%]\ntests/unit/authorizers/test_renewing_authorizer.py ........... [ 77%]\ntests/unit/helpers/test_search.py ......... [ 78%]\ntests/unit/helpers/test_timer.py ... [ 78%]\ntests/unit/helpers/test_transfer.py .................................... [ 84%]\n...................................... [ 89%]\ntests/unit/helpers/gcs/test_collections.py ....................... [ 93%]\ntests/unit/helpers/gcs/test_storage_gateway.py ................... [ 96%]\ntests/unit/responses/test_activation_response.py ...... [ 97%]\ntests/unit/responses/test_oauth_token_response.py ........ [ 98%]\ntests/unit/transport/test_default_retry_policy.py ........ [ 99%]\ntests/unit/transport/test_retry_check_runner.py .. [ 99%]\ntests/unit/transport/test_transport_authz_handling.py .. [100%]\n\n=========================== short test summary info ============================\nPASSED tests/unit/responses/test_response.py::test_data\nPASSED tests/unit/responses/test_response.py::test_str\nPASSED tests/unit/responses/test_response.py::test_text_response_repr_and_str_contain_raw_data\nPASSED tests/unit/responses/test_response.py::test_getitem\nPASSED tests/unit/responses/test_response.py::test_contains\nPASSED tests/unit/responses/test_response.py::test_bool\nPASSED tests/unit/responses/test_response.py::test_len_array\nPASSED tests/unit/responses/test_response.py::test_len_array_bad_data\nPASSED tests/unit/responses/test_response.py::test_iter_array_bad_data\nPASSED tests/unit/responses/test_response.py::test_get\nPASSED tests/unit/responses/test_response.py::test_text\nPASSED tests/unit/responses/test_response.py::test_no_content_type_header\nPASSED tests/unit/responses/test_response.py::test_client_required_with_requests_response\nPASSED tests/unit/responses/test_response.py::test_client_forbidden_when_wrapping\nPASSED tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data\nPASSED tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response\nPASSED tests/unit/responses/test_response.py::test_iterable_response_using_iter_key\nPASSED tests/unit/responses/test_response.py::test_iterable_response_errors_on_non_dict_data\nPASSED tests/unit/responses/test_response.py::test_can_iter_array_response\nPASSED tests/unit/responses/test_response.py::test_http_status_code_on_response\nPASSED tests/unit/responses/test_response.py::test_http_reason_on_response\nPASSED tests/unit/responses/test_response.py::test_http_headers_from_response\nPASSED tests/functional/base_client/test_advanced_http_options.py::test_allow_redirects_false\nPASSED tests/functional/base_client/test_advanced_http_options.py::test_stream_true\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_encode_dict_as_text\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_encode_with_unknown_encoding\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_form_encode_bad_types\nPASSED tests/functional/base_client/test_encodings.py::test_form_encoding_works\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[500]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[429]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[502]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[503]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[504]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_disabled_via_tune\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_network_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[5-False]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[6-True]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[7-True]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_transport_retry_limit\nPASSED tests/functional/base_client/test_retry_behavior.py::test_bad_max_retries_causes_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_persistent_connection_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_no_retry_401_no_authorizer\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_with_authorizer\nPASSED tests/functional/base_client/test_retry_behavior.py::test_no_retry_with_authorizer_no_handler\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_with_authorizer_persistent_401\nPASSED tests/functional/local_endpoint/test_personal.py::test_localep_load_id\nPASSED tests/functional/local_endpoint/test_personal.py::test_localep_load_id_alternate_conf_dir\nPASSED tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[vy2bvggsoqi6loei3oxdvc5fiu]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi/]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=sirosen\"]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=sirosen\" sirosen sirosen]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"\" sirosen]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_conf\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_confdir\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_multiline_data\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_from_nonexistent_file_is_none\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_from_non_json_file_is_none\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_from_non_json_object_file_is_none\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_from_non_unicode_file_is_none\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_from_empty_json_file_is_okay_but_has_no_properties\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_can_load_endpoint_id\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_can_load_domain\nPASSED tests/functional/local_endpoint/test_server.py::test_endpoint_id_property_ignores_non_str_value\nPASSED tests/functional/local_endpoint/test_server.py::test_domain_name_property_ignores_non_str_value\nPASSED tests/functional/local_endpoint/test_server.py::test_info_dict_can_reload_with_deleter\nPASSED tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_native\nPASSED tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential\nPASSED tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_native\nPASSED tests/functional/services/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_confidential\nPASSED tests/functional/services/auth/test_id_token.py::test_decode_id_token\nPASSED tests/functional/services/auth/test_id_token.py::test_decode_id_token_with_saved_oidc_config\nPASSED tests/functional/services/auth/test_id_token.py::test_decode_id_token_with_saved_oidc_config_and_jwk\nPASSED tests/functional/services/auth/test_id_token.py::test_invalid_decode_id_token_usage\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_initialization_no_values\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_initialization_mixed_and_duplicate_values\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_initialization_batch_size\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_add\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_add_after_lookup\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_multiple\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_keyerror\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_get_with_default\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_del\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-username-username]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-username-id]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-id-username]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-username]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-id]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-id-username]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_mismatch[usernames]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_shared_cache_mismatch[ids]\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_prepopulated_cache\nPASSED tests/functional/services/auth/test_identity_map.py::test_identity_map_batch_limit\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_unauthorized\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[globus@globus.org]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[usernames1]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[usernames2]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_success[usernames3]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[True-true]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[False-false]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[1-true]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[0-true]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[fALSe-false]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_provision[true-true]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames1]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames2]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[46bd0f56-e24f-11e5-a510-131bef46955c,ae341a98-d274-11e5-b888-dbae3a8ba545]\nPASSED tests/functional/services/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[ids1]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_create_flow\nPASSED tests/functional/services/flows/test_flow_crud.py::test_get_flow\nPASSED tests/functional/services/flows/test_flow_crud.py::test_delete_flow\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-None-None]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-None-foo]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-bar-None]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[None-bar-foo]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[created_at ASC-None-None]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[created_at ASC-None-foo]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[created_at ASC-bar-None]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_simple[created_at ASC-bar-foo]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_paginated[True]\nPASSED tests/functional/services/flows/test_flow_crud.py::test_list_flows_paginated[False]\nPASSED tests/functional/services/gcs/test_collections.py::test_get_collection\nPASSED tests/functional/services/gcs/test_collections.py::test_get_collection_flat\nPASSED tests/functional/services/gcs/test_collections.py::test_get_collection_bad_version\nPASSED tests/functional/services/gcs/test_collections.py::test_get_collection_includes_sideloaded_data\nPASSED tests/functional/services/gcs/test_collections.py::test_get_collection_invalid_datatype_type\nPASSED tests/functional/services/gcs/test_collections.py::test_delete_collection\nPASSED tests/functional/services/gcs/test_collections.py::test_create_mapped_collection\nPASSED tests/functional/services/gcs/test_collections.py::test_update_guest_collection\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[None-None]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[foo-foo]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[foo,bar-foo,bar]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_include_param[include_param3-foo,bar]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_mapped_collection_id_param\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_filter_param[filter_param0-mapped_collections,created_by_me]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_get_collection_list_filter_param[created_by_me-created_by_me]\nPASSED tests/functional/services/gcs/test_get_collection_list.py::test_error_parsing_forbidden\nPASSED tests/functional/services/gcs/test_scope_helpers.py::test_manage_collections_scope_helper\nPASSED tests/functional/services/gcs/test_scope_helpers.py::test_data_access_scope_helper\nPASSED tests/functional/services/gcs/test_scope_helpers.py::test_str_contains_scope_properties\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[None]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies,foo]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway_list[include_param3]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_create_storage_gateway\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[None]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[private_policies]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[private_policies,foo]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_get_storage_gateway[include_param3]\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_update_storage_gateway\nPASSED tests/functional/services/gcs/test_storage_gateways.py::test_delete_storage_gateway\nPASSED tests/functional/services/gcs/test_user_credential.py::test_get_user_credential_list\nPASSED tests/functional/services/gcs/test_user_credential.py::test_get_user_credential\nPASSED tests/functional/services/gcs/test_user_credential.py::test_create_user_credential\nPASSED tests/functional/services/gcs/test_user_credential.py::test_update_user_credential\nPASSED tests/functional/services/gcs/test_user_credential.py::test_delete_user_credential\nPASSED tests/functional/services/groups/test_get_group.py::test_get_group\nPASSED tests/functional/services/groups/test_get_group.py::test_get_group_include[policies]\nPASSED tests/functional/services/groups/test_get_group.py::test_get_group_include[policies,memberships]\nPASSED tests/functional/services/groups/test_get_group.py::test_get_group_include[include_param2]\nPASSED tests/functional/services/groups/test_get_my_groups.py::test_get_my_groups\nPASSED tests/functional/services/groups/test_group_memberships.py::test_approve_pending\nPASSED tests/functional/services/groups/test_group_memberships.py::test_add_member\nPASSED tests/functional/services/groups/test_group_memberships.py::test_batch_action_payload\nPASSED tests/functional/services/groups/test_update_group.py::test_update_group\nPASSED tests/functional/services/search/test_search.py::test_search_query_simple\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc1]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_simple[query_doc2]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_post_query_arg_overrides[query_doc1]\nPASSED tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc0]\nPASSED tests/functional/services/search/test_search.py::test_search_paginated_scroll_query[query_doc1]\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_create\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_delete\nPASSED tests/functional/services/search/test_search_roles.py::test_search_role_list\nPASSED tests/functional/services/timer/test_jobs.py::test_list_jobs\nPASSED tests/functional/services/timer/test_jobs.py::test_get_job\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval0-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval0-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval1-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[interval1-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[600-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[600-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[None-start0]\nPASSED tests/functional/services/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]\nPASSED tests/functional/services/timer/test_jobs.py::test_update_job\nPASSED tests/functional/services/timer/test_jobs.py::test_delete_job\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_noresults\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_one_page\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_manager_task_list-paged_data2-__iter__]\nPASSED tests/functional/services/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_manager_task_list-paged_data2-pages]\nPASSED tests/functional/services/transfer/test_paginated.py::test_endpoint_search_multipage_iter_items\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_non_paginated\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[wrap]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]\nPASSED tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]\nPASSED tests/functional/services/transfer/test_paginated.py::test_task_skipped_errors_pagination[wrap]\nPASSED tests/functional/services/transfer/test_simple.py::test_get_endpoint\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint[UUID]\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint[str]\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint_rewrites_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_update_endpoint_invalid_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_create_endpoint\nPASSED tests/functional/services/transfer/test_simple.py::test_create_endpoint_invalid_activation_servers\nPASSED tests/functional/services/transfer/test_simple.py::test_operation_ls\nPASSED tests/functional/services/transfer/test_simple.py::test_autoactivation\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs0-qs0]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs1-qs1]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs2-qs2]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs3-qs3]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs4-qs4]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs5-qs5]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs6-qs6]\nPASSED tests/functional/services/transfer/test_simple.py::test_task_list[client_kwargs7-qs7]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_failure\nPASSED tests/functional/services/transfer/test_task_submit.py::test_transfer_submit_success\nPASSED tests/functional/services/transfer/test_task_submit.py::test_delete_submit_success\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[transfer]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_adds_missing_submission_id_to_data[delete]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[transfer]\nPASSED tests/functional/services/transfer/test_task_submit.py::test_submit_does_not_overwrite_existing_submission_id[delete]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs0]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs1]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs2]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_success_case\nPASSED tests/functional/services/transfer/test_task_wait.py::test_task_wait_unfinished_case\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-paramvalue2]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-paramvalue4]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-foo]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-True]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-False]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-0]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_local_user-foouser]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_status-ACTIVE]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_status_list\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list\nPASSED tests/functional/services/transfer/endpoint_manager/test_task_list.py::test_filter_completion_time_datetime_tuple\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_dne\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_perms\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs1]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs2]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs3]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs4]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs5]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs6]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve_simple_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_on_refresh_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve_different_namespaces\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_token_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_tokens\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_iter_namespaces\nPASSED tests/unit/test_auth_clients.py::test_base_auth_client_does_not_require_client_id\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-AuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-ConfidentialAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[str-NativeAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-AuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-ConfidentialAppAuthClient]\nPASSED tests/unit/test_auth_clients.py::test_can_use_uuid_or_str_for_client_id[uuid-NativeAppAuthClient]\nPASSED tests/unit/test_base_client.py::test_cannot_instantiate_plain_base_client\nPASSED tests/unit/test_base_client.py::test_set_http_timeout\nPASSED tests/unit/test_base_client.py::test_set_app_name[init]\nPASSED tests/unit/test_base_client.py::test_set_app_name[post_init]\nPASSED tests/unit/test_base_client.py::test_http_methods[get-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[delete-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[post-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[put-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[patch-True]\nPASSED tests/unit/test_base_client.py::test_handle_url_unsafe_chars\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_instance\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_class\nPASSED tests/unit/test_config.py::test_get_service_url\nPASSED tests/unit/test_config.py::test_get_ssl_verify[True-True0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[YES-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[true-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[t-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[True-True1]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[ON-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[False-False0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[NO-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[false-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[f-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[False-False1]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[OFF-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[invalid]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[1.0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_rejects_bad_explicit_value[value2]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0 -1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0.0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-60.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-1-None]\nPASSED tests/unit/test_config.py::test_get_http_timeout[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[no-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[t-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[f-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_environment_name\nPASSED tests/unit/test_config.py::test_env_config_registration\nPASSED tests/unit/test_config.py::test_service_url_overrides\nPASSED tests/unit/test_config.py::test_service_url_from_env_var\nPASSED tests/unit/test_exc.py::test_raw_json_works\nPASSED tests/unit/test_exc.py::test_raw_json_fail\nPASSED tests/unit/test_exc.py::test_raw_text_works\nPASSED tests/unit/test_exc.py::test_get_args\nPASSED tests/unit/test_exc.py::test_get_args_transfer\nPASSED tests/unit/test_exc.py::test_get_args_auth\nPASSED tests/unit/test_exc.py::test_get_args_on_unknown_json\nPASSED tests/unit/test_exc.py::test_get_args_on_non_dict_json\nPASSED tests/unit/test_exc.py::test_info_is_falsey_on_non_dict_json\nPASSED tests/unit/test_exc.py::test_consent_required_info\nPASSED tests/unit/test_exc.py::test_authz_params_info_containing_session_message\nPASSED tests/unit/test_exc.py::test_authz_params_info_containing_session_required_identities\nPASSED tests/unit/test_exc.py::test_authz_params_info_containing_session_required_single_domain\nPASSED tests/unit/test_exc.py::test_authz_params_info_containing_session_required_policies\nPASSED tests/unit/test_exc.py::test_authz_params_info_containing_malformed_session_required_policies\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig0-NetworkError]\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig2-GlobusConnectionTimeoutError]\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig3-GlobusConnectionError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig0-NetworkError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig1-GlobusTimeoutError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig2-GlobusConnectionTimeoutError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig3-GlobusConnectionError]\nPASSED tests/unit/test_exc.py::test_http_reason_exposure[400-Bad Request]\nPASSED tests/unit/test_exc.py::test_http_reason_exposure[500-Server Error]\nPASSED tests/unit/test_exc.py::test_http_header_exposure\nPASSED tests/unit/test_exc.py::test_error_repr_has_expected_info[POST-404-FooError-https://bogus.example.com/foo-got a foo error-bearer]\nPASSED tests/unit/test_exc.py::test_error_repr_has_expected_info[PATCH-500-None-https://bogus.example.org/bar--unknown-token]\nPASSED tests/unit/test_exc.py::test_error_repr_has_expected_info[PUT-501-None-https://bogus.example.org/bar-None-None]\nPASSED tests/unit/test_imports.py::test_import_str[from globus_sdk import *]\nPASSED tests/unit/test_imports.py::test_import_str[from globus_sdk import TransferClient, AuthClient, SearchClient]\nPASSED tests/unit/test_paging.py::test_has_next_paginator\nPASSED tests/unit/test_scopes.py::test_url_scope_string\nPASSED tests/unit/test_scopes.py::test_urn_scope_string\nPASSED tests/unit/test_scopes.py::test_known_scopes\nPASSED tests/unit/test_scopes.py::test_known_url_scopes\nPASSED tests/unit/test_scopes.py::test_scopebuilder_str\nPASSED tests/unit/test_scopes.py::test_uniquely_named_scopes\nPASSED tests/unit/test_scopes.py::test_sb_allowed_inputs_types\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_simple[Scope]\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_simple[MutableScope]\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_optional[Scope]\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_optional[MutableScope]\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_with_dependencies[Scope]\nPASSED tests/unit/test_scopes.py::test_scope_str_and_repr_with_dependencies[MutableScope]\nPASSED tests/unit/test_scopes.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr[Scope]\nPASSED tests/unit/test_scopes.py::test_add_dependency_warns_on_optional_but_still_has_good_str_and_repr[MutableScope]\nPASSED tests/unit/test_scopes.py::test_add_dependency_fails_if_optional_is_combined_with_scope[True]\nPASSED tests/unit/test_scopes.py::test_add_dependency_fails_if_optional_is_combined_with_scope[False]\nPASSED tests/unit/test_scopes.py::test_scope_str_nested\nPASSED tests/unit/test_scopes.py::test_scope_collection_to_str\nPASSED tests/unit/test_scopes.py::test_add_dependency_parses_scope_with_optional_marker\nPASSED tests/unit/test_scopes.py::test_scopebuilder_make_mutable_produces_same_strings\nPASSED tests/unit/test_scopes.py::test_scopebuilder_make_mutable_can_be_optional\nPASSED tests/unit/test_scopes.py::test_flows_scopes_creation\nPASSED tests/unit/test_scopes.py::test_scope_parsing_allows_empty_string\nPASSED tests/unit/test_scopes.py::test_scope_parsing_ignores_non_semantic_whitespace[foo -foo]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_ignores_non_semantic_whitespace[ foo-foo]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_ignores_non_semantic_whitespace[foo[ bar]-foo[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo*]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo *]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo*[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo *[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar*]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo * ]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[* foo]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[[foo]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[[bar]]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[bar]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[bar]]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[bar] baz]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo [bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_rejects_bad_inputs[foo[bar]baz]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[*foo]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[*bar]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo bar]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_accepts_valid_inputs[foo[bar[baz]]]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[urn-00000000-0000-0000-0000-000000000000]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[urn-example.globus.org]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[url-00000000-0000-0000-0000-000000000000]\nPASSED tests/unit/test_scopes.py::test_scope_parsing_can_consume_scopebuilder_results[url-example.globus.org]\nPASSED tests/unit/test_scopes.py::test_scope_deserialize_simple\nPASSED tests/unit/test_scopes.py::test_scope_deserialize_with_dependencies\nPASSED tests/unit/test_scopes.py::test_scope_deserialize_fails_on_empty\nPASSED tests/unit/test_scopes.py::test_scope_deserialize_fails_on_multiple_top_level_scopes\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-*foo]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo[]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo]]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[Scope-foo bar]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-*foo]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo[bar]]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo[]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo]]\nPASSED tests/unit/test_scopes.py::test_scope_init_forbids_special_chars[MutableScope-foo bar]\nPASSED tests/unit/test_scopes.py::test_scope_contains_requires_scope_objects\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-foo-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[*foo-*foo-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-bar-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*bar-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[*foo-bar-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-*foo-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[*foo-foo-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[bar]-foo[bar]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[bar]-foo-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-foo[bar]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo-foo[bar[baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[bar]-foo[bar[baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[bar[baz]]-foo[bar[baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[*bar]-foo[bar[baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[*bar]-foo[*bar[baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[bar]-foo[bar[*baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_simple_cases[foo[*bar]-foo[bar[*baz]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[bar baz]-foo[bar[baz] baz]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[bar baz]-foo[bar[baz]]-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[baz bar]-foo[bar[baz] baz]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[foo[bar baz]-foo[bar[baz] baz buzz]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer]]-timer[transfer_ap[transfer[*foo/data_access]]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[transfer[*foo/data_access *bar/data_access]]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*bar *foo]]]-timer[transfer_ap[transfer[*foo *bar *baz]]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[transfer]]-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access *bar/data_access]]]-timer[transfer_ap[transfer[*foo/data_access]]]-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[foo/data_access]]]-timer[transfer_ap[transfer[*foo/data_access]]]-False]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[*transfer[*foo/data_access]]]-timer[transfer_ap[transfer[foo/data_access]]]-True]\nPASSED tests/unit/test_scopes.py::test_scope_contains_complex_usages[timer[transfer_ap[transfer[*foo/data_access]]]-timer[transfer_ap[*transfer[foo/data_access]]]-False]\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_config\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_token_data\nPASSED tests/unit/test_tokenstorage.py::test_sqliteadapter_passes_connect_params\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_bad_data\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version\nPASSED tests/unit/test_utils.py::test_b64str_non_ascii\nPASSED tests/unit/test_utils.py::test_b64str_ascii\nPASSED tests/unit/test_utils.py::test_sha256string\nPASSED tests/unit/test_utils.py::test_slash_join[a-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-None]\nPASSED tests/unit/test_utils.py::test_payload_wrapper_methods\nPASSED tests/unit/test_utils.py::test_classproperty_simple\nPASSED tests/unit/authorizers/test_access_token_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_access_token_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[user-\\u30c6\\u30b9\\u30c8]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u0434\\u0443\\u043c-pass]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u30c6\\u30b9\\u30c8-\\u0434\\u0443\\u043c]\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_get_token_response\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_multiple_resource_servers\nPASSED tests/unit/authorizers/test_client_credentials_authorizer.py::test_can_create_authorizer_from_mutable_scopes\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_init\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_new_access_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_ok\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_expires\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/helpers/test_search.py::test_init\nPASSED tests/unit/helpers/test_search.py::test_set_method[q]\nPASSED tests/unit/helpers/test_search.py::test_set_method[limit]\nPASSED tests/unit/helpers/test_search.py::test_set_method[offset]\nPASSED tests/unit/helpers/test_search.py::test_set_method[advanced]\nPASSED tests/unit/helpers/test_search.py::test_add_facet\nPASSED tests/unit/helpers/test_search.py::test_add_filter\nPASSED tests/unit/helpers/test_search.py::test_add_boost\nPASSED tests/unit/helpers/test_search.py::test_add_sort\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_ok\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[submission_id-foo]\nPASSED tests/unit/helpers/test_timer.py::test_timer_from_transfer_data_rejects_forbidden_keys[skip_activation_check-True]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_simple\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_w_params\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_no_client\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args0]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args1]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args2]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args3]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init_rejects_bad_usage[tdata_args4]\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_symlink_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_client\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_supported_parameters[add_kwargs3]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_with_additional_fields\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args0-kwargs0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args1-kwargs1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_no_client[args2-kwargs2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args0]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args1]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args2]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init_rejects_bad_usage[ddata_args3]\nPASSED tests/unit/helpers/test_transfer.py::test_delete_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[exists-0]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[0-0]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[size-1]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[1-1]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[mtime-2]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[2-2]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[checksum-3]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[3-3]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[EXISTS-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[hash-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[100-100]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[None-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[None-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[True-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-transfer]\nPASSED tests/unit/helpers/test_transfer.py::test_skip_activation_check_supported[False-delete]\nPASSED tests/unit/helpers/test_transfer.py::test_add_filter_rule\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[foo-foo]\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter1-foo:bar/a:b,c]\nPASSED tests/unit/helpers/test_transfer.py::test_ls_format_filter[filter2-expected2]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_base_abstract\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_type_field\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs4-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs6-1.7.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs0-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs1-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs2-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs3-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs4-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs6-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs7-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs8-1.6.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_add_custom\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[dict]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[POSIXCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[POSIXStagingCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_policies_field[GoogleCloudStorageCollectionPolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_policy_document_conversion\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_posix_staging_env_vars\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[StorageGatewayDocument]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStagingStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BlackPearlStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[BoxStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[CephStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleDriveStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[GoogleCloudStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[OneDriveStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[AzureBlobStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[S3StoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[ActiveScaleStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[IrodsStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[HPSSStoragePolicies]\nPASSED tests/unit/responses/test_activation_response.py::test_expires_at\nPASSED tests/unit/responses/test_activation_response.py::test_supports_auto_activation[True]\nPASSED tests/unit/responses/test_activation_response.py::test_supports_auto_activation[False]\nPASSED tests/unit/responses/test_activation_response.py::test_supports_web_activation\nPASSED tests/unit/responses/test_activation_response.py::test_active_until\nPASSED tests/unit/responses/test_activation_response.py::test_always_activated\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope1-resource_server_1]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope2 scope2:0 scope2:1-resource_server_2]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope3:0 scope3:1-resource_server_3]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_fancy\nPASSED tests/unit/responses/test_oauth_token_response.py::test_stringify\nPASSED tests/unit/responses/test_oauth_token_response.py::test_stringify_dependent_tokens\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_retry_after_header]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_transient_error]\nPASSED tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_should_retry_explicit_on_first_check\nPASSED tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_fallthrough_to_false\nPASSED tests/unit/transport/test_transport_authz_handling.py::test_will_not_modify_authz_header_without_authorizer\nPASSED tests/unit/transport/test_transport_authz_handling.py::test_will_null_authz_header_with_null_authorizer\nSKIPPED [1] tests/functional/local_endpoint/test_personal.py:96: test requires Windows\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_gridmap_permission_denied\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_endpoint_id_permission_denied\n=================== 2 failed, 671 passed, 1 skipped in 4.24s ===================\n___NEMO_GYM_SCALE_SWE_TEST_END___\n\nexit status 1", "error": null, "eval_sandbox_start_time_taken": 46.228997468948364, "patch_verification_time_taken": 29.23289966583252, "_ng_task_index": 2, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "globus_globus-sdk-python_pr568", "language": "python", "test_results": {"FAIL_TO_PASS": {"success": ["tests/functional/gcs/test_scope_helpers.py::test_str_contains_scope_properties", "tests/unit/test_scopes.py::test_scopebuilder_str"], "failure": []}, "PASS_TO_PASS": {"success": ["tests/functional/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_native", "tests/functional/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_native", "tests/functional/auth/test_identity_map.py::test_identity_map_add_after_lookup", "tests/functional/auth/test_identity_map.py::test_identity_map_get_with_default", "tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-username-id]", "tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-id-username]", "tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_mismatch[usernames]", "tests/functional/auth/test_identity_map.py::test_identity_map_prepopulated_cache", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_unauthorized", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[globus@globus.org]", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[usernames2]", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[False-false]", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[fALSe-false]", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]", "tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames1]", "tests/functional/base_client/test_encodings.py::test_cannot_encode_dict_as_text", "tests/functional/base_client/test_encodings.py::test_cannot_form_encode_bad_types", "tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[502]", "tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[503]", "tests/functional/base_client/test_retry_behavior.py::test_transport_retry_limit", "tests/functional/base_client/test_retry_behavior.py::test_bad_max_retries_causes_error", "tests/functional/base_client/test_retry_behavior.py::test_persistent_connection_error", "tests/functional/gcs/test_collections.py::test_get_collection_list_include_param", "tests/functional/gcs/test_roles.py::test_create_role", "tests/functional/gcs/test_scope_helpers.py::test_manage_collections_scope_helper", "tests/functional/gcs/test_scope_helpers.py::test_data_access_scope_helper", "tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[None]", "tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies,foo]", "tests/functional/gcs/test_storage_gateways.py::test_create_storage_gateway", "tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway[include_param3]", "tests/functional/groups/test_group_memberships.py::test_batch_action_payload", "tests/functional/groups/test_groups.py::test_set_group_policies", "tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=sirosen\"]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[]", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_conf", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_confdir", "tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data", "tests/functional/search/test_search.py::test_search_post_query_simple[query_doc0]", "tests/functional/search/test_search_roles.py::test_search_role_delete", "tests/functional/search/test_search_roles.py::test_search_role_list", "tests/functional/timer/test_jobs.py::test_create_job[interval0-start0]", "tests/functional/timer/test_jobs.py::test_create_job[interval1-start0]", "tests/functional/timer/test_jobs.py::test_create_job[600-start0]", "tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists", "tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs2]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs6]", "tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]", "tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve", "tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data", "tests/functional/tokenstorage/test_sqlite.py::test_remove_tokens", "tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[wrap]", "tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]", "tests/functional/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]", "tests/functional/transfer/test_paginated.py::test_task_skipped_errors_pagination[wrap]", "tests/functional/transfer/test_simple.py::test_get_endpoint", "tests/functional/transfer/test_simple.py::test_autoactivation", "tests/functional/transfer/test_simple.py::test_task_list[client_kwargs1-qs1]", "tests/functional/transfer/test_simple.py::test_task_list[client_kwargs3-qs3]", "tests/functional/transfer/test_simple.py::test_task_list[client_kwargs5-qs5]", "tests/functional/transfer/test_simple.py::test_task_list[client_kwargs7-qs7]", "tests/functional/transfer/test_task_submit.py::test_delete_submit_success", "tests/functional/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs2]", "tests/functional/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[1-1]", "tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]", "tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-True]", "tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]", "tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_status-ACTIVE]", "tests/functional/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list", "tests/unit/test_base_client.py::test_http_methods[get-False]", "tests/unit/test_base_client.py::test_http_methods[post-True]", "tests/unit/test_config.py::test_get_ssl_verify[ON-True]", "tests/unit/test_config.py::test_get_ssl_verify[0-False]", "tests/unit/test_config.py::test_get_ssl_verify[NO-False]", "tests/unit/test_config.py::test_get_ssl_verify[false-False]", "tests/unit/test_config.py::test_get_ssl_verify[f-False]", "tests/unit/test_config.py::test_get_ssl_verify[OFF-False]", "tests/unit/test_config.py::test_get_ssl_verify[invalid-ValueError]", "tests/unit/test_config.py::test_get_ssl_verify[1.0-ValueError]", "tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]", "tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]", "tests/unit/test_config.py::test_get_http_timeout[f-ValueError]", "tests/unit/test_config.py::test_service_url_overrides", "tests/unit/test_exc.py::test_raw_json_works", "tests/unit/test_exc.py::test_raw_text_works", "tests/unit/test_exc.py::test_get_args_transfer", "tests/unit/test_exc.py::test_convert_requests_exception[orig2-GlobusConnectionError]", "tests/unit/test_imports.py::test_import_str[from globus_sdk import *]", "tests/unit/test_scopes.py::test_url_scope_string", "tests/unit/test_scopes.py::test_urn_scope_string", "tests/unit/test_scopes.py::test_known_scopes", "tests/unit/test_scopes.py::test_known_url_scopes", "tests/unit/test_scopes.py::test_mutable_scope_str_and_repr_simple", "tests/unit/test_scopes.py::test_mutable_scope_str_and_repr_with_dependencies", "tests/unit/test_scopes.py::test_mutable_scope_str_nested", "tests/unit/test_scopes.py::test_mutable_scope_collection_to_str", "tests/unit/test_scopes.py::test_mutable_scope_rejects_scope_with_optional_marker", "tests/unit/test_scopes.py::test_scopebuilder_make_mutable_produces_same_strings", "tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_token_data", "tests/unit/test_tokenstorage.py::test_simplejson_reading_bad_data", "tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version", "tests/unit/test_utils.py::test_b64str_ascii", "tests/unit/test_utils.py::test_slash_join[a/b-None]", "tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u0434\\u0443\\u043c-pass]", "tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u30c6\\u30b9\\u30c8-\\u0434\\u0443\\u043c]", "tests/unit/authorizers/test_null_authorizer.py::test_handle_missing_authorization", "tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[simple]", "tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration", "tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_token", "tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]", "tests/unit/helpers/test_auth_flow_managers.py::test_simple_input_native_app_challenge", "tests/unit/helpers/test_search.py::test_set_method[advanced]", "tests/unit/helpers/test_search.py::test_add_filter", "tests/unit/helpers/test_transfer.py::test_tranfer_init", "tests/unit/helpers/test_transfer.py::test_delete_iter_items", "tests/unit/helpers/test_transfer.py::test_notification_options[None-True-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]", "tests/unit/helpers/test_transfer.py::test_notification_options[True-None-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[True-False-None]", "tests/unit/helpers/test_transfer.py::test_notification_options[True-False-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-True-False]", "tests/unit/helpers/test_transfer.py::test_notification_options[False-False-False]", "tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[EXISTS-ValueError]", "tests/unit/helpers/gcs/test_collections.py::test_collection_type_field", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs4-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs4-1.4.0]", "tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]", "tests/unit/helpers/gcs/test_role.py::test_gcs_role_helper_supports_additional_fields", "tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs0-1.0.0]", "tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStoragePolicies]", "tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures", "tests/unit/responses/test_response.py::test_data", "tests/unit/responses/test_response.py::test_contains", "tests/unit/responses/test_response.py::test_text", "tests/unit/responses/test_response.py::test_client_required_with_requests_response", "tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data", "tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response", "tests/unit/responses/test_response.py::test_http_headers_from_response", "tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1.0.1]", "tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#0.0.1]", "tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#2.0.0.1]", "tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]", "tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_fallthrough_to_false", "tests/unit/transport/test_transfer_transport.py::test_transfer_does_not_retry_external", "tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-False]", "tests/unit/transport/test_transport.py::test_transport_tuning[http_timeout-60-120]", "tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-10]"], "failure": []}, "tests_observed": 156, "resolved": true}, "test_output": "Previous HEAD position was 3bfcd067 Merge pull request #566 from sirosen/auth-errmessage-fields\nHEAD is now at b8e5b554 Merge pull request #570 from globus/dependabot/github_actions/actions/setup-python-3\nHEAD is now at b8e5b554 Merge pull request #570 from globus/dependabot/github_actions/actions/setup-python-3\nSwitched to a new branch 'scaleswe'\nChecking patch changelog.d/20220526_173626_sirosen_scopebuilder_strings.rst...\nChecking patch src/globus_sdk/scopes.py...\nChecking patch tests/functional/gcs/test_scope_helpers.py...\nChecking patch tests/unit/test_scopes.py...\nApplied patch changelog.d/20220526_173626_sirosen_scopebuilder_strings.rst cleanly.\nApplied patch src/globus_sdk/scopes.py cleanly.\nApplied patch tests/functional/gcs/test_scope_helpers.py cleanly.\nApplied patch tests/unit/test_scopes.py cleanly.\nChecking patch tests/functional/gcs/test_scope_helpers.py...\nerror: while searching for:\ndef test_data_access_scope_helper(client):\n sb = client.get_gcs_collection_scopes(zero_id)\n assert sb.data_access == f\"https://auth.globus.org/scopes/{zero_id_s}/data_access\"\n # manage_collections is separated from collection scopes\n assert not hasattr(sb, \"manage_collections\")\n\nerror: patch failed: tests/functional/gcs/test_scope_helpers.py:16\nChecking patch tests/unit/test_scopes.py...\nerror: while searching for:\n )\n\n\ndef test_mutable_scope_str_and_repr_simple():\n s = MutableScope(\"simple\")\n assert str(s) == \"simple\"\n\nerror: patch failed: tests/unit/test_scopes.py:32\nApplying patch tests/functional/gcs/test_scope_helpers.py with 1 reject...\nRejected hunk #1.\nApplying patch tests/unit/test_scopes.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SCALE_SWE_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-6.2.5, py-1.11.0, pluggy-1.6.0\nrootdir: /workspace/globus-sdk-python, configfile: setup.cfg\nplugins: forked-1.6.0, xdist-2.5.0\ncollected 484 items\n\ntests/functional/gcs/test_scope_helpers.py ... [ 0%]\ntests/unit/test_scopes.py ........... [ 2%]\ntests/functional/auth/test_auth_client_flow.py .... [ 3%]\ntests/functional/auth/test_identity_map.py .................... [ 7%]\ntests/functional/auth/test_simple_auth_usage.py ................ [ 11%]\ntests/functional/base_client/test_encodings.py .... [ 11%]\ntests/functional/base_client/test_retry_behavior.py ................. [ 15%]\ntests/functional/gcs/test_collections.py ........... [ 17%]\ntests/functional/gcs/test_roles.py ..... [ 18%]\ntests/functional/gcs/test_storage_gateways.py ........... [ 21%]\ntests/functional/groups/test_group_memberships.py ... [ 21%]\ntests/functional/groups/test_groups.py ........... [ 23%]\ntests/functional/local_endpoint/test_personal.py s................FF [ 27%]\ntests/functional/search/test_search.py ........ [ 29%]\ntests/functional/search/test_search_roles.py ... [ 30%]\ntests/functional/timer/test_jobs.py ............ [ 32%]\ntests/functional/tokenstorage/test_simplejson_file.py ...... [ 33%]\ntests/functional/tokenstorage/test_sqlite.py ................... [ 37%]\ntests/functional/transfer/test_paginated.py .............. [ 40%]\ntests/functional/transfer/test_simple.py ................ [ 44%]\ntests/functional/transfer/test_task_submit.py ... [ 44%]\ntests/functional/transfer/test_task_wait.py ...... [ 45%]\ntests/functional/transfer/endpoint_manager/test_task_event_list.py .... [ 46%]\ntests/functional/transfer/endpoint_manager/test_task_list.py ........... [ 48%]\n..... [ 50%]\ntests/unit/test_base_client.py ............ [ 52%]\ntests/unit/test_config.py ..................................... [ 60%]\ntests/unit/test_exc.py .................... [ 64%]\ntests/unit/test_imports.py .. [ 64%]\ntests/unit/test_tokenstorage.py .... [ 65%]\ntests/unit/test_utils.py ........... [ 67%]\ntests/unit/authorizers/test_basic_authorizer.py ..... [ 68%]\ntests/unit/authorizers/test_null_authorizer.py .. [ 69%]\ntests/unit/authorizers/test_refresh_token_authorizer.py ...... [ 70%]\ntests/unit/authorizers/test_renewing_authorizer.py ........... [ 72%]\ntests/unit/helpers/test_auth_flow_managers.py ..... [ 73%]\ntests/unit/helpers/test_search.py ......... [ 75%]\ntests/unit/helpers/test_transfer.py .................................... [ 83%]\n......... [ 84%]\ntests/unit/helpers/gcs/test_collections.py ................. [ 88%]\ntests/unit/helpers/gcs/test_role.py . [ 88%]\ntests/unit/helpers/gcs/test_storage_gateway.py ........ [ 90%]\ntests/unit/responses/test_oauth_token_response.py ...... [ 91%]\ntests/unit/responses/test_response.py .............. [ 94%]\ntests/unit/responses/test_unpacking_gcs_response.py ....... [ 95%]\ntests/unit/transport/test_default_retry_policy.py ........ [ 97%]\ntests/unit/transport/test_retry_check_runner.py .. [ 97%]\ntests/unit/transport/test_transfer_transport.py .. [ 98%]\ntests/unit/transport/test_transport.py ........ [100%]\n\n=========================== short test summary info ============================\nPASSED tests/functional/gcs/test_scope_helpers.py::test_manage_collections_scope_helper\nPASSED tests/functional/gcs/test_scope_helpers.py::test_data_access_scope_helper\nPASSED tests/functional/gcs/test_scope_helpers.py::test_str_contains_scope_properties\nPASSED tests/unit/test_scopes.py::test_url_scope_string\nPASSED tests/unit/test_scopes.py::test_urn_scope_string\nPASSED tests/unit/test_scopes.py::test_known_scopes\nPASSED tests/unit/test_scopes.py::test_known_url_scopes\nPASSED tests/unit/test_scopes.py::test_scopebuilder_str\nPASSED tests/unit/test_scopes.py::test_mutable_scope_str_and_repr_simple\nPASSED tests/unit/test_scopes.py::test_mutable_scope_str_and_repr_with_dependencies\nPASSED tests/unit/test_scopes.py::test_mutable_scope_str_nested\nPASSED tests/unit/test_scopes.py::test_mutable_scope_collection_to_str\nPASSED tests/unit/test_scopes.py::test_mutable_scope_rejects_scope_with_optional_marker\nPASSED tests/unit/test_scopes.py::test_scopebuilder_make_mutable_produces_same_strings\nPASSED tests/functional/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_native\nPASSED tests/functional/auth/test_auth_client_flow.py::test_oauth2_get_authorize_url_confidential\nPASSED tests/functional/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_native\nPASSED tests/functional/auth/test_auth_client_flow.py::test_oauth2_exchange_code_for_tokens_confidential\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_initialization_no_values\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_initialization_mixed_and_duplicate_values\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_initialization_batch_size\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_add\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_add_after_lookup\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_multiple\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_keyerror\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_get_with_default\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_del\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-username-username]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-username-id]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[True-id-username]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-username]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-username-id]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_match[False-id-username]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_mismatch[usernames]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_shared_cache_mismatch[ids]\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_prepopulated_cache\nPASSED tests/functional/auth/test_identity_map.py::test_identity_map_batch_limit\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_unauthorized\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[globus@globus.org]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[usernames1]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[usernames2]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_success[usernames3]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[True-true]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[False-false]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[1-true]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[0-true]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[fALSe-false]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_provision[true-true]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[globus@globus.org,sirosen@globus.org]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames1]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_usernames_success[usernames2]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[46bd0f56-e24f-11e5-a510-131bef46955c,ae341a98-d274-11e5-b888-dbae3a8ba545]\nPASSED tests/functional/auth/test_simple_auth_usage.py::test_get_identities_multiple_ids_success[ids1]\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_encode_dict_as_text\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_encode_with_unknown_encoding\nPASSED tests/functional/base_client/test_encodings.py::test_cannot_form_encode_bad_types\nPASSED tests/functional/base_client/test_encodings.py::test_form_encoding_works\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[500]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[429]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[502]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[503]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_transient_error[504]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_disabled_via_tune\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_on_network_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[5-False]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[6-True]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_limit[7-True]\nPASSED tests/functional/base_client/test_retry_behavior.py::test_transport_retry_limit\nPASSED tests/functional/base_client/test_retry_behavior.py::test_bad_max_retries_causes_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_persistent_connection_error\nPASSED tests/functional/base_client/test_retry_behavior.py::test_no_retry_401_no_authorizer\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_with_authorizer\nPASSED tests/functional/base_client/test_retry_behavior.py::test_no_retry_with_authorizer_no_handler\nPASSED tests/functional/base_client/test_retry_behavior.py::test_retry_with_authorizer_persistent_401\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_list\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_list_include_param\nPASSED tests/functional/gcs/test_collections.py::test_error_parsing_forbidden\nPASSED tests/functional/gcs/test_collections.py::test_get_collection\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_flat\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_bad_version\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_includes_sideloaded_data\nPASSED tests/functional/gcs/test_collections.py::test_get_collection_invalid_datatype_type\nPASSED tests/functional/gcs/test_collections.py::test_delete_collection\nPASSED tests/functional/gcs/test_collections.py::test_create_mapped_collection\nPASSED tests/functional/gcs/test_collections.py::test_update_guest_collection\nPASSED tests/functional/gcs/test_roles.py::test_get_role_list\nPASSED tests/functional/gcs/test_roles.py::test_get_role_list_params\nPASSED tests/functional/gcs/test_roles.py::test_create_role\nPASSED tests/functional/gcs/test_roles.py::test_get_role\nPASSED tests/functional/gcs/test_roles.py::test_delete_role\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[None]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[private_policies,foo]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway_list[include_param3]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_create_storage_gateway\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway[None]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway[private_policies]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway[private_policies,foo]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_get_storage_gateway[include_param3]\nPASSED tests/functional/gcs/test_storage_gateways.py::test_update_storage_gateway\nPASSED tests/functional/gcs/test_storage_gateways.py::test_delete_storage_gateway\nPASSED tests/functional/groups/test_group_memberships.py::test_approve_pending\nPASSED tests/functional/groups/test_group_memberships.py::test_add_member\nPASSED tests/functional/groups/test_group_memberships.py::test_batch_action_payload\nPASSED tests/functional/groups/test_groups.py::test_my_groups_simple\nPASSED tests/functional/groups/test_groups.py::test_get_group\nPASSED tests/functional/groups/test_groups.py::test_get_group_include[policies]\nPASSED tests/functional/groups/test_groups.py::test_get_group_include[policies,memberships]\nPASSED tests/functional/groups/test_groups.py::test_get_group_include[include_param2]\nPASSED tests/functional/groups/test_groups.py::test_delete_group\nPASSED tests/functional/groups/test_groups.py::test_create_group\nPASSED tests/functional/groups/test_groups.py::test_update_group\nPASSED tests/functional/groups/test_groups.py::test_get_group_policies\nPASSED tests/functional/groups/test_groups.py::test_set_group_policies\nPASSED tests/functional/groups/test_groups.py::test_set_group_policies_explicit_payload\nPASSED tests/functional/local_endpoint/test_personal.py::test_localep_load_id\nPASSED tests/functional/local_endpoint/test_personal.py::test_localep_load_id_alternate_conf_dir\nPASSED tests/functional/local_endpoint/test_personal.py::test_load_id_no_confdir\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[vy2bvggsoqi6loei3oxdvc5fiu]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_b32_mode_invalid_data[u_vy2bvggsoqi6loei3oxdvc5fi/]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=sirosen\"]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"/C=US/O=Globus Consortium/OU=Globus Connect User/CN=sirosen\" sirosen sirosen]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_malformed_entry[\"\" sirosen]\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_conf\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_confdir\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_multiline_data\nPASSED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_no_auth_data\nPASSED tests/functional/search/test_search.py::test_search_query_simple\nPASSED tests/functional/search/test_search.py::test_search_post_query_simple[query_doc0]\nPASSED tests/functional/search/test_search.py::test_search_post_query_simple[query_doc1]\nPASSED tests/functional/search/test_search.py::test_search_post_query_simple[query_doc2]\nPASSED tests/functional/search/test_search.py::test_search_post_query_arg_overrides[query_doc0]\nPASSED tests/functional/search/test_search.py::test_search_post_query_arg_overrides[query_doc1]\nPASSED tests/functional/search/test_search.py::test_search_paginated_scroll_query[query_doc0]\nPASSED tests/functional/search/test_search.py::test_search_paginated_scroll_query[query_doc1]\nPASSED tests/functional/search/test_search_roles.py::test_search_role_create\nPASSED tests/functional/search/test_search_roles.py::test_search_role_delete\nPASSED tests/functional/search/test_search_roles.py::test_search_role_list\nPASSED tests/functional/timer/test_jobs.py::test_list_jobs\nPASSED tests/functional/timer/test_jobs.py::test_get_job\nPASSED tests/functional/timer/test_jobs.py::test_create_job[interval0-start0]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[interval0-2022-04-05T06:00:00]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[interval1-start0]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[interval1-2022-04-05T06:00:00]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[600-start0]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[600-2022-04-05T06:00:00]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[None-start0]\nPASSED tests/functional/timer/test_jobs.py::test_create_job[None-2022-04-05T06:00:00]\nPASSED tests/functional/timer/test_jobs.py::test_update_job\nPASSED tests/functional/timer/test_jobs.py::test_delete_job\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_dne\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_file_exists\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_get_token_data\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_simplejson_file.py::test_store_perms\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs0]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-False-kwargs1]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs2]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-False-kwargs3]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs4]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[True-True-kwargs5]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs6]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_constructor[False-True-kwargs7]\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve_simple_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_on_refresh_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_multiple_adapters_store_and_retrieve_different_namespaces\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_config_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_load_missing_token_data\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_tokens\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_remove_config\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_store_and_refresh\nPASSED tests/functional/tokenstorage/test_sqlite.py::test_iter_namespaces\nPASSED tests/functional/transfer/test_paginated.py::test_endpoint_search_noresults\nPASSED tests/functional/transfer/test_paginated.py::test_endpoint_search_one_page\nPASSED tests/functional/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-__iter__]\nPASSED tests/functional/transfer/test_paginated.py::test_paginated_method_multipage[endpoint_search-paged_data0-pages]\nPASSED tests/functional/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-__iter__]\nPASSED tests/functional/transfer/test_paginated.py::test_paginated_method_multipage[task_list-paged_data1-pages]\nPASSED tests/functional/transfer/test_paginated.py::test_endpoint_search_multipage_iter_items\nPASSED tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_non_paginated\nPASSED tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[attr]\nPASSED tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_pages[wrap]\nPASSED tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[attr]\nPASSED tests/functional/transfer/test_paginated.py::test_shared_endpoint_list_iter_items[wrap]\nPASSED tests/functional/transfer/test_paginated.py::test_task_skipped_errors_pagination[attr]\nPASSED tests/functional/transfer/test_paginated.py::test_task_skipped_errors_pagination[wrap]\nPASSED tests/functional/transfer/test_simple.py::test_get_endpoint\nPASSED tests/functional/transfer/test_simple.py::test_update_endpoint\nPASSED tests/functional/transfer/test_simple.py::test_update_endpoint_rewrites_activation_servers\nPASSED tests/functional/transfer/test_simple.py::test_update_endpoint_invalid_activation_servers\nPASSED tests/functional/transfer/test_simple.py::test_create_endpoint\nPASSED tests/functional/transfer/test_simple.py::test_create_endpoint_invalid_activation_servers\nPASSED tests/functional/transfer/test_simple.py::test_operation_ls\nPASSED tests/functional/transfer/test_simple.py::test_autoactivation\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs0-qs0]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs1-qs1]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs2-qs2]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs3-qs3]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs4-qs4]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs5-qs5]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs6-qs6]\nPASSED tests/functional/transfer/test_simple.py::test_task_list[client_kwargs7-qs7]\nPASSED tests/functional/transfer/test_task_submit.py::test_transfer_submit_failure\nPASSED tests/functional/transfer/test_task_submit.py::test_transfer_submit_success\nPASSED tests/functional/transfer/test_task_submit.py::test_delete_submit_success\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs0]\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs1]\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs2]\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_bad_args_min_wait[add_kwargs3]\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_success_case\nPASSED tests/functional/transfer/test_task_wait.py::test_task_wait_unfinished_case\nPASSED tests/functional/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[True-1]\nPASSED tests/functional/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[False-0]\nPASSED tests/functional/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[1-1]\nPASSED tests/functional/transfer/endpoint_manager/test_task_event_list.py::test_filter_is_error[0-0]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-paramvalue0]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_task_id-foo]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-paramvalue2]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_owner_id-foo]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-paramvalue4]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_endpoint-foo]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-True]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_is_paused-False]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-0]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_min_faults-10]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_local_user-foouser]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_status-ACTIVE]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_strsafe_params[filter_completion_time-2020-08-25T00:00:00,2021-08-25T16:05:28]\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_filter_status_list\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_filter_task_id_list\nPASSED tests/functional/transfer/endpoint_manager/test_task_list.py::test_filter_completion_time_datetime_tuple\nPASSED tests/unit/test_base_client.py::test_cannot_instantiate_plain_base_client\nPASSED tests/unit/test_base_client.py::test_set_http_timeout\nPASSED tests/unit/test_base_client.py::test_set_app_name[init]\nPASSED tests/unit/test_base_client.py::test_set_app_name[post_init]\nPASSED tests/unit/test_base_client.py::test_http_methods[get-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[delete-False]\nPASSED tests/unit/test_base_client.py::test_http_methods[post-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[put-True]\nPASSED tests/unit/test_base_client.py::test_http_methods[patch-True]\nPASSED tests/unit/test_base_client.py::test_handle_url_unsafe_chars\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_instance\nPASSED tests/unit/test_base_client.py::test_access_resource_server_property_via_class\nPASSED tests/unit/test_config.py::test_get_service_url\nPASSED tests/unit/test_config.py::test_get_ssl_verify[True-True0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[YES-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[true-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[t-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[True-True1]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[ON-True]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[False-False0]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[NO-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[false-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[f-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[False-False1]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[OFF-False]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[1.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify[0.0-ValueError]\nPASSED tests/unit/test_config.py::test_get_ssl_verify_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[ 1-1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.0 -1.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[0.0-0.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-60.0]\nPASSED tests/unit/test_config.py::test_get_http_timeout[-1-None]\nPASSED tests/unit/test_config.py::test_get_http_timeout[invalid-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[no-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[1.1.-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[t-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout[f-ValueError]\nPASSED tests/unit/test_config.py::test_get_http_timeout_with_explicit_value\nPASSED tests/unit/test_config.py::test_get_environment_name\nPASSED tests/unit/test_config.py::test_env_config_registration\nPASSED tests/unit/test_config.py::test_service_url_overrides\nPASSED tests/unit/test_config.py::test_service_url_from_env_var\nPASSED tests/unit/test_exc.py::test_raw_json_works\nPASSED tests/unit/test_exc.py::test_raw_json_fail\nPASSED tests/unit/test_exc.py::test_raw_text_works\nPASSED tests/unit/test_exc.py::test_get_args\nPASSED tests/unit/test_exc.py::test_get_args_transfer\nPASSED tests/unit/test_exc.py::test_get_args_auth\nPASSED tests/unit/test_exc.py::test_get_args_on_unknown_json\nPASSED tests/unit/test_exc.py::test_get_args_on_non_dict_json\nPASSED tests/unit/test_exc.py::test_info_is_falsey_on_non_dict_json\nPASSED tests/unit/test_exc.py::test_consent_required_info\nPASSED tests/unit/test_exc.py::test_authz_params_info\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig0-NetworkError]\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig1-GlobusTimeoutError]\nPASSED tests/unit/test_exc.py::test_requests_err_wrappers[orig2-GlobusConnectionError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig0-NetworkError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig1-GlobusTimeoutError]\nPASSED tests/unit/test_exc.py::test_convert_requests_exception[orig2-GlobusConnectionError]\nPASSED tests/unit/test_exc.py::test_http_reason_exposure[400-Bad Request]\nPASSED tests/unit/test_exc.py::test_http_reason_exposure[500-Server Error]\nPASSED tests/unit/test_exc.py::test_http_header_exposure\nPASSED tests/unit/test_imports.py::test_import_str[from globus_sdk import *]\nPASSED tests/unit/test_imports.py::test_import_str[from globus_sdk import TransferClient, AuthClient, SearchClient]\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_config\nPASSED tests/unit/test_tokenstorage.py::test_sqlite_reading_bad_token_data\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_bad_data\nPASSED tests/unit/test_tokenstorage.py::test_simplejson_reading_unsupported_format_version\nPASSED tests/unit/test_utils.py::test_b64str_non_ascii\nPASSED tests/unit/test_utils.py::test_b64str_ascii\nPASSED tests/unit/test_utils.py::test_sha256string\nPASSED tests/unit/test_utils.py::test_slash_join[a-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/-/b]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-]\nPASSED tests/unit/test_utils.py::test_slash_join[a/b-None]\nPASSED tests/unit/test_utils.py::test_payload_wrapper_methods\nPASSED tests/unit/test_utils.py::test_classproperty_simple\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[user-\\u30c6\\u30b9\\u30c8]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u0434\\u0443\\u043c-pass]\nPASSED tests/unit/authorizers/test_basic_authorizer.py::test_unicode_handling[\\u30c6\\u30b9\\u30c8-\\u0434\\u0443\\u043c]\nPASSED tests/unit/authorizers/test_null_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_null_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_get_token_response[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_multiple_resource_servers[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[simple]\nPASSED tests/unit/authorizers/test_refresh_token_authorizer.py::test_conditional_refresh_token_update[with_new_refresh_token]\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_init\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_new_access_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_ok\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_ensure_valid_token_no_expiration\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_expired\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_token\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_get_authorization_header_no_expires\nPASSED tests/unit/authorizers/test_renewing_authorizer.py::test_handle_missing_authorization\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxx]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_invalid_native_app_challenge[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_simple_input_native_app_challenge\nPASSED tests/unit/helpers/test_auth_flow_managers.py::test_random_native_app_challenge\nPASSED tests/unit/helpers/test_search.py::test_init\nPASSED tests/unit/helpers/test_search.py::test_set_method[q]\nPASSED tests/unit/helpers/test_search.py::test_set_method[limit]\nPASSED tests/unit/helpers/test_search.py::test_set_method[offset]\nPASSED tests/unit/helpers/test_search.py::test_set_method[advanced]\nPASSED tests/unit/helpers/test_search.py::test_add_facet\nPASSED tests/unit/helpers/test_search.py::test_add_filter\nPASSED tests/unit/helpers/test_search.py::test_add_boost\nPASSED tests/unit/helpers/test_search.py::test_add_sort\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_init\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_add_symlink_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_init\nPASSED tests/unit/helpers/test_transfer.py::test_delete_add_item\nPASSED tests/unit/helpers/test_transfer.py::test_delete_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_transfer_iter_items\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[None-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[True-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-None-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-True-False]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-None]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-True]\nPASSED tests/unit/helpers/test_transfer.py::test_notification_options[False-False-False]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[exists-0]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[0-0]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[size-1]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[1-1]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[mtime-2]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[2-2]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[checksum-3]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[3-3]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[EXISTS-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[hash-ValueError]\nPASSED tests/unit/helpers/test_transfer.py::test_tranfer_sync_levels_result[100-100]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_base_abstract\nPASSED tests/unit/helpers/gcs/test_collections.py::test_collection_type_field\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs3-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs4-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction[use_kwargs5-1.1.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs0-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs1-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs2-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs3-1.2.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs4-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs5-1.4.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs6-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_mapped_specific_fields[use_kwargs7-1.5.0]\nPASSED tests/unit/helpers/gcs/test_collections.py::test_datatype_version_deduction_add_custom\nPASSED tests/unit/helpers/gcs/test_role.py::test_gcs_role_helper_supports_additional_fields\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs0-1.0.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs1-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_datatype_version_deduction[use_kwargs2-1.1.0]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_policy_document_conversion\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_posix_staging_env_vars\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[StorageGatewayDocument]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStagingStoragePolicies]\nPASSED tests/unit/helpers/gcs/test_storage_gateway.py::test_storage_gateway_documents_support_additional_fields[POSIXStoragePolicies]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_resource_server_lookups\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope1-resource_server_1]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope2 scope2:0 scope2:1-resource_server_2]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_simple[scope3:0 scope3:1-resource_server_3]\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_failures\nPASSED tests/unit/responses/test_oauth_token_response.py::test_by_scopes_lookups_fancy\nPASSED tests/unit/responses/test_response.py::test_data\nPASSED tests/unit/responses/test_response.py::test_str\nPASSED tests/unit/responses/test_response.py::test_getitem\nPASSED tests/unit/responses/test_response.py::test_contains\nPASSED tests/unit/responses/test_response.py::test_get\nPASSED tests/unit/responses/test_response.py::test_text\nPASSED tests/unit/responses/test_response.py::test_no_content_type_header\nPASSED tests/unit/responses/test_response.py::test_client_required_with_requests_response\nPASSED tests/unit/responses/test_response.py::test_client_forbidden_when_wrapping\nPASSED tests/unit/responses/test_response.py::test_value_error_indexing_on_non_json_data\nPASSED tests/unit/responses/test_response.py::test_cannot_construct_base_iterable_response\nPASSED tests/unit/responses/test_response.py::test_http_status_code_on_response\nPASSED tests/unit/responses/test_response.py::test_http_reason_on_response\nPASSED tests/unit/responses/test_response.py::test_http_headers_from_response\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_with_callback\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#0.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_matches_datatype[foo#2.0.0.1]\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_invalid_spec\nPASSED tests/unit/responses/test_unpacking_gcs_response.py::test_unpacking_response_invalid_datatype\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_respects_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_retry_after_too_high[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[429]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_retry_policy_ignores_malformed_retry_after[503]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_retry_after_header]\nPASSED tests/unit/transport/test_default_retry_policy.py::test_default_retry_check_noop_on_exception[default_check_transient_error]\nPASSED tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_should_retry_explicit_on_first_check\nPASSED tests/unit/transport/test_retry_check_runner.py::test_retry_check_runner_fallthrough_to_false\nPASSED tests/unit/transport/test_transfer_transport.py::test_transfer_does_not_retry_external\nPASSED tests/unit/transport/test_transfer_transport.py::test_transfer_retries_others\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-True]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[verify_ssl-True-False]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[http_timeout-60-120]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[retry_backoff-_exponential_backoff-_linear_backoff]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-10]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_sleep-10-1]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_retries-0-5]\nPASSED tests/unit/transport/test_transport.py::test_transport_tuning[max_retries-10-0]\nSKIPPED [1] tests/functional/local_endpoint/test_personal.py:96: test requires Windows\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_owner_info_gridmap_permission_denied\nFAILED tests/functional/local_endpoint/test_personal.py::test_get_endpoint_id_permission_denied\n=================== 2 failed, 481 passed, 1 skipped in 1.62s ===================\n___NEMO_GYM_SCALE_SWE_TEST_END___\n\nexit status 1", "error": null, "eval_sandbox_start_time_taken": 45.32738375663757, "patch_verification_time_taken": 29.16274380683899, "_ng_task_index": 3, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "more-itertools_more-itertools_pr490", "language": "python", "test_results": {"FAIL_TO_PASS": {"success": ["tests/test_more.py::TimeLimitedTests::test_basic", "tests/test_more.py::TimeLimitedTests::test_complete", "tests/test_more.py::TimeLimitedTests::test_zero_limit"], "failure": []}, "PASS_TO_PASS": {"success": ["tests/test_more.py::CollateTests::test_alias", "tests/test_more.py::CollateTests::test_default", "tests/test_more.py::CollateTests::test_empty", "tests/test_more.py::CollateTests::test_key", "tests/test_more.py::CollateTests::test_one", "tests/test_more.py::CollateTests::test_reverse", "tests/test_more.py::ChunkedTests::test_even", "tests/test_more.py::ChunkedTests::test_odd", "tests/test_more.py::ChunkedTests::test_strict_being_true", "tests/test_more.py::ChunkedTests::test_strict_false", "tests/test_more.py::FirstTests::test_default", "tests/test_more.py::FirstTests::test_empty_stop_iteration", "tests/test_more.py::FirstTests::test_many", "tests/test_more.py::FirstTests::test_one", "tests/test_more.py::LastTests::test_basic", "tests/test_more.py::LastTests::test_default", "tests/test_more.py::LastTests::test_empty", "tests/test_more.py::NthOrLastTests::test_basic", "tests/test_more.py::NthOrLastTests::test_default_value", "tests/test_more.py::NthOrLastTests::test_empty_iterable_no_default", "tests/test_more.py::PeekableTests::test_empty", "tests/test_more.py::PeekableTests::test_indexing", "tests/test_more.py::PeekableTests::test_multi_prepend", "tests/test_more.py::PeekableTests::test_multi_prepend_peek", "tests/test_more.py::PeekableTests::test_passthrough", "tests/test_more.py::PeekableTests::test_peek_default", "tests/test_more.py::PeekableTests::test_prepend", "tests/test_more.py::PeekableTests::test_prepend_after_stop", "tests/test_more.py::PeekableTests::test_prepend_indexing", "tests/test_more.py::PeekableTests::test_prepend_iterable", "tests/test_more.py::PeekableTests::test_prepend_many", "tests/test_more.py::PeekableTests::test_prepend_reversed", "tests/test_more.py::PeekableTests::test_prepend_slicing", "tests/test_more.py::PeekableTests::test_prepend_truthiness", "tests/test_more.py::PeekableTests::test_simple_peeking", "tests/test_more.py::PeekableTests::test_slicing", "tests/test_more.py::PeekableTests::test_slicing_error", "tests/test_more.py::PeekableTests::test_slicing_reset", "tests/test_more.py::PeekableTests::test_truthiness", "tests/test_more.py::ConsumerTests::test_consumer", "tests/test_more.py::DistinctPermutationsTests::test_distinct_permutations", "tests/test_more.py::DistinctPermutationsTests::test_other_iterables", "tests/test_more.py::DistinctPermutationsTests::test_r", "tests/test_more.py::IlenTests::test_ilen", "tests/test_more.py::WithIterTests::test_with_iter", "tests/test_more.py::OneTests::test_basic", "tests/test_more.py::OneTests::test_too_long", "tests/test_more.py::OneTests::test_too_long_default_message", "tests/test_more.py::OneTests::test_too_short", "tests/test_more.py::IntersperseTest::test_even", "tests/test_more.py::IntersperseTest::test_n", "tests/test_more.py::IntersperseTest::test_n_zero", "tests/test_more.py::IntersperseTest::test_nested", "tests/test_more.py::IntersperseTest::test_not_iterable", "tests/test_more.py::IntersperseTest::test_odd", "tests/test_more.py::UniqueToEachTests::test_all_unique", "tests/test_more.py::UniqueToEachTests::test_duplicates", "tests/test_more.py::UniqueToEachTests::test_mixed", "tests/test_more.py::WindowedTests::test_basic", "tests/test_more.py::WindowedTests::test_fillvalue", "tests/test_more.py::WindowedTests::test_large_size", "tests/test_more.py::WindowedTests::test_negative", "tests/test_more.py::WindowedTests::test_step", "tests/test_more.py::WindowedTests::test_zero", "tests/test_more.py::SubstringsTests::test_basic", "tests/test_more.py::SubstringsTests::test_empty", "tests/test_more.py::SubstringsTests::test_order", "tests/test_more.py::SubstringsTests::test_strings", "tests/test_more.py::SubstringsIndexesTests::test_basic", "tests/test_more.py::SubstringsIndexesTests::test_empty", "tests/test_more.py::SubstringsIndexesTests::test_order", "tests/test_more.py::SubstringsIndexesTests::test_reverse", "tests/test_more.py::SubstringsIndexesTests::test_strings", "tests/test_more.py::BucketTests::test_basic", "tests/test_more.py::BucketTests::test_in", "tests/test_more.py::BucketTests::test_list", "tests/test_more.py::BucketTests::test_list_validator", "tests/test_more.py::BucketTests::test_validator", "tests/test_more.py::SpyTests::test_basic", "tests/test_more.py::SpyTests::test_immutable", "tests/test_more.py::SpyTests::test_too_many", "tests/test_more.py::SpyTests::test_unpacking", "tests/test_more.py::SpyTests::test_zero", "tests/test_more.py::InterleaveTests::test_even", "tests/test_more.py::InterleaveTests::test_mixed_types", "tests/test_more.py::InterleaveTests::test_short", "tests/test_more.py::InterleaveLongestTests::test_even", "tests/test_more.py::InterleaveLongestTests::test_mixed_types", "tests/test_more.py::InterleaveLongestTests::test_short", "tests/test_more.py::TestCollapse::test_collapse", "tests/test_more.py::TestCollapse::test_collapse_flatten", "tests/test_more.py::TestCollapse::test_collapse_to_bytes", "tests/test_more.py::TestCollapse::test_collapse_to_level", "tests/test_more.py::TestCollapse::test_collapse_to_list", "tests/test_more.py::TestCollapse::test_collapse_to_string", "tests/test_more.py::SideEffectTests::test_before_after", "tests/test_more.py::SideEffectTests::test_before_fails", "tests/test_more.py::SideEffectTests::test_chunked", "tests/test_more.py::SideEffectTests::test_individual", "tests/test_more.py::SlicedTests::test_even", "tests/test_more.py::SlicedTests::test_not_sliceable", "tests/test_more.py::SlicedTests::test_numpy_like_array", "tests/test_more.py::SlicedTests::test_odd", "tests/test_more.py::SlicedTests::test_odd_and_strict", "tests/test_more.py::SplitAtTests::test_basic", "tests/test_more.py::SplitAtTests::test_combination", "tests/test_more.py::SplitAtTests::test_keep_separator", "tests/test_more.py::SplitAtTests::test_maxsplit", "tests/test_more.py::SplitBeforeTest::test_ends_with_sep", "tests/test_more.py::SplitBeforeTest::test_max_split", "tests/test_more.py::SplitBeforeTest::test_no_sep", "tests/test_more.py::SplitBeforeTest::test_starts_with_sep", "tests/test_more.py::SplitAfterTest::test_ends_with_sep", "tests/test_more.py::SplitAfterTest::test_max_split", "tests/test_more.py::SplitAfterTest::test_no_sep", "tests/test_more.py::SplitAfterTest::test_starts_with_sep", "tests/test_more.py::SplitWhenTests::test_after_emulation_ends_with_sep", "tests/test_more.py::SplitWhenTests::test_after_emulation_no_sep", "tests/test_more.py::SplitWhenTests::test_after_emulation_starts_with_sep", "tests/test_more.py::SplitWhenTests::test_before_emulation_ends_with_sep", "tests/test_more.py::SplitWhenTests::test_before_emulation_no_sep", "tests/test_more.py::SplitWhenTests::test_before_emulation_starts_with_sep", "tests/test_more.py::SplitWhenTests::test_empty_iterable", "tests/test_more.py::SplitWhenTests::test_max_split", "tests/test_more.py::SplitWhenTests::test_one_element", "tests/test_more.py::SplitWhenTests::test_one_element_is_first_item", "tests/test_more.py::SplitWhenTests::test_one_element_is_second_item", "tests/test_more.py::SplitIntoTests::test_bool_in_sizes", "tests/test_more.py::SplitIntoTests::test_both_empty", "tests/test_more.py::SplitIntoTests::test_generator_iterable_integrity", "tests/test_more.py::SplitIntoTests::test_generator_sizes_integrity", "tests/test_more.py::SplitIntoTests::test_invalid_in_sizes", "tests/test_more.py::SplitIntoTests::test_invalid_in_sizes_after_none", "tests/test_more.py::SplitIntoTests::test_iterable_empty", "tests/test_more.py::SplitIntoTests::test_iterable_empty_using_none", "tests/test_more.py::SplitIntoTests::test_iterable_just_right", "tests/test_more.py::SplitIntoTests::test_iterable_too_large", "tests/test_more.py::SplitIntoTests::test_iterable_too_small", "tests/test_more.py::SplitIntoTests::test_iterable_too_small_extra", "tests/test_more.py::SplitIntoTests::test_sizes_empty", "tests/test_more.py::SplitIntoTests::test_using_none_mid_sizes", "tests/test_more.py::SplitIntoTests::test_using_none_with_leftover", "tests/test_more.py::SplitIntoTests::test_using_none_without_leftover", "tests/test_more.py::PaddedTest::test_invalid_n", "tests/test_more.py::PaddedTest::test_next_multiple", "tests/test_more.py::PaddedTest::test_no_n", "tests/test_more.py::PaddedTest::test_valid_n", "tests/test_more.py::RepeatLastTests::test_basic", "tests/test_more.py::RepeatLastTests::test_default_value", "tests/test_more.py::RepeatLastTests::test_empty_iterable", "tests/test_more.py::DistributeTest::test_basic", "tests/test_more.py::DistributeTest::test_invalid_n", "tests/test_more.py::DistributeTest::test_large_n", "tests/test_more.py::StaggerTest::test_default", "tests/test_more.py::StaggerTest::test_longest", "tests/test_more.py::StaggerTest::test_offsets", "tests/test_more.py::ZipEqualTest::test_equal", "tests/test_more.py::ZipEqualTest::test_unequal_lists", "tests/test_more.py::ZipOffsetTest::test_longest", "tests/test_more.py::ZipOffsetTest::test_mismatch", "tests/test_more.py::ZipOffsetTest::test_shortest", "tests/test_more.py::UnzipTests::test_empty_iterable", "tests/test_more.py::UnzipTests::test_improperly_zipped", "tests/test_more.py::UnzipTests::test_increasingly_zipped", "tests/test_more.py::UnzipTests::test_length_one_iterable", "tests/test_more.py::UnzipTests::test_normal_case", "tests/test_more.py::SortTogetherTest::test_invalid_key_list", "tests/test_more.py::SortTogetherTest::test_key_list", "tests/test_more.py::SortTogetherTest::test_reverse", "tests/test_more.py::SortTogetherTest::test_uneven_iterables", "tests/test_more.py::DivideTest::test_basic", "tests/test_more.py::DivideTest::test_invalid_n", "tests/test_more.py::DivideTest::test_large_n", "tests/test_more.py::TestAlwaysIterable::test_base_type", "tests/test_more.py::TestAlwaysIterable::test_generator", "tests/test_more.py::TestAlwaysIterable::test_iterables", "tests/test_more.py::TestAlwaysIterable::test_none", "tests/test_more.py::TestAlwaysIterable::test_single", "tests/test_more.py::TestAlwaysIterable::test_strings", "tests/test_more.py::AdjacentTests::test_call_once", "tests/test_more.py::AdjacentTests::test_consecutive_true", "tests/test_more.py::AdjacentTests::test_distance", "tests/test_more.py::AdjacentTests::test_empty_iterable", "tests/test_more.py::AdjacentTests::test_grouping", "tests/test_more.py::AdjacentTests::test_large_distance", "tests/test_more.py::AdjacentTests::test_length_one", "tests/test_more.py::AdjacentTests::test_negative_distance", "tests/test_more.py::AdjacentTests::test_typical", "tests/test_more.py::AdjacentTests::test_zero_distance", "tests/test_more.py::GroupByTransformTests::test_default_funcs", "tests/test_more.py::GroupByTransformTests::test_no_valuefunc", "tests/test_more.py::GroupByTransformTests::test_reducefunc", "tests/test_more.py::GroupByTransformTests::test_valuefunc", "tests/test_more.py::NumericRangeTests::test_arg_count", "tests/test_more.py::NumericRangeTests::test_bad_key", "tests/test_more.py::NumericRangeTests::test_basic", "tests/test_more.py::NumericRangeTests::test_bool", "tests/test_more.py::NumericRangeTests::test_contains", "tests/test_more.py::NumericRangeTests::test_count", "tests/test_more.py::NumericRangeTests::test_eq", "tests/test_more.py::NumericRangeTests::test_get_item_by_index", "tests/test_more.py::NumericRangeTests::test_get_item_by_slice", "tests/test_more.py::NumericRangeTests::test_hash", "tests/test_more.py::NumericRangeTests::test_index", "tests/test_more.py::NumericRangeTests::test_iter_twice", "tests/test_more.py::NumericRangeTests::test_len", "tests/test_more.py::NumericRangeTests::test_parent_classes", "tests/test_more.py::NumericRangeTests::test_pickle", "tests/test_more.py::NumericRangeTests::test_repr", "tests/test_more.py::NumericRangeTests::test_reversed", "tests/test_more.py::NumericRangeTests::test_zero_step", "tests/test_more.py::CountCycleTests::test_basic", "tests/test_more.py::CountCycleTests::test_empty", "tests/test_more.py::CountCycleTests::test_negative", "tests/test_more.py::MarkEndsTests::test_basic", "tests/test_more.py::LocateTests::test_custom_pred", "tests/test_more.py::LocateTests::test_default_pred", "tests/test_more.py::LocateTests::test_no_matches", "tests/test_more.py::LocateTests::test_window_size", "tests/test_more.py::LocateTests::test_window_size_large", "tests/test_more.py::LocateTests::test_window_size_zero", "tests/test_more.py::StripFunctionTests::test_hashable", "tests/test_more.py::StripFunctionTests::test_math", "tests/test_more.py::StripFunctionTests::test_not_hashable", "tests/test_more.py::IsliceExtendedTests::test_all", "tests/test_more.py::IsliceExtendedTests::test_invalid_slice", "tests/test_more.py::IsliceExtendedTests::test_slicing", "tests/test_more.py::IsliceExtendedTests::test_slicing_extensive", "tests/test_more.py::IsliceExtendedTests::test_zero_step", "tests/test_more.py::ConsecutiveGroupsTest::test_custom_ordering", "tests/test_more.py::ConsecutiveGroupsTest::test_exotic_ordering", "tests/test_more.py::ConsecutiveGroupsTest::test_numbers", "tests/test_more.py::DifferenceTest::test_custom", "tests/test_more.py::DifferenceTest::test_empty", "tests/test_more.py::DifferenceTest::test_initial", "tests/test_more.py::DifferenceTest::test_normal", "tests/test_more.py::DifferenceTest::test_one", "tests/test_more.py::DifferenceTest::test_roundtrip", "tests/test_more.py::SeekableTest::test_elements", "tests/test_more.py::SeekableTest::test_exhaustion_reset", "tests/test_more.py::SeekableTest::test_forward", "tests/test_more.py::SeekableTest::test_maxlen", "tests/test_more.py::SeekableTest::test_maxlen_zero", "tests/test_more.py::SeekableTest::test_partial_reset", "tests/test_more.py::SeekableTest::test_passthrough", "tests/test_more.py::SeekableTest::test_past_end", "tests/test_more.py::SeekableTest::test_peek_default", "tests/test_more.py::SeekableTest::test_simple_peeking", "tests/test_more.py::SeekableTest::test_truthiness", "tests/test_more.py::SequenceViewTests::test_abc_methods", "tests/test_more.py::SequenceViewTests::test_indexing", "tests/test_more.py::SequenceViewTests::test_init", "tests/test_more.py::SequenceViewTests::test_slicing", "tests/test_more.py::SequenceViewTests::test_update", "tests/test_more.py::RunLengthTest::test_decode", "tests/test_more.py::RunLengthTest::test_encode", "tests/test_more.py::ExactlyNTests::test_empty", "tests/test_more.py::ExactlyNTests::test_false", "tests/test_more.py::ExactlyNTests::test_true", "tests/test_more.py::AlwaysReversibleTests::test_nonseq_reversed", "tests/test_more.py::AlwaysReversibleTests::test_regular_reversed", "tests/test_more.py::CircularShiftsTests::test_duplicates", "tests/test_more.py::CircularShiftsTests::test_empty", "tests/test_more.py::CircularShiftsTests::test_simple_circular_shifts", "tests/test_more.py::MakeDecoratorTests::test_basic", "tests/test_more.py::MakeDecoratorTests::test_result_index", "tests/test_more.py::MakeDecoratorTests::test_wrap_class", "tests/test_more.py::MapReduceTests::test_default", "tests/test_more.py::MapReduceTests::test_reducefunc", "tests/test_more.py::MapReduceTests::test_ret", "tests/test_more.py::MapReduceTests::test_valuefunc", "tests/test_more.py::RlocateTests::test_custom_pred", "tests/test_more.py::RlocateTests::test_default_pred", "tests/test_more.py::RlocateTests::test_efficient_reversal", "tests/test_more.py::RlocateTests::test_no_matches", "tests/test_more.py::RlocateTests::test_window_size", "tests/test_more.py::RlocateTests::test_window_size_large", "tests/test_more.py::RlocateTests::test_window_size_zero", "tests/test_more.py::ReplaceTests::test_basic", "tests/test_more.py::ReplaceTests::test_count", "tests/test_more.py::ReplaceTests::test_iterable_substitutes", "tests/test_more.py::ReplaceTests::test_window_size", "tests/test_more.py::ReplaceTests::test_window_size_count", "tests/test_more.py::ReplaceTests::test_window_size_end", "tests/test_more.py::ReplaceTests::test_window_size_large", "tests/test_more.py::ReplaceTests::test_window_size_zero", "tests/test_more.py::PartitionsTest::test_duplicates", "tests/test_more.py::PartitionsTest::test_empty", "tests/test_more.py::PartitionsTest::test_order", "tests/test_more.py::PartitionsTest::test_types", "tests/test_more.py::SetPartitionsTests::test_duplicates", "tests/test_more.py::SetPartitionsTests::test_each_correct", "tests/test_more.py::SetPartitionsTests::test_found_all", "tests/test_more.py::SetPartitionsTests::test_no_group", "tests/test_more.py::SetPartitionsTests::test_repeated", "tests/test_more.py::SetPartitionsTests::test_stirling_numbers", "tests/test_more.py::SetPartitionsTests::test_to_many_groups", "tests/test_more.py::TimeLimitedTests::test_invalid_limit", "tests/test_more.py::OnlyTests::test_custom_exception", "tests/test_more.py::OnlyTests::test_custom_value", "tests/test_more.py::OnlyTests::test_default_exception_message", "tests/test_more.py::OnlyTests::test_defaults", "tests/test_more.py::IchunkedTests::test_even", "tests/test_more.py::IchunkedTests::test_laziness", "tests/test_more.py::IchunkedTests::test_negative", "tests/test_more.py::IchunkedTests::test_odd", "tests/test_more.py::IchunkedTests::test_out_of_order", "tests/test_more.py::IchunkedTests::test_zero", "tests/test_more.py::DistinctCombinationsTests::test_basic", "tests/test_more.py::DistinctCombinationsTests::test_empty", "tests/test_more.py::DistinctCombinationsTests::test_negative", "tests/test_more.py::FilterExceptTests::test_false", "tests/test_more.py::FilterExceptTests::test_multiple", "tests/test_more.py::FilterExceptTests::test_no_exceptions_pass", "tests/test_more.py::FilterExceptTests::test_no_exceptions_raise", "tests/test_more.py::FilterExceptTests::test_raise", "tests/test_more.py::MapExceptTests::test_multiple", "tests/test_more.py::MapExceptTests::test_no_exceptions_pass", "tests/test_more.py::MapExceptTests::test_no_exceptions_raise", "tests/test_more.py::MapExceptTests::test_raise", "tests/test_more.py::SampleTests::test_invariance_under_permutations_unweighted", "tests/test_more.py::SampleTests::test_invariance_under_permutations_weighted", "tests/test_more.py::SampleTests::test_length", "tests/test_more.py::SampleTests::test_samling_entire_iterable", "tests/test_more.py::SampleTests::test_scale_invariance_of_weights", "tests/test_more.py::SampleTests::test_unit_case", "tests/test_more.py::IsSortedTests::test_basic", "tests/test_more.py::CallbackIterTests::test_abort", "tests/test_more.py::CallbackIterTests::test_basic", "tests/test_more.py::CallbackIterTests::test_callback_kwd", "tests/test_more.py::CallbackIterTests::test_exception", "tests/test_more.py::CallbackIterTests::test_no_result", "tests/test_more.py::CallbackIterTests::test_partial_consumption", "tests/test_more.py::WindowedCompleteTests::test_basic", "tests/test_more.py::WindowedCompleteTests::test_every_partition", "tests/test_more.py::WindowedCompleteTests::test_wrong_length", "tests/test_more.py::WindowedCompleteTests::test_zero_length", "tests/test_more.py::AllUniqueTests::test_basic", "tests/test_more.py::AllUniqueTests::test_infinite", "tests/test_more.py::AllUniqueTests::test_key", "tests/test_more.py::AllUniqueTests::test_non_hashable", "tests/test_more.py::AllUniqueTests::test_partially_hashable", "tests/test_more.py::NthProductTests::test_basic", "tests/test_more.py::NthProductTests::test_invalid_index", "tests/test_more.py::NthProductTests::test_long", "tests/test_more.py::NthProductTests::test_negative", "tests/test_more.py::ValueChainTests::test_complex", "tests/test_more.py::ValueChainTests::test_empty", "tests/test_more.py::ValueChainTests::test_empty_lists", "tests/test_more.py::ValueChainTests::test_more", "tests/test_more.py::ValueChainTests::test_simple", "tests/test_recipes.py::TakeTests::test_simple_take", "tests/test_recipes.py::ConsumeTests::test_negative_consume", "tests/test_recipes.py::ConsumeTests::test_total_consume", "tests/test_recipes.py::NthTests::test_default", "tests/test_recipes.py::AllEqualTests::test_false", "tests/test_recipes.py::AllEqualTests::test_tricky", "tests/test_recipes.py::NcyclesTests::test_happy_path", "tests/test_recipes.py::NcyclesTests::test_null_case", "tests/test_recipes.py::RepeatfuncTests::test_added_arguments", "tests/test_recipes.py::RepeatfuncTests::test_finite_repeat", "tests/test_recipes.py::PairwiseTests::test_base_case", "tests/test_recipes.py::PairwiseTests::test_short_case", "tests/test_recipes.py::GrouperTests::test_even", "tests/test_recipes.py::GrouperTests::test_fill_value", "tests/test_recipes.py::UniqueJustseenTests::test_custom_key", "tests/test_recipes.py::UniqueJustseenTests::test_justseen", "tests/test_recipes.py::IterExceptTests::test_first", "tests/test_recipes.py::IterExceptTests::test_uncaught_exception_is_raised", "tests/test_recipes.py::FirstTrueTests::test_nothing_true", "tests/test_recipes.py::FirstTrueTests::test_something_true", "tests/test_recipes.py::RandomProductTests::test_simple_lists", "tests/test_recipes.py::RandomPermutationTests::test_full_permutation", "tests/test_recipes.py::RandomPermutationTests::test_partial_permutation", "tests/test_recipes.py::RandomCombinationTests::test_no_replacement", "tests/test_recipes.py::NthCombinationTests::test_basic", "tests/test_recipes.py::NthPermutationTests::test_long", "tests/test_recipes.py::NthPermutationTests::test_null", "tests/test_recipes.py::PrependTests::test_multiple"], "failure": []}, "tests_observed": 382, "resolved": true}, "test_output": "Previous HEAD position was b1ca8a5 Merge pull request #92 from erikrose/step-windowed\nHEAD is now at ad385b3 refactor: Simplify unique_everseen (#488)\nHEAD is now at ad385b3 refactor: Simplify unique_everseen (#488)\nSwitched to a new branch 'scaleswe'\nChecking patch more_itertools/more.py...\nChecking patch more_itertools/more.pyi...\nChecking patch tests/test_more.py...\nApplied patch more_itertools/more.py cleanly.\nApplied patch more_itertools/more.pyi cleanly.\nApplied patch tests/test_more.py cleanly.\nChecking patch tests/test_more.py...\nerror: while searching for:\n sleep(0.2)\n yield 3\n\n iterable = generator()\n actual = list(mi.time_limited(0.1, iterable))\n expected = [1, 2]\n self.assertEqual(actual, expected)\n\n def test_zero_limit(self):\n iterable = count()\n actual = list(mi.time_limited(0, iterable))\n expected = []\n self.assertEqual(actual, expected)\n\n def test_invalid_limit(self):\n with self.assertRaises(ValueError):\n\nerror: patch failed: tests/test_more.py:3674\nApplying patch tests/test_more.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SCALE_SWE_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0\nrootdir: /workspace/more-itertools\nconfigfile: pyproject.toml\nplugins: timeout-2.4.0\ncollected 435 items\n\ntests/test_more.py ..................................................... [ 12%]\n........................................................................ [ 28%]\n........................................................................ [ 45%]\n........................................................................ [ 61%]\n........................................................................ [ 78%]\n............. [ 81%]\ntests/test_recipes.py .................................................. [ 92%]\n............................... [100%]\n\n=============================== warnings summary ===============================\ntests/test_more.py::CollateTests::test_default\ntests/test_more.py::CollateTests::test_empty\ntests/test_more.py::CollateTests::test_key\ntests/test_more.py::CollateTests::test_one\ntests/test_more.py::CollateTests::test_reverse\n /workspace/more-itertools/more_itertools/more.py:426: DeprecationWarning: collate is no longer part of more_itertools, use heapq.merge\n warnings.warn(\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n=========================== short test summary info ============================\nPASSED tests/test_more.py::CollateTests::test_alias\nPASSED tests/test_more.py::CollateTests::test_default\nPASSED tests/test_more.py::CollateTests::test_empty\nPASSED tests/test_more.py::CollateTests::test_key\nPASSED tests/test_more.py::CollateTests::test_one\nPASSED tests/test_more.py::CollateTests::test_reverse\nPASSED tests/test_more.py::ChunkedTests::test_even\nPASSED tests/test_more.py::ChunkedTests::test_odd\nPASSED tests/test_more.py::ChunkedTests::test_strict_being_true\nPASSED tests/test_more.py::ChunkedTests::test_strict_false\nPASSED tests/test_more.py::FirstTests::test_default\nPASSED tests/test_more.py::FirstTests::test_empty_stop_iteration\nPASSED tests/test_more.py::FirstTests::test_many\nPASSED tests/test_more.py::FirstTests::test_one\nPASSED tests/test_more.py::LastTests::test_basic\nPASSED tests/test_more.py::LastTests::test_default\nPASSED tests/test_more.py::LastTests::test_empty\nPASSED tests/test_more.py::NthOrLastTests::test_basic\nPASSED tests/test_more.py::NthOrLastTests::test_default_value\nPASSED tests/test_more.py::NthOrLastTests::test_empty_iterable_no_default\nPASSED tests/test_more.py::PeekableTests::test_empty\nPASSED tests/test_more.py::PeekableTests::test_indexing\nPASSED tests/test_more.py::PeekableTests::test_multi_prepend\nPASSED tests/test_more.py::PeekableTests::test_multi_prepend_peek\nPASSED tests/test_more.py::PeekableTests::test_passthrough\nPASSED tests/test_more.py::PeekableTests::test_peek_default\nPASSED tests/test_more.py::PeekableTests::test_prepend\nPASSED tests/test_more.py::PeekableTests::test_prepend_after_stop\nPASSED tests/test_more.py::PeekableTests::test_prepend_indexing\nPASSED tests/test_more.py::PeekableTests::test_prepend_iterable\nPASSED tests/test_more.py::PeekableTests::test_prepend_many\nPASSED tests/test_more.py::PeekableTests::test_prepend_reversed\nPASSED tests/test_more.py::PeekableTests::test_prepend_slicing\nPASSED tests/test_more.py::PeekableTests::test_prepend_truthiness\nPASSED tests/test_more.py::PeekableTests::test_simple_peeking\nPASSED tests/test_more.py::PeekableTests::test_slicing\nPASSED tests/test_more.py::PeekableTests::test_slicing_error\nPASSED tests/test_more.py::PeekableTests::test_slicing_reset\nPASSED tests/test_more.py::PeekableTests::test_truthiness\nPASSED tests/test_more.py::ConsumerTests::test_consumer\nPASSED tests/test_more.py::DistinctPermutationsTests::test_distinct_permutations\nPASSED tests/test_more.py::DistinctPermutationsTests::test_other_iterables\nPASSED tests/test_more.py::DistinctPermutationsTests::test_r\nPASSED tests/test_more.py::IlenTests::test_ilen\nPASSED tests/test_more.py::WithIterTests::test_with_iter\nPASSED tests/test_more.py::OneTests::test_basic\nPASSED tests/test_more.py::OneTests::test_too_long\nPASSED tests/test_more.py::OneTests::test_too_long_default_message\nPASSED tests/test_more.py::OneTests::test_too_short\nPASSED tests/test_more.py::IntersperseTest::test_even\nPASSED tests/test_more.py::IntersperseTest::test_n\nPASSED tests/test_more.py::IntersperseTest::test_n_zero\nPASSED tests/test_more.py::IntersperseTest::test_nested\nPASSED tests/test_more.py::IntersperseTest::test_not_iterable\nPASSED tests/test_more.py::IntersperseTest::test_odd\nPASSED tests/test_more.py::UniqueToEachTests::test_all_unique\nPASSED tests/test_more.py::UniqueToEachTests::test_duplicates\nPASSED tests/test_more.py::UniqueToEachTests::test_mixed\nPASSED tests/test_more.py::WindowedTests::test_basic\nPASSED tests/test_more.py::WindowedTests::test_fillvalue\nPASSED tests/test_more.py::WindowedTests::test_large_size\nPASSED tests/test_more.py::WindowedTests::test_negative\nPASSED tests/test_more.py::WindowedTests::test_step\nPASSED tests/test_more.py::WindowedTests::test_zero\nPASSED tests/test_more.py::SubstringsTests::test_basic\nPASSED tests/test_more.py::SubstringsTests::test_empty\nPASSED tests/test_more.py::SubstringsTests::test_order\nPASSED tests/test_more.py::SubstringsTests::test_strings\nPASSED tests/test_more.py::SubstringsIndexesTests::test_basic\nPASSED tests/test_more.py::SubstringsIndexesTests::test_empty\nPASSED tests/test_more.py::SubstringsIndexesTests::test_order\nPASSED tests/test_more.py::SubstringsIndexesTests::test_reverse\nPASSED tests/test_more.py::SubstringsIndexesTests::test_strings\nPASSED tests/test_more.py::BucketTests::test_basic\nPASSED tests/test_more.py::BucketTests::test_in\nPASSED tests/test_more.py::BucketTests::test_list\nPASSED tests/test_more.py::BucketTests::test_list_validator\nPASSED tests/test_more.py::BucketTests::test_validator\nPASSED tests/test_more.py::SpyTests::test_basic\nPASSED tests/test_more.py::SpyTests::test_immutable\nPASSED tests/test_more.py::SpyTests::test_too_many\nPASSED tests/test_more.py::SpyTests::test_unpacking\nPASSED tests/test_more.py::SpyTests::test_zero\nPASSED tests/test_more.py::InterleaveTests::test_even\nPASSED tests/test_more.py::InterleaveTests::test_mixed_types\nPASSED tests/test_more.py::InterleaveTests::test_short\nPASSED tests/test_more.py::InterleaveLongestTests::test_even\nPASSED tests/test_more.py::InterleaveLongestTests::test_mixed_types\nPASSED tests/test_more.py::InterleaveLongestTests::test_short\nPASSED tests/test_more.py::TestCollapse::test_collapse\nPASSED tests/test_more.py::TestCollapse::test_collapse_flatten\nPASSED tests/test_more.py::TestCollapse::test_collapse_to_bytes\nPASSED tests/test_more.py::TestCollapse::test_collapse_to_level\nPASSED tests/test_more.py::TestCollapse::test_collapse_to_list\nPASSED tests/test_more.py::TestCollapse::test_collapse_to_string\nPASSED tests/test_more.py::SideEffectTests::test_before_after\nPASSED tests/test_more.py::SideEffectTests::test_before_fails\nPASSED tests/test_more.py::SideEffectTests::test_chunked\nPASSED tests/test_more.py::SideEffectTests::test_individual\nPASSED tests/test_more.py::SlicedTests::test_even\nPASSED tests/test_more.py::SlicedTests::test_not_sliceable\nPASSED tests/test_more.py::SlicedTests::test_numpy_like_array\nPASSED tests/test_more.py::SlicedTests::test_odd\nPASSED tests/test_more.py::SlicedTests::test_odd_and_strict\nPASSED tests/test_more.py::SplitAtTests::test_basic\nPASSED tests/test_more.py::SplitAtTests::test_combination\nPASSED tests/test_more.py::SplitAtTests::test_keep_separator\nPASSED tests/test_more.py::SplitAtTests::test_maxsplit\nPASSED tests/test_more.py::SplitBeforeTest::test_ends_with_sep\nPASSED tests/test_more.py::SplitBeforeTest::test_max_split\nPASSED tests/test_more.py::SplitBeforeTest::test_no_sep\nPASSED tests/test_more.py::SplitBeforeTest::test_starts_with_sep\nPASSED tests/test_more.py::SplitAfterTest::test_ends_with_sep\nPASSED tests/test_more.py::SplitAfterTest::test_max_split\nPASSED tests/test_more.py::SplitAfterTest::test_no_sep\nPASSED tests/test_more.py::SplitAfterTest::test_starts_with_sep\nPASSED tests/test_more.py::SplitWhenTests::test_after_emulation_ends_with_sep\nPASSED tests/test_more.py::SplitWhenTests::test_after_emulation_no_sep\nPASSED tests/test_more.py::SplitWhenTests::test_after_emulation_starts_with_sep\nPASSED tests/test_more.py::SplitWhenTests::test_before_emulation_ends_with_sep\nPASSED tests/test_more.py::SplitWhenTests::test_before_emulation_no_sep\nPASSED tests/test_more.py::SplitWhenTests::test_before_emulation_starts_with_sep\nPASSED tests/test_more.py::SplitWhenTests::test_empty_iterable\nPASSED tests/test_more.py::SplitWhenTests::test_max_split\nPASSED tests/test_more.py::SplitWhenTests::test_one_element\nPASSED tests/test_more.py::SplitWhenTests::test_one_element_is_first_item\nPASSED tests/test_more.py::SplitWhenTests::test_one_element_is_second_item\nPASSED tests/test_more.py::SplitIntoTests::test_bool_in_sizes\nPASSED tests/test_more.py::SplitIntoTests::test_both_empty\nPASSED tests/test_more.py::SplitIntoTests::test_generator_iterable_integrity\nPASSED tests/test_more.py::SplitIntoTests::test_generator_sizes_integrity\nPASSED tests/test_more.py::SplitIntoTests::test_invalid_in_sizes\nPASSED tests/test_more.py::SplitIntoTests::test_invalid_in_sizes_after_none\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_empty\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_empty_using_none\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_just_right\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_too_large\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_too_small\nPASSED tests/test_more.py::SplitIntoTests::test_iterable_too_small_extra\nPASSED tests/test_more.py::SplitIntoTests::test_sizes_empty\nPASSED tests/test_more.py::SplitIntoTests::test_using_none_mid_sizes\nPASSED tests/test_more.py::SplitIntoTests::test_using_none_with_leftover\nPASSED tests/test_more.py::SplitIntoTests::test_using_none_without_leftover\nPASSED tests/test_more.py::PaddedTest::test_invalid_n\nPASSED tests/test_more.py::PaddedTest::test_next_multiple\nPASSED tests/test_more.py::PaddedTest::test_no_n\nPASSED tests/test_more.py::PaddedTest::test_valid_n\nPASSED tests/test_more.py::RepeatLastTests::test_basic\nPASSED tests/test_more.py::RepeatLastTests::test_default_value\nPASSED tests/test_more.py::RepeatLastTests::test_empty_iterable\nPASSED tests/test_more.py::DistributeTest::test_basic\nPASSED tests/test_more.py::DistributeTest::test_invalid_n\nPASSED tests/test_more.py::DistributeTest::test_large_n\nPASSED tests/test_more.py::StaggerTest::test_default\nPASSED tests/test_more.py::StaggerTest::test_longest\nPASSED tests/test_more.py::StaggerTest::test_offsets\nPASSED tests/test_more.py::ZipEqualTest::test_equal\nPASSED tests/test_more.py::ZipEqualTest::test_unequal_lists\nPASSED tests/test_more.py::ZipOffsetTest::test_longest\nPASSED tests/test_more.py::ZipOffsetTest::test_mismatch\nPASSED tests/test_more.py::ZipOffsetTest::test_shortest\nPASSED tests/test_more.py::UnzipTests::test_empty_iterable\nPASSED tests/test_more.py::UnzipTests::test_improperly_zipped\nPASSED tests/test_more.py::UnzipTests::test_increasingly_zipped\nPASSED tests/test_more.py::UnzipTests::test_length_one_iterable\nPASSED tests/test_more.py::UnzipTests::test_normal_case\nPASSED tests/test_more.py::SortTogetherTest::test_invalid_key_list\nPASSED tests/test_more.py::SortTogetherTest::test_key_list\nPASSED tests/test_more.py::SortTogetherTest::test_reverse\nPASSED tests/test_more.py::SortTogetherTest::test_uneven_iterables\nPASSED tests/test_more.py::DivideTest::test_basic\nPASSED tests/test_more.py::DivideTest::test_invalid_n\nPASSED tests/test_more.py::DivideTest::test_large_n\nPASSED tests/test_more.py::TestAlwaysIterable::test_base_type\nPASSED tests/test_more.py::TestAlwaysIterable::test_generator\nPASSED tests/test_more.py::TestAlwaysIterable::test_iterables\nPASSED tests/test_more.py::TestAlwaysIterable::test_none\nPASSED tests/test_more.py::TestAlwaysIterable::test_single\nPASSED tests/test_more.py::TestAlwaysIterable::test_strings\nPASSED tests/test_more.py::AdjacentTests::test_call_once\nPASSED tests/test_more.py::AdjacentTests::test_consecutive_true\nPASSED tests/test_more.py::AdjacentTests::test_distance\nPASSED tests/test_more.py::AdjacentTests::test_empty_iterable\nPASSED tests/test_more.py::AdjacentTests::test_grouping\nPASSED tests/test_more.py::AdjacentTests::test_large_distance\nPASSED tests/test_more.py::AdjacentTests::test_length_one\nPASSED tests/test_more.py::AdjacentTests::test_negative_distance\nPASSED tests/test_more.py::AdjacentTests::test_typical\nPASSED tests/test_more.py::AdjacentTests::test_zero_distance\nPASSED tests/test_more.py::GroupByTransformTests::test_default_funcs\nPASSED tests/test_more.py::GroupByTransformTests::test_no_valuefunc\nPASSED tests/test_more.py::GroupByTransformTests::test_reducefunc\nPASSED tests/test_more.py::GroupByTransformTests::test_valuefunc\nPASSED tests/test_more.py::NumericRangeTests::test_arg_count\nPASSED tests/test_more.py::NumericRangeTests::test_bad_key\nPASSED tests/test_more.py::NumericRangeTests::test_basic\nPASSED tests/test_more.py::NumericRangeTests::test_bool\nPASSED tests/test_more.py::NumericRangeTests::test_contains\nPASSED tests/test_more.py::NumericRangeTests::test_count\nPASSED tests/test_more.py::NumericRangeTests::test_eq\nPASSED tests/test_more.py::NumericRangeTests::test_get_item_by_index\nPASSED tests/test_more.py::NumericRangeTests::test_get_item_by_slice\nPASSED tests/test_more.py::NumericRangeTests::test_hash\nPASSED tests/test_more.py::NumericRangeTests::test_index\nPASSED tests/test_more.py::NumericRangeTests::test_iter_twice\nPASSED tests/test_more.py::NumericRangeTests::test_len\nPASSED tests/test_more.py::NumericRangeTests::test_parent_classes\nPASSED tests/test_more.py::NumericRangeTests::test_pickle\nPASSED tests/test_more.py::NumericRangeTests::test_repr\nPASSED tests/test_more.py::NumericRangeTests::test_reversed\nPASSED tests/test_more.py::NumericRangeTests::test_zero_step\nPASSED tests/test_more.py::CountCycleTests::test_basic\nPASSED tests/test_more.py::CountCycleTests::test_empty\nPASSED tests/test_more.py::CountCycleTests::test_negative\nPASSED tests/test_more.py::MarkEndsTests::test_basic\nPASSED tests/test_more.py::LocateTests::test_custom_pred\nPASSED tests/test_more.py::LocateTests::test_default_pred\nPASSED tests/test_more.py::LocateTests::test_no_matches\nPASSED tests/test_more.py::LocateTests::test_window_size\nPASSED tests/test_more.py::LocateTests::test_window_size_large\nPASSED tests/test_more.py::LocateTests::test_window_size_zero\nPASSED tests/test_more.py::StripFunctionTests::test_hashable\nPASSED tests/test_more.py::StripFunctionTests::test_math\nPASSED tests/test_more.py::StripFunctionTests::test_not_hashable\nPASSED tests/test_more.py::IsliceExtendedTests::test_all\nPASSED tests/test_more.py::IsliceExtendedTests::test_invalid_slice\nPASSED tests/test_more.py::IsliceExtendedTests::test_slicing\nPASSED tests/test_more.py::IsliceExtendedTests::test_slicing_extensive\nPASSED tests/test_more.py::IsliceExtendedTests::test_zero_step\nPASSED tests/test_more.py::ConsecutiveGroupsTest::test_custom_ordering\nPASSED tests/test_more.py::ConsecutiveGroupsTest::test_exotic_ordering\nPASSED tests/test_more.py::ConsecutiveGroupsTest::test_numbers\nPASSED tests/test_more.py::DifferenceTest::test_custom\nPASSED tests/test_more.py::DifferenceTest::test_empty\nPASSED tests/test_more.py::DifferenceTest::test_initial\nPASSED tests/test_more.py::DifferenceTest::test_normal\nPASSED tests/test_more.py::DifferenceTest::test_one\nPASSED tests/test_more.py::DifferenceTest::test_roundtrip\nPASSED tests/test_more.py::SeekableTest::test_elements\nPASSED tests/test_more.py::SeekableTest::test_exhaustion_reset\nPASSED tests/test_more.py::SeekableTest::test_forward\nPASSED tests/test_more.py::SeekableTest::test_maxlen\nPASSED tests/test_more.py::SeekableTest::test_maxlen_zero\nPASSED tests/test_more.py::SeekableTest::test_partial_reset\nPASSED tests/test_more.py::SeekableTest::test_passthrough\nPASSED tests/test_more.py::SeekableTest::test_past_end\nPASSED tests/test_more.py::SeekableTest::test_peek_default\nPASSED tests/test_more.py::SeekableTest::test_simple_peeking\nPASSED tests/test_more.py::SeekableTest::test_truthiness\nPASSED tests/test_more.py::SequenceViewTests::test_abc_methods\nPASSED tests/test_more.py::SequenceViewTests::test_indexing\nPASSED tests/test_more.py::SequenceViewTests::test_init\nPASSED tests/test_more.py::SequenceViewTests::test_slicing\nPASSED tests/test_more.py::SequenceViewTests::test_update\nPASSED tests/test_more.py::RunLengthTest::test_decode\nPASSED tests/test_more.py::RunLengthTest::test_encode\nPASSED tests/test_more.py::ExactlyNTests::test_empty\nPASSED tests/test_more.py::ExactlyNTests::test_false\nPASSED tests/test_more.py::ExactlyNTests::test_true\nPASSED tests/test_more.py::AlwaysReversibleTests::test_nonseq_reversed\nPASSED tests/test_more.py::AlwaysReversibleTests::test_regular_reversed\nPASSED tests/test_more.py::CircularShiftsTests::test_duplicates\nPASSED tests/test_more.py::CircularShiftsTests::test_empty\nPASSED tests/test_more.py::CircularShiftsTests::test_simple_circular_shifts\nPASSED tests/test_more.py::MakeDecoratorTests::test_basic\nPASSED tests/test_more.py::MakeDecoratorTests::test_result_index\nPASSED tests/test_more.py::MakeDecoratorTests::test_wrap_class\nPASSED tests/test_more.py::MapReduceTests::test_default\nPASSED tests/test_more.py::MapReduceTests::test_reducefunc\nPASSED tests/test_more.py::MapReduceTests::test_ret\nPASSED tests/test_more.py::MapReduceTests::test_valuefunc\nPASSED tests/test_more.py::RlocateTests::test_custom_pred\nPASSED tests/test_more.py::RlocateTests::test_default_pred\nPASSED tests/test_more.py::RlocateTests::test_efficient_reversal\nPASSED tests/test_more.py::RlocateTests::test_no_matches\nPASSED tests/test_more.py::RlocateTests::test_window_size\nPASSED tests/test_more.py::RlocateTests::test_window_size_large\nPASSED tests/test_more.py::RlocateTests::test_window_size_zero\nPASSED tests/test_more.py::ReplaceTests::test_basic\nPASSED tests/test_more.py::ReplaceTests::test_count\nPASSED tests/test_more.py::ReplaceTests::test_iterable_substitutes\nPASSED tests/test_more.py::ReplaceTests::test_window_size\nPASSED tests/test_more.py::ReplaceTests::test_window_size_count\nPASSED tests/test_more.py::ReplaceTests::test_window_size_end\nPASSED tests/test_more.py::ReplaceTests::test_window_size_large\nPASSED tests/test_more.py::ReplaceTests::test_window_size_zero\nPASSED tests/test_more.py::PartitionsTest::test_duplicates\nPASSED tests/test_more.py::PartitionsTest::test_empty\nPASSED tests/test_more.py::PartitionsTest::test_order\nPASSED tests/test_more.py::PartitionsTest::test_types\nPASSED tests/test_more.py::SetPartitionsTests::test_duplicates\nPASSED tests/test_more.py::SetPartitionsTests::test_each_correct\nPASSED tests/test_more.py::SetPartitionsTests::test_found_all\nPASSED tests/test_more.py::SetPartitionsTests::test_no_group\nPASSED tests/test_more.py::SetPartitionsTests::test_repeated\nPASSED tests/test_more.py::SetPartitionsTests::test_stirling_numbers\nPASSED tests/test_more.py::SetPartitionsTests::test_to_many_groups\nPASSED tests/test_more.py::TimeLimitedTests::test_basic\nPASSED tests/test_more.py::TimeLimitedTests::test_complete\nPASSED tests/test_more.py::TimeLimitedTests::test_invalid_limit\nPASSED tests/test_more.py::TimeLimitedTests::test_zero_limit\nPASSED tests/test_more.py::OnlyTests::test_custom_exception\nPASSED tests/test_more.py::OnlyTests::test_custom_value\nPASSED tests/test_more.py::OnlyTests::test_default_exception_message\nPASSED tests/test_more.py::OnlyTests::test_defaults\nPASSED tests/test_more.py::IchunkedTests::test_even\nPASSED tests/test_more.py::IchunkedTests::test_laziness\nPASSED tests/test_more.py::IchunkedTests::test_negative\nPASSED tests/test_more.py::IchunkedTests::test_odd\nPASSED tests/test_more.py::IchunkedTests::test_out_of_order\nPASSED tests/test_more.py::IchunkedTests::test_zero\nPASSED tests/test_more.py::DistinctCombinationsTests::test_basic\nPASSED tests/test_more.py::DistinctCombinationsTests::test_empty\nPASSED tests/test_more.py::DistinctCombinationsTests::test_negative\nPASSED tests/test_more.py::FilterExceptTests::test_false\nPASSED tests/test_more.py::FilterExceptTests::test_multiple\nPASSED tests/test_more.py::FilterExceptTests::test_no_exceptions_pass\nPASSED tests/test_more.py::FilterExceptTests::test_no_exceptions_raise\nPASSED tests/test_more.py::FilterExceptTests::test_raise\nPASSED tests/test_more.py::MapExceptTests::test_multiple\nPASSED tests/test_more.py::MapExceptTests::test_no_exceptions_pass\nPASSED tests/test_more.py::MapExceptTests::test_no_exceptions_raise\nPASSED tests/test_more.py::MapExceptTests::test_raise\nPASSED tests/test_more.py::SampleTests::test_invariance_under_permutations_unweighted\nPASSED tests/test_more.py::SampleTests::test_invariance_under_permutations_weighted\nPASSED tests/test_more.py::SampleTests::test_length\nPASSED tests/test_more.py::SampleTests::test_samling_entire_iterable\nPASSED tests/test_more.py::SampleTests::test_scale_invariance_of_weights\nPASSED tests/test_more.py::SampleTests::test_unit_case\nPASSED tests/test_more.py::IsSortedTests::test_basic\nPASSED tests/test_more.py::CallbackIterTests::test_abort\nPASSED tests/test_more.py::CallbackIterTests::test_basic\nPASSED tests/test_more.py::CallbackIterTests::test_callback_kwd\nPASSED tests/test_more.py::CallbackIterTests::test_exception\nPASSED tests/test_more.py::CallbackIterTests::test_no_result\nPASSED tests/test_more.py::CallbackIterTests::test_partial_consumption\nPASSED tests/test_more.py::WindowedCompleteTests::test_basic\nPASSED tests/test_more.py::WindowedCompleteTests::test_every_partition\nPASSED tests/test_more.py::WindowedCompleteTests::test_wrong_length\nPASSED tests/test_more.py::WindowedCompleteTests::test_zero_length\nPASSED tests/test_more.py::AllUniqueTests::test_basic\nPASSED tests/test_more.py::AllUniqueTests::test_infinite\nPASSED tests/test_more.py::AllUniqueTests::test_key\nPASSED tests/test_more.py::AllUniqueTests::test_non_hashable\nPASSED tests/test_more.py::AllUniqueTests::test_partially_hashable\nPASSED tests/test_more.py::NthProductTests::test_basic\nPASSED tests/test_more.py::NthProductTests::test_invalid_index\nPASSED tests/test_more.py::NthProductTests::test_long\nPASSED tests/test_more.py::NthProductTests::test_negative\nPASSED tests/test_more.py::ValueChainTests::test_complex\nPASSED tests/test_more.py::ValueChainTests::test_empty\nPASSED tests/test_more.py::ValueChainTests::test_empty_lists\nPASSED tests/test_more.py::ValueChainTests::test_more\nPASSED tests/test_more.py::ValueChainTests::test_simple\nPASSED tests/test_recipes.py::TakeTests::test_negative_take\nPASSED tests/test_recipes.py::TakeTests::test_null_take\nPASSED tests/test_recipes.py::TakeTests::test_simple_take\nPASSED tests/test_recipes.py::TakeTests::test_take_too_much\nPASSED tests/test_recipes.py::TabulateTests::test_count\nPASSED tests/test_recipes.py::TabulateTests::test_simple_tabulate\nPASSED tests/test_recipes.py::TailTests::test_equal\nPASSED tests/test_recipes.py::TailTests::test_greater\nPASSED tests/test_recipes.py::TailTests::test_less\nPASSED tests/test_recipes.py::ConsumeTests::test_negative_consume\nPASSED tests/test_recipes.py::ConsumeTests::test_null_consume\nPASSED tests/test_recipes.py::ConsumeTests::test_sanity\nPASSED tests/test_recipes.py::ConsumeTests::test_total_consume\nPASSED tests/test_recipes.py::NthTests::test_basic\nPASSED tests/test_recipes.py::NthTests::test_default\nPASSED tests/test_recipes.py::NthTests::test_negative_item_raises\nPASSED tests/test_recipes.py::AllEqualTests::test_empty\nPASSED tests/test_recipes.py::AllEqualTests::test_false\nPASSED tests/test_recipes.py::AllEqualTests::test_one\nPASSED tests/test_recipes.py::AllEqualTests::test_tricky\nPASSED tests/test_recipes.py::AllEqualTests::test_true\nPASSED tests/test_recipes.py::QuantifyTests::test_custom_predicate\nPASSED tests/test_recipes.py::QuantifyTests::test_happy_path\nPASSED tests/test_recipes.py::PadnoneTests::test_basic\nPASSED tests/test_recipes.py::NcyclesTests::test_happy_path\nPASSED tests/test_recipes.py::NcyclesTests::test_null_case\nPASSED tests/test_recipes.py::NcyclesTests::test_pathalogical_case\nPASSED tests/test_recipes.py::DotproductTests::test_happy_path\nPASSED tests/test_recipes.py::FlattenTests::test_basic_usage\nPASSED tests/test_recipes.py::FlattenTests::test_single_level\nPASSED tests/test_recipes.py::RepeatfuncTests::test_added_arguments\nPASSED tests/test_recipes.py::RepeatfuncTests::test_finite_repeat\nPASSED tests/test_recipes.py::RepeatfuncTests::test_null_times\nPASSED tests/test_recipes.py::RepeatfuncTests::test_simple_repeat\nPASSED tests/test_recipes.py::PairwiseTests::test_base_case\nPASSED tests/test_recipes.py::PairwiseTests::test_short_case\nPASSED tests/test_recipes.py::GrouperTests::test_even\nPASSED tests/test_recipes.py::GrouperTests::test_fill_value\nPASSED tests/test_recipes.py::GrouperTests::test_legacy_order\nPASSED tests/test_recipes.py::GrouperTests::test_odd\nPASSED tests/test_recipes.py::RoundrobinTests::test_even_groups\nPASSED tests/test_recipes.py::RoundrobinTests::test_uneven_groups\nPASSED tests/test_recipes.py::PartitionTests::test_arbitrary\nPASSED tests/test_recipes.py::PartitionTests::test_bool\nPASSED tests/test_recipes.py::PartitionTests::test_pred_is_none\nPASSED tests/test_recipes.py::PowersetTests::test_combinatorics\nPASSED tests/test_recipes.py::UniqueEverseenTests::test_custom_key\nPASSED tests/test_recipes.py::UniqueEverseenTests::test_everseen\nPASSED tests/test_recipes.py::UniqueEverseenTests::test_unhashable\nPASSED tests/test_recipes.py::UniqueEverseenTests::test_unhashable_key\nPASSED tests/test_recipes.py::UniqueJustseenTests::test_custom_key\nPASSED tests/test_recipes.py::UniqueJustseenTests::test_justseen\nPASSED tests/test_recipes.py::IterExceptTests::test_exact_exception\nPASSED tests/test_recipes.py::IterExceptTests::test_first\nPASSED tests/test_recipes.py::IterExceptTests::test_generic_exception\nPASSED tests/test_recipes.py::IterExceptTests::test_uncaught_exception_is_raised\nPASSED tests/test_recipes.py::FirstTrueTests::test_default\nPASSED tests/test_recipes.py::FirstTrueTests::test_nothing_true\nPASSED tests/test_recipes.py::FirstTrueTests::test_pred\nPASSED tests/test_recipes.py::FirstTrueTests::test_something_true\nPASSED tests/test_recipes.py::RandomProductTests::test_list_with_repeat\nPASSED tests/test_recipes.py::RandomProductTests::test_simple_lists\nPASSED tests/test_recipes.py::RandomPermutationTests::test_full_permutation\nPASSED tests/test_recipes.py::RandomPermutationTests::test_partial_permutation\nPASSED tests/test_recipes.py::RandomCombinationTests::test_no_replacement\nPASSED tests/test_recipes.py::RandomCombinationTests::test_pseudorandomness\nPASSED tests/test_recipes.py::RandomCombinationWithReplacementTests::test_pseudorandomness\nPASSED tests/test_recipes.py::RandomCombinationWithReplacementTests::test_replacement\nPASSED tests/test_recipes.py::NthCombinationTests::test_basic\nPASSED tests/test_recipes.py::NthCombinationTests::test_invalid_index\nPASSED tests/test_recipes.py::NthCombinationTests::test_invalid_r\nPASSED tests/test_recipes.py::NthCombinationTests::test_long\nPASSED tests/test_recipes.py::NthPermutationTests::test_invalid_index\nPASSED tests/test_recipes.py::NthPermutationTests::test_invalid_r\nPASSED tests/test_recipes.py::NthPermutationTests::test_long\nPASSED tests/test_recipes.py::NthPermutationTests::test_negative_index\nPASSED tests/test_recipes.py::NthPermutationTests::test_null\nPASSED tests/test_recipes.py::NthPermutationTests::test_r_equal_to_n\nPASSED tests/test_recipes.py::NthPermutationTests::test_r_less_than_n\nPASSED tests/test_recipes.py::PrependTests::test_basic\nPASSED tests/test_recipes.py::PrependTests::test_multiple\n======================= 435 passed, 5 warnings in 1.08s ========================\n___NEMO_GYM_SCALE_SWE_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 39.22309327125549, "patch_verification_time_taken": 20.033316373825073, "_ng_task_index": 4, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}}
diff --git a/resources_servers/scale_swe/data/supported_instance_ids.txt b/resources_servers/scale_swe/data/supported_instance_ids.txt
new file mode 100644
index 00000000000..11de7ee3f34
--- /dev/null
+++ b/resources_servers/scale_swe/data/supported_instance_ids.txt
@@ -0,0 +1,17696 @@
+adamchainz_apig-wsgi_pr46
+adamchainz_apig-wsgi_pr80
+adamchainz_apig-wsgi_pr93
+adamchainz_django-cors-headers_pr380
+adamchainz_django-cors-headers_pr388
+adamchainz_django-cors-headers_pr396
+adamchainz_django-cors-headers_pr397
+adamchainz_django-cors-headers_pr405
+adamchainz_django-cors-headers_pr418
+adamchainz_django-cors-headers_pr451
+adamchainz_ec2-metadata_pr339
+adamchainz_ec2-metadata_pr40
+adamchainz_flake8-comprehensions_pr202
+adamchainz_flake8-comprehensions_pr205
+adamchainz_flake8-comprehensions_pr491
+adamchainz_flake8-logging_pr4
+adamchainz_flake8-no-pep420_pr103
+adamchainz_pytest-reverse_pr10
+adamchainz_treepoem_pr437
+adamchainz_treepoem_pr499
+adamchainz_treepoem_pr500
+adamchainz_treepoem_pr587
+adamjstewart_fiscalyear_pr24
+adamtheturtle_doccmd_pr158
+adamtheturtle_doccmd_pr168
+adamtheturtle_doccmd_pr192
+adamtheturtle_doccmd_pr193
+adamtheturtle_doccmd_pr195
+adamtheturtle_doccmd_pr201
+adamtheturtle_doccmd_pr208
+adamtheturtle_doccmd_pr209
+adamtheturtle_doccmd_pr211
+adamtheturtle_doccmd_pr282
+adamtheturtle_doccmd_pr286
+adamtheturtle_doccmd_pr316
+adamtheturtle_doccmd_pr317
+adamtheturtle_doccmd_pr330
+adamtheturtle_doccmd_pr345
+adamtheturtle_doccmd_pr361
+adamtheturtle_doccmd_pr363
+adamtheturtle_doccmd_pr383
+adamtheturtle_doccmd_pr408
+adamtheturtle_doccmd_pr42
+adamtheturtle_doccmd_pr420
+adamtheturtle_doccmd_pr426
+adamtheturtle_doccmd_pr44
+adamtheturtle_doccmd_pr45
+adamtheturtle_doccmd_pr50
+adamtheturtle_pip-check-reqs_pr38
+adamtheturtle_pip-check-reqs_pr84
+adamtheturtle_sybil-extras_pr12
+adamtheturtle_sybil-extras_pr150
+adamtheturtle_sybil-extras_pr281
+adamtheturtle_sybil-extras_pr296
+adamtheturtle_sybil-extras_pr297
+adamtheturtle_sybil-extras_pr304
+adamtheturtle_sybil-extras_pr342
+adamtheturtle_sybil-extras_pr344
+adamtheturtle_sybil-extras_pr345
+adamtheturtle_sybil-extras_pr346
+adamtheturtle_sybil-extras_pr347
+adamtheturtle_sybil-extras_pr354
+adamtheturtle_sybil-extras_pr355
+adamtheturtle_sybil-extras_pr391
+aio-libs_aiosmtpd_pr143
+aio-libs_aiosmtpd_pr184
+aio-libs_aiosmtpd_pr192
+aio-libs_aiosmtpd_pr228
+aio-libs_aiosmtpd_pr250
+aio-libs_aiosmtpd_pr258
+aio-libs_aiozipkin_pr16
+aio-libs_aiozipkin_pr40
+aio-libs_frozenlist_pr227
+aiokitchen_aiomisc_pr227
+aiven_aiven-client_pr2
+aiven_aiven-client_pr287
+alex_rply_pr101
+andialbrecht_sqlparse_pr317
+andialbrecht_sqlparse_pr330
+andialbrecht_sqlparse_pr357
+andialbrecht_sqlparse_pr398
+andialbrecht_sqlparse_pr553
+andrewgodwin_urlman_pr6
+anntzer_defopt_pr30
+anntzer_defopt_pr38
+anntzer_defopt_pr56
+anntzer_defopt_pr60
+anntzer_defopt_pr64
+anntzer_defopt_pr66
+anntzer_defopt_pr70
+anntzer_defopt_pr76
+ansys_pyedb-core_pr336
+ansys_pyedb-core_pr347
+ansys_pyedb-core_pr349
+ansys_pyfluent_pr139
+ansys_pyfluent_pr175
+ansys_pyfluent_pr217
+ansys_pyfluent_pr241
+ansys_pyfluent_pr286
+ansys_pyfluent_pr296
+ansys_pyfluent_pr311
+ansys_pyfluent_pr319
+ansys_pyfluent_pr321
+ansys_pyfluent_pr332
+ansys_pyfluent_pr336
+ansys_pyfluent_pr354
+ansys_pyfluent_pr355
+ansys_pyfluent_pr359
+ansys_pyfluent_pr378
+ansys_pyfluent_pr413
+ansys_pyfluent_pr46
+app-sre_qontract-reconcile_pr1
+app-sre_qontract-reconcile_pr10
+app-sre_qontract-reconcile_pr1004
+app-sre_qontract-reconcile_pr1006
+app-sre_qontract-reconcile_pr1008
+app-sre_qontract-reconcile_pr1009
+app-sre_qontract-reconcile_pr1010
+app-sre_qontract-reconcile_pr1011
+app-sre_qontract-reconcile_pr1012
+app-sre_qontract-reconcile_pr1013
+app-sre_qontract-reconcile_pr1016
+app-sre_qontract-reconcile_pr1017
+app-sre_qontract-reconcile_pr1020
+app-sre_qontract-reconcile_pr1021
+app-sre_qontract-reconcile_pr1022
+app-sre_qontract-reconcile_pr1024
+app-sre_qontract-reconcile_pr1030
+app-sre_qontract-reconcile_pr1032
+app-sre_qontract-reconcile_pr1034
+app-sre_qontract-reconcile_pr1040
+app-sre_qontract-reconcile_pr1047
+app-sre_qontract-reconcile_pr1049
+app-sre_qontract-reconcile_pr1051
+app-sre_qontract-reconcile_pr1052
+app-sre_qontract-reconcile_pr1053
+app-sre_qontract-reconcile_pr1058
+app-sre_qontract-reconcile_pr1066
+app-sre_qontract-reconcile_pr1069
+app-sre_qontract-reconcile_pr1071
+app-sre_qontract-reconcile_pr1072
+app-sre_qontract-reconcile_pr1076
+app-sre_qontract-reconcile_pr1082
+app-sre_qontract-reconcile_pr1086
+app-sre_qontract-reconcile_pr1097
+app-sre_qontract-reconcile_pr1099
+app-sre_qontract-reconcile_pr1101
+app-sre_qontract-reconcile_pr1103
+app-sre_qontract-reconcile_pr1105
+app-sre_qontract-reconcile_pr1113
+app-sre_qontract-reconcile_pr1117
+app-sre_qontract-reconcile_pr1119
+app-sre_qontract-reconcile_pr1122
+app-sre_qontract-reconcile_pr1125
+app-sre_qontract-reconcile_pr1128
+app-sre_qontract-reconcile_pr1130
+app-sre_qontract-reconcile_pr1132
+app-sre_qontract-reconcile_pr1137
+app-sre_qontract-reconcile_pr1138
+app-sre_qontract-reconcile_pr1143
+app-sre_qontract-reconcile_pr1147
+app-sre_qontract-reconcile_pr1149
+app-sre_qontract-reconcile_pr1151
+app-sre_qontract-reconcile_pr1152
+app-sre_qontract-reconcile_pr1153
+app-sre_qontract-reconcile_pr1154
+app-sre_qontract-reconcile_pr1157
+app-sre_qontract-reconcile_pr1161
+app-sre_qontract-reconcile_pr1170
+app-sre_qontract-reconcile_pr1171
+app-sre_qontract-reconcile_pr1175
+app-sre_qontract-reconcile_pr1177
+app-sre_qontract-reconcile_pr1179
+app-sre_qontract-reconcile_pr1183
+app-sre_qontract-reconcile_pr1186
+app-sre_qontract-reconcile_pr1189
+app-sre_qontract-reconcile_pr1191
+app-sre_qontract-reconcile_pr1195
+app-sre_qontract-reconcile_pr1196
+app-sre_qontract-reconcile_pr1199
+app-sre_qontract-reconcile_pr12
+app-sre_qontract-reconcile_pr1204
+app-sre_qontract-reconcile_pr1210
+app-sre_qontract-reconcile_pr1214
+app-sre_qontract-reconcile_pr1215
+app-sre_qontract-reconcile_pr1219
+app-sre_qontract-reconcile_pr1220
+app-sre_qontract-reconcile_pr1222
+app-sre_qontract-reconcile_pr1228
+app-sre_qontract-reconcile_pr1229
+app-sre_qontract-reconcile_pr1232
+app-sre_qontract-reconcile_pr1238
+app-sre_qontract-reconcile_pr1248
+app-sre_qontract-reconcile_pr1255
+app-sre_qontract-reconcile_pr1259
+app-sre_qontract-reconcile_pr1263
+app-sre_qontract-reconcile_pr1265
+app-sre_qontract-reconcile_pr1267
+app-sre_qontract-reconcile_pr1270
+app-sre_qontract-reconcile_pr1272
+app-sre_qontract-reconcile_pr1273
+app-sre_qontract-reconcile_pr1274
+app-sre_qontract-reconcile_pr1279
+app-sre_qontract-reconcile_pr1281
+app-sre_qontract-reconcile_pr13
+app-sre_qontract-reconcile_pr15
+app-sre_qontract-reconcile_pr16
+app-sre_qontract-reconcile_pr1780
+app-sre_qontract-reconcile_pr1823
+app-sre_qontract-reconcile_pr1827
+app-sre_qontract-reconcile_pr1843
+app-sre_qontract-reconcile_pr1845
+app-sre_qontract-reconcile_pr1848
+app-sre_qontract-reconcile_pr1851
+app-sre_qontract-reconcile_pr1856
+app-sre_qontract-reconcile_pr1858
+app-sre_qontract-reconcile_pr1862
+app-sre_qontract-reconcile_pr1866
+app-sre_qontract-reconcile_pr1867
+app-sre_qontract-reconcile_pr1869
+app-sre_qontract-reconcile_pr187
+app-sre_qontract-reconcile_pr1874
+app-sre_qontract-reconcile_pr1876
+app-sre_qontract-reconcile_pr1878
+app-sre_qontract-reconcile_pr1879
+app-sre_qontract-reconcile_pr188
+app-sre_qontract-reconcile_pr1880
+app-sre_qontract-reconcile_pr1882
+app-sre_qontract-reconcile_pr1887
+app-sre_qontract-reconcile_pr1889
+app-sre_qontract-reconcile_pr1899
+app-sre_qontract-reconcile_pr19
+app-sre_qontract-reconcile_pr1900
+app-sre_qontract-reconcile_pr1901
+app-sre_qontract-reconcile_pr1902
+app-sre_qontract-reconcile_pr1904
+app-sre_qontract-reconcile_pr1906
+app-sre_qontract-reconcile_pr1911
+app-sre_qontract-reconcile_pr1914
+app-sre_qontract-reconcile_pr192
+app-sre_qontract-reconcile_pr1928
+app-sre_qontract-reconcile_pr1932
+app-sre_qontract-reconcile_pr1933
+app-sre_qontract-reconcile_pr1934
+app-sre_qontract-reconcile_pr1937
+app-sre_qontract-reconcile_pr1938
+app-sre_qontract-reconcile_pr1941
+app-sre_qontract-reconcile_pr1943
+app-sre_qontract-reconcile_pr1944
+app-sre_qontract-reconcile_pr1946
+app-sre_qontract-reconcile_pr1951
+app-sre_qontract-reconcile_pr1952
+app-sre_qontract-reconcile_pr1953
+app-sre_qontract-reconcile_pr1957
+app-sre_qontract-reconcile_pr1959
+app-sre_qontract-reconcile_pr1962
+app-sre_qontract-reconcile_pr1967
+app-sre_qontract-reconcile_pr197
+app-sre_qontract-reconcile_pr1972
+app-sre_qontract-reconcile_pr1977
+app-sre_qontract-reconcile_pr1978
+app-sre_qontract-reconcile_pr1981
+app-sre_qontract-reconcile_pr1986
+app-sre_qontract-reconcile_pr199
+app-sre_qontract-reconcile_pr1991
+app-sre_qontract-reconcile_pr1992
+app-sre_qontract-reconcile_pr1993
+app-sre_qontract-reconcile_pr1997
+app-sre_qontract-reconcile_pr1998
+app-sre_qontract-reconcile_pr2
+app-sre_qontract-reconcile_pr20
+app-sre_qontract-reconcile_pr2000
+app-sre_qontract-reconcile_pr2001
+app-sre_qontract-reconcile_pr2002
+app-sre_qontract-reconcile_pr2005
+app-sre_qontract-reconcile_pr2009
+app-sre_qontract-reconcile_pr2013
+app-sre_qontract-reconcile_pr2016
+app-sre_qontract-reconcile_pr2018
+app-sre_qontract-reconcile_pr2021
+app-sre_qontract-reconcile_pr2023
+app-sre_qontract-reconcile_pr2026
+app-sre_qontract-reconcile_pr2030
+app-sre_qontract-reconcile_pr2031
+app-sre_qontract-reconcile_pr2033
+app-sre_qontract-reconcile_pr2035
+app-sre_qontract-reconcile_pr2042
+app-sre_qontract-reconcile_pr2043
+app-sre_qontract-reconcile_pr2044
+app-sre_qontract-reconcile_pr2048
+app-sre_qontract-reconcile_pr205
+app-sre_qontract-reconcile_pr2050
+app-sre_qontract-reconcile_pr2051
+app-sre_qontract-reconcile_pr2054
+app-sre_qontract-reconcile_pr2057
+app-sre_qontract-reconcile_pr2061
+app-sre_qontract-reconcile_pr2062
+app-sre_qontract-reconcile_pr2063
+app-sre_qontract-reconcile_pr2064
+app-sre_qontract-reconcile_pr207
+app-sre_qontract-reconcile_pr2070
+app-sre_qontract-reconcile_pr2078
+app-sre_qontract-reconcile_pr2080
+app-sre_qontract-reconcile_pr2087
+app-sre_qontract-reconcile_pr2088
+app-sre_qontract-reconcile_pr209
+app-sre_qontract-reconcile_pr2090
+app-sre_qontract-reconcile_pr2097
+app-sre_qontract-reconcile_pr2099
+app-sre_qontract-reconcile_pr2100
+app-sre_qontract-reconcile_pr2103
+app-sre_qontract-reconcile_pr2108
+app-sre_qontract-reconcile_pr2109
+app-sre_qontract-reconcile_pr211
+app-sre_qontract-reconcile_pr2110
+app-sre_qontract-reconcile_pr2112
+app-sre_qontract-reconcile_pr2117
+app-sre_qontract-reconcile_pr2125
+app-sre_qontract-reconcile_pr2130
+app-sre_qontract-reconcile_pr2131
+app-sre_qontract-reconcile_pr2132
+app-sre_qontract-reconcile_pr2133
+app-sre_qontract-reconcile_pr2136
+app-sre_qontract-reconcile_pr2137
+app-sre_qontract-reconcile_pr2141
+app-sre_qontract-reconcile_pr2143
+app-sre_qontract-reconcile_pr2147
+app-sre_qontract-reconcile_pr2151
+app-sre_qontract-reconcile_pr2157
+app-sre_qontract-reconcile_pr2159
+app-sre_qontract-reconcile_pr2160
+app-sre_qontract-reconcile_pr2162
+app-sre_qontract-reconcile_pr2163
+app-sre_qontract-reconcile_pr2165
+app-sre_qontract-reconcile_pr2167
+app-sre_qontract-reconcile_pr2168
+app-sre_qontract-reconcile_pr2172
+app-sre_qontract-reconcile_pr2180
+app-sre_qontract-reconcile_pr2184
+app-sre_qontract-reconcile_pr2185
+app-sre_qontract-reconcile_pr2187
+app-sre_qontract-reconcile_pr2188
+app-sre_qontract-reconcile_pr219
+app-sre_qontract-reconcile_pr2191
+app-sre_qontract-reconcile_pr2197
+app-sre_qontract-reconcile_pr2198
+app-sre_qontract-reconcile_pr22
+app-sre_qontract-reconcile_pr2204
+app-sre_qontract-reconcile_pr2208
+app-sre_qontract-reconcile_pr221
+app-sre_qontract-reconcile_pr2216
+app-sre_qontract-reconcile_pr2224
+app-sre_qontract-reconcile_pr2228
+app-sre_qontract-reconcile_pr223
+app-sre_qontract-reconcile_pr2231
+app-sre_qontract-reconcile_pr2232
+app-sre_qontract-reconcile_pr2236
+app-sre_qontract-reconcile_pr2239
+app-sre_qontract-reconcile_pr224
+app-sre_qontract-reconcile_pr2240
+app-sre_qontract-reconcile_pr2241
+app-sre_qontract-reconcile_pr2242
+app-sre_qontract-reconcile_pr2243
+app-sre_qontract-reconcile_pr2244
+app-sre_qontract-reconcile_pr2245
+app-sre_qontract-reconcile_pr2252
+app-sre_qontract-reconcile_pr2253
+app-sre_qontract-reconcile_pr2254
+app-sre_qontract-reconcile_pr2256
+app-sre_qontract-reconcile_pr2257
+app-sre_qontract-reconcile_pr2260
+app-sre_qontract-reconcile_pr2264
+app-sre_qontract-reconcile_pr2265
+app-sre_qontract-reconcile_pr227
+app-sre_qontract-reconcile_pr2273
+app-sre_qontract-reconcile_pr2275
+app-sre_qontract-reconcile_pr229
+app-sre_qontract-reconcile_pr2295
+app-sre_qontract-reconcile_pr230
+app-sre_qontract-reconcile_pr2303
+app-sre_qontract-reconcile_pr234
+app-sre_qontract-reconcile_pr239
+app-sre_qontract-reconcile_pr242
+app-sre_qontract-reconcile_pr243
+app-sre_qontract-reconcile_pr244
+app-sre_qontract-reconcile_pr245
+app-sre_qontract-reconcile_pr247
+app-sre_qontract-reconcile_pr252
+app-sre_qontract-reconcile_pr254
+app-sre_qontract-reconcile_pr255
+app-sre_qontract-reconcile_pr264
+app-sre_qontract-reconcile_pr29
+app-sre_qontract-reconcile_pr291
+app-sre_qontract-reconcile_pr295
+app-sre_qontract-reconcile_pr3
+app-sre_qontract-reconcile_pr30
+app-sre_qontract-reconcile_pr300
+app-sre_qontract-reconcile_pr301
+app-sre_qontract-reconcile_pr302
+app-sre_qontract-reconcile_pr303
+app-sre_qontract-reconcile_pr304
+app-sre_qontract-reconcile_pr305
+app-sre_qontract-reconcile_pr308
+app-sre_qontract-reconcile_pr309
+app-sre_qontract-reconcile_pr31
+app-sre_qontract-reconcile_pr310
+app-sre_qontract-reconcile_pr313
+app-sre_qontract-reconcile_pr315
+app-sre_qontract-reconcile_pr316
+app-sre_qontract-reconcile_pr317
+app-sre_qontract-reconcile_pr318
+app-sre_qontract-reconcile_pr319
+app-sre_qontract-reconcile_pr32
+app-sre_qontract-reconcile_pr322
+app-sre_qontract-reconcile_pr323
+app-sre_qontract-reconcile_pr324
+app-sre_qontract-reconcile_pr327
+app-sre_qontract-reconcile_pr328
+app-sre_qontract-reconcile_pr331
+app-sre_qontract-reconcile_pr332
+app-sre_qontract-reconcile_pr347
+app-sre_qontract-reconcile_pr349
+app-sre_qontract-reconcile_pr353
+app-sre_qontract-reconcile_pr355
+app-sre_qontract-reconcile_pr356
+app-sre_qontract-reconcile_pr36
+app-sre_qontract-reconcile_pr360
+app-sre_qontract-reconcile_pr364
+app-sre_qontract-reconcile_pr366
+app-sre_qontract-reconcile_pr367
+app-sre_qontract-reconcile_pr368
+app-sre_qontract-reconcile_pr369
+app-sre_qontract-reconcile_pr37
+app-sre_qontract-reconcile_pr372
+app-sre_qontract-reconcile_pr374
+app-sre_qontract-reconcile_pr375
+app-sre_qontract-reconcile_pr378
+app-sre_qontract-reconcile_pr379
+app-sre_qontract-reconcile_pr38
+app-sre_qontract-reconcile_pr382
+app-sre_qontract-reconcile_pr385
+app-sre_qontract-reconcile_pr389
+app-sre_qontract-reconcile_pr39
+app-sre_qontract-reconcile_pr390
+app-sre_qontract-reconcile_pr394
+app-sre_qontract-reconcile_pr396
+app-sre_qontract-reconcile_pr398
+app-sre_qontract-reconcile_pr4
+app-sre_qontract-reconcile_pr400
+app-sre_qontract-reconcile_pr403
+app-sre_qontract-reconcile_pr405
+app-sre_qontract-reconcile_pr406
+app-sre_qontract-reconcile_pr414
+app-sre_qontract-reconcile_pr418
+app-sre_qontract-reconcile_pr420
+app-sre_qontract-reconcile_pr421
+app-sre_qontract-reconcile_pr422
+app-sre_qontract-reconcile_pr423
+app-sre_qontract-reconcile_pr428
+app-sre_qontract-reconcile_pr429
+app-sre_qontract-reconcile_pr433
+app-sre_qontract-reconcile_pr434
+app-sre_qontract-reconcile_pr437
+app-sre_qontract-reconcile_pr439
+app-sre_qontract-reconcile_pr445
+app-sre_qontract-reconcile_pr448
+app-sre_qontract-reconcile_pr449
+app-sre_qontract-reconcile_pr450
+app-sre_qontract-reconcile_pr452
+app-sre_qontract-reconcile_pr455
+app-sre_qontract-reconcile_pr459
+app-sre_qontract-reconcile_pr462
+app-sre_qontract-reconcile_pr468
+app-sre_qontract-reconcile_pr47
+app-sre_qontract-reconcile_pr470
+app-sre_qontract-reconcile_pr471
+app-sre_qontract-reconcile_pr472
+app-sre_qontract-reconcile_pr473
+app-sre_qontract-reconcile_pr478
+app-sre_qontract-reconcile_pr481
+app-sre_qontract-reconcile_pr482
+app-sre_qontract-reconcile_pr483
+app-sre_qontract-reconcile_pr491
+app-sre_qontract-reconcile_pr493
+app-sre_qontract-reconcile_pr504
+app-sre_qontract-reconcile_pr505
+app-sre_qontract-reconcile_pr508
+app-sre_qontract-reconcile_pr509
+app-sre_qontract-reconcile_pr513
+app-sre_qontract-reconcile_pr527
+app-sre_qontract-reconcile_pr529
+app-sre_qontract-reconcile_pr53
+app-sre_qontract-reconcile_pr534
+app-sre_qontract-reconcile_pr535
+app-sre_qontract-reconcile_pr536
+app-sre_qontract-reconcile_pr537
+app-sre_qontract-reconcile_pr538
+app-sre_qontract-reconcile_pr540
+app-sre_qontract-reconcile_pr541
+app-sre_qontract-reconcile_pr542
+app-sre_qontract-reconcile_pr543
+app-sre_qontract-reconcile_pr547
+app-sre_qontract-reconcile_pr548
+app-sre_qontract-reconcile_pr549
+app-sre_qontract-reconcile_pr551
+app-sre_qontract-reconcile_pr553
+app-sre_qontract-reconcile_pr555
+app-sre_qontract-reconcile_pr556
+app-sre_qontract-reconcile_pr56
+app-sre_qontract-reconcile_pr560
+app-sre_qontract-reconcile_pr561
+app-sre_qontract-reconcile_pr562
+app-sre_qontract-reconcile_pr565
+app-sre_qontract-reconcile_pr568
+app-sre_qontract-reconcile_pr569
+app-sre_qontract-reconcile_pr574
+app-sre_qontract-reconcile_pr576
+app-sre_qontract-reconcile_pr578
+app-sre_qontract-reconcile_pr581
+app-sre_qontract-reconcile_pr582
+app-sre_qontract-reconcile_pr584
+app-sre_qontract-reconcile_pr585
+app-sre_qontract-reconcile_pr586
+app-sre_qontract-reconcile_pr588
+app-sre_qontract-reconcile_pr589
+app-sre_qontract-reconcile_pr59
+app-sre_qontract-reconcile_pr590
+app-sre_qontract-reconcile_pr591
+app-sre_qontract-reconcile_pr594
+app-sre_qontract-reconcile_pr601
+app-sre_qontract-reconcile_pr603
+app-sre_qontract-reconcile_pr604
+app-sre_qontract-reconcile_pr605
+app-sre_qontract-reconcile_pr607
+app-sre_qontract-reconcile_pr609
+app-sre_qontract-reconcile_pr615
+app-sre_qontract-reconcile_pr616
+app-sre_qontract-reconcile_pr617
+app-sre_qontract-reconcile_pr618
+app-sre_qontract-reconcile_pr619
+app-sre_qontract-reconcile_pr622
+app-sre_qontract-reconcile_pr624
+app-sre_qontract-reconcile_pr626
+app-sre_qontract-reconcile_pr627
+app-sre_qontract-reconcile_pr632
+app-sre_qontract-reconcile_pr633
+app-sre_qontract-reconcile_pr636
+app-sre_qontract-reconcile_pr637
+app-sre_qontract-reconcile_pr641
+app-sre_qontract-reconcile_pr643
+app-sre_qontract-reconcile_pr645
+app-sre_qontract-reconcile_pr647
+app-sre_qontract-reconcile_pr649
+app-sre_qontract-reconcile_pr654
+app-sre_qontract-reconcile_pr656
+app-sre_qontract-reconcile_pr659
+app-sre_qontract-reconcile_pr660
+app-sre_qontract-reconcile_pr662
+app-sre_qontract-reconcile_pr668
+app-sre_qontract-reconcile_pr670
+app-sre_qontract-reconcile_pr672
+app-sre_qontract-reconcile_pr673
+app-sre_qontract-reconcile_pr674
+app-sre_qontract-reconcile_pr676
+app-sre_qontract-reconcile_pr677
+app-sre_qontract-reconcile_pr679
+app-sre_qontract-reconcile_pr683
+app-sre_qontract-reconcile_pr687
+app-sre_qontract-reconcile_pr688
+app-sre_qontract-reconcile_pr689
+app-sre_qontract-reconcile_pr693
+app-sre_qontract-reconcile_pr694
+app-sre_qontract-reconcile_pr695
+app-sre_qontract-reconcile_pr696
+app-sre_qontract-reconcile_pr697
+app-sre_qontract-reconcile_pr701
+app-sre_qontract-reconcile_pr702
+app-sre_qontract-reconcile_pr704
+app-sre_qontract-reconcile_pr705
+app-sre_qontract-reconcile_pr706
+app-sre_qontract-reconcile_pr709
+app-sre_qontract-reconcile_pr710
+app-sre_qontract-reconcile_pr712
+app-sre_qontract-reconcile_pr713
+app-sre_qontract-reconcile_pr715
+app-sre_qontract-reconcile_pr716
+app-sre_qontract-reconcile_pr717
+app-sre_qontract-reconcile_pr718
+app-sre_qontract-reconcile_pr719
+app-sre_qontract-reconcile_pr721
+app-sre_qontract-reconcile_pr722
+app-sre_qontract-reconcile_pr724
+app-sre_qontract-reconcile_pr729
+app-sre_qontract-reconcile_pr730
+app-sre_qontract-reconcile_pr732
+app-sre_qontract-reconcile_pr733
+app-sre_qontract-reconcile_pr734
+app-sre_qontract-reconcile_pr736
+app-sre_qontract-reconcile_pr741
+app-sre_qontract-reconcile_pr742
+app-sre_qontract-reconcile_pr747
+app-sre_qontract-reconcile_pr749
+app-sre_qontract-reconcile_pr751
+app-sre_qontract-reconcile_pr752
+app-sre_qontract-reconcile_pr753
+app-sre_qontract-reconcile_pr755
+app-sre_qontract-reconcile_pr761
+app-sre_qontract-reconcile_pr762
+app-sre_qontract-reconcile_pr766
+app-sre_qontract-reconcile_pr767
+app-sre_qontract-reconcile_pr768
+app-sre_qontract-reconcile_pr772
+app-sre_qontract-reconcile_pr774
+app-sre_qontract-reconcile_pr776
+app-sre_qontract-reconcile_pr777
+app-sre_qontract-reconcile_pr778
+app-sre_qontract-reconcile_pr781
+app-sre_qontract-reconcile_pr782
+app-sre_qontract-reconcile_pr783
+app-sre_qontract-reconcile_pr787
+app-sre_qontract-reconcile_pr788
+app-sre_qontract-reconcile_pr791
+app-sre_qontract-reconcile_pr792
+app-sre_qontract-reconcile_pr793
+app-sre_qontract-reconcile_pr798
+app-sre_qontract-reconcile_pr8
+app-sre_qontract-reconcile_pr803
+app-sre_qontract-reconcile_pr804
+app-sre_qontract-reconcile_pr808
+app-sre_qontract-reconcile_pr813
+app-sre_qontract-reconcile_pr815
+app-sre_qontract-reconcile_pr816
+app-sre_qontract-reconcile_pr820
+app-sre_qontract-reconcile_pr841
+app-sre_qontract-reconcile_pr842
+app-sre_qontract-reconcile_pr844
+app-sre_qontract-reconcile_pr845
+app-sre_qontract-reconcile_pr846
+app-sre_qontract-reconcile_pr850
+app-sre_qontract-reconcile_pr851
+app-sre_qontract-reconcile_pr852
+app-sre_qontract-reconcile_pr854
+app-sre_qontract-reconcile_pr855
+app-sre_qontract-reconcile_pr857
+app-sre_qontract-reconcile_pr861
+app-sre_qontract-reconcile_pr862
+app-sre_qontract-reconcile_pr864
+app-sre_qontract-reconcile_pr865
+app-sre_qontract-reconcile_pr866
+app-sre_qontract-reconcile_pr868
+app-sre_qontract-reconcile_pr871
+app-sre_qontract-reconcile_pr873
+app-sre_qontract-reconcile_pr874
+app-sre_qontract-reconcile_pr876
+app-sre_qontract-reconcile_pr878
+app-sre_qontract-reconcile_pr883
+app-sre_qontract-reconcile_pr885
+app-sre_qontract-reconcile_pr890
+app-sre_qontract-reconcile_pr895
+app-sre_qontract-reconcile_pr897
+app-sre_qontract-reconcile_pr9
+app-sre_qontract-reconcile_pr900
+app-sre_qontract-reconcile_pr901
+app-sre_qontract-reconcile_pr907
+app-sre_qontract-reconcile_pr910
+app-sre_qontract-reconcile_pr917
+app-sre_qontract-reconcile_pr919
+app-sre_qontract-reconcile_pr924
+app-sre_qontract-reconcile_pr925
+app-sre_qontract-reconcile_pr926
+app-sre_qontract-reconcile_pr927
+app-sre_qontract-reconcile_pr929
+app-sre_qontract-reconcile_pr931
+app-sre_qontract-reconcile_pr932
+app-sre_qontract-reconcile_pr934
+app-sre_qontract-reconcile_pr936
+app-sre_qontract-reconcile_pr949
+app-sre_qontract-reconcile_pr950
+app-sre_qontract-reconcile_pr958
+app-sre_qontract-reconcile_pr961
+app-sre_qontract-reconcile_pr962
+app-sre_qontract-reconcile_pr964
+app-sre_qontract-reconcile_pr965
+app-sre_qontract-reconcile_pr971
+app-sre_qontract-reconcile_pr974
+app-sre_qontract-reconcile_pr975
+app-sre_qontract-reconcile_pr976
+app-sre_qontract-reconcile_pr977
+app-sre_qontract-reconcile_pr981
+app-sre_qontract-reconcile_pr982
+app-sre_qontract-reconcile_pr983
+app-sre_qontract-reconcile_pr984
+app-sre_qontract-reconcile_pr987
+app-sre_qontract-reconcile_pr988
+app-sre_qontract-reconcile_pr990
+app-sre_qontract-reconcile_pr991
+app-sre_qontract-reconcile_pr993
+app-sre_qontract-reconcile_pr994
+app-sre_qontract-reconcile_pr995
+appium_python-client_pr294
+appium_python-client_pr296
+appium_python-client_pr297
+appium_python-client_pr302
+appium_python-client_pr307
+appium_python-client_pr310
+appium_python-client_pr312
+appium_python-client_pr319
+appium_python-client_pr322
+appium_python-client_pr324
+appium_python-client_pr327
+appium_python-client_pr332
+appium_python-client_pr334
+appium_python-client_pr335
+appium_python-client_pr338
+appium_python-client_pr343
+appium_python-client_pr351
+appium_python-client_pr357
+appium_python-client_pr360
+appium_python-client_pr363
+appium_python-client_pr364
+appium_python-client_pr366
+appium_python-client_pr367
+appium_python-client_pr368
+appium_python-client_pr370
+appium_python-client_pr371
+appium_python-client_pr372
+appium_python-client_pr374
+appium_python-client_pr385
+appium_python-client_pr386
+appium_python-client_pr388
+appium_python-client_pr391
+appium_python-client_pr396
+appium_python-client_pr399
+appium_python-client_pr406
+appium_python-client_pr426
+appium_python-client_pr440
+appium_python-client_pr446
+appium_python-client_pr461
+appium_python-client_pr466
+appium_python-client_pr469
+appium_python-client_pr473
+appium_python-client_pr479
+appium_python-client_pr495
+appium_python-client_pr514
+appium_python-client_pr515
+appium_python-client_pr517
+appium_python-client_pr518
+appium_python-client_pr521
+appium_python-client_pr531
+appium_python-client_pr552
+appium_python-client_pr580
+appium_python-client_pr594
+appium_python-client_pr608
+appium_python-client_pr620
+appium_python-client_pr646
+appium_python-client_pr674
+appium_python-client_pr677
+appium_python-client_pr701
+arcinstitute_cell-eval_pr102
+arcinstitute_cell-eval_pr110
+arcinstitute_cell-eval_pr119
+arcinstitute_cell-eval_pr129
+arcinstitute_cell-eval_pr136
+arcinstitute_cell-eval_pr140
+arcinstitute_cell-eval_pr143
+arcinstitute_cell-eval_pr149
+arcinstitute_cell-eval_pr16
+arcinstitute_cell-eval_pr161
+arcinstitute_cell-eval_pr17
+arcinstitute_cell-eval_pr192
+arcinstitute_cell-eval_pr206
+arcinstitute_cell-eval_pr30
+arcinstitute_cell-eval_pr31
+arcinstitute_cell-eval_pr48
+arcinstitute_cell-eval_pr51
+arcinstitute_cell-eval_pr68
+arcinstitute_cell-eval_pr72
+arcinstitute_cell-eval_pr75
+arcinstitute_cell-eval_pr91
+arcinstitute_cell-eval_pr94
+arcinstitute_cell-eval_pr96
+argyle-engineering_pyap_pr11
+argyle-engineering_pyap_pr13
+argyle-engineering_pyap_pr14
+argyle-engineering_pyap_pr15
+argyle-engineering_pyap_pr18
+argyle-engineering_pyap_pr19
+argyle-engineering_pyap_pr2
+argyle-engineering_pyap_pr20
+argyle-engineering_pyap_pr21
+argyle-engineering_pyap_pr22
+argyle-engineering_pyap_pr26
+argyle-engineering_pyap_pr27
+argyle-engineering_pyap_pr28
+argyle-engineering_pyap_pr3
+argyle-engineering_pyap_pr30
+argyle-engineering_pyap_pr32
+argyle-engineering_pyap_pr33
+argyle-engineering_pyap_pr36
+argyle-engineering_pyap_pr40
+argyle-engineering_pyap_pr41
+argyle-engineering_pyap_pr46
+argyle-engineering_pyap_pr50
+argyle-engineering_pyap_pr51
+argyle-engineering_pyap_pr55
+argyle-engineering_pyap_pr59
+argyle-engineering_pyap_pr62
+argyle-engineering_pyap_pr63
+argyle-engineering_pyap_pr64
+argyle-engineering_pyap_pr67
+argyle-engineering_pyap_pr68
+argyle-engineering_pyap_pr69
+ariebovenberg_slotscheck_pr121
+ariebovenberg_slotscheck_pr19
+ariebovenberg_slotscheck_pr194
+ariebovenberg_slotscheck_pr228
+ariebovenberg_slotscheck_pr27
+ariebovenberg_slotscheck_pr34
+ariebovenberg_slotscheck_pr44
+ariebovenberg_slotscheck_pr46
+ariebovenberg_slotscheck_pr93
+arviz-devs_preliz_pr100
+arviz-devs_preliz_pr103
+arviz-devs_preliz_pr105
+arviz-devs_preliz_pr106
+arviz-devs_preliz_pr108
+arviz-devs_preliz_pr113
+arviz-devs_preliz_pr117
+arviz-devs_preliz_pr120
+arviz-devs_preliz_pr122
+arviz-devs_preliz_pr124
+arviz-devs_preliz_pr13
+arviz-devs_preliz_pr137
+arviz-devs_preliz_pr138
+arviz-devs_preliz_pr142
+arviz-devs_preliz_pr143
+arviz-devs_preliz_pr145
+arviz-devs_preliz_pr146
+arviz-devs_preliz_pr147
+arviz-devs_preliz_pr150
+arviz-devs_preliz_pr153
+arviz-devs_preliz_pr154
+arviz-devs_preliz_pr155
+arviz-devs_preliz_pr157
+arviz-devs_preliz_pr158
+arviz-devs_preliz_pr162
+arviz-devs_preliz_pr168
+arviz-devs_preliz_pr181
+arviz-devs_preliz_pr182
+arviz-devs_preliz_pr186
+arviz-devs_preliz_pr187
+arviz-devs_preliz_pr188
+arviz-devs_preliz_pr192
+arviz-devs_preliz_pr196
+arviz-devs_preliz_pr197
+arviz-devs_preliz_pr20
+arviz-devs_preliz_pr203
+arviz-devs_preliz_pr209
+arviz-devs_preliz_pr212
+arviz-devs_preliz_pr216
+arviz-devs_preliz_pr222
+arviz-devs_preliz_pr224
+arviz-devs_preliz_pr232
+arviz-devs_preliz_pr237
+arviz-devs_preliz_pr239
+arviz-devs_preliz_pr24
+arviz-devs_preliz_pr240
+arviz-devs_preliz_pr242
+arviz-devs_preliz_pr243
+arviz-devs_preliz_pr244
+arviz-devs_preliz_pr245
+arviz-devs_preliz_pr249
+arviz-devs_preliz_pr251
+arviz-devs_preliz_pr256
+arviz-devs_preliz_pr272
+arviz-devs_preliz_pr28
+arviz-devs_preliz_pr280
+arviz-devs_preliz_pr282
+arviz-devs_preliz_pr286
+arviz-devs_preliz_pr287
+arviz-devs_preliz_pr288
+arviz-devs_preliz_pr292
+arviz-devs_preliz_pr296
+arviz-devs_preliz_pr302
+arviz-devs_preliz_pr304
+arviz-devs_preliz_pr305
+arviz-devs_preliz_pr306
+arviz-devs_preliz_pr307
+arviz-devs_preliz_pr312
+arviz-devs_preliz_pr314
+arviz-devs_preliz_pr318
+arviz-devs_preliz_pr321
+arviz-devs_preliz_pr327
+arviz-devs_preliz_pr332
+arviz-devs_preliz_pr336
+arviz-devs_preliz_pr337
+arviz-devs_preliz_pr344
+arviz-devs_preliz_pr346
+arviz-devs_preliz_pr347
+arviz-devs_preliz_pr348
+arviz-devs_preliz_pr349
+arviz-devs_preliz_pr35
+arviz-devs_preliz_pr350
+arviz-devs_preliz_pr351
+arviz-devs_preliz_pr352
+arviz-devs_preliz_pr353
+arviz-devs_preliz_pr355
+arviz-devs_preliz_pr356
+arviz-devs_preliz_pr357
+arviz-devs_preliz_pr359
+arviz-devs_preliz_pr360
+arviz-devs_preliz_pr362
+arviz-devs_preliz_pr364
+arviz-devs_preliz_pr368
+arviz-devs_preliz_pr370
+arviz-devs_preliz_pr372
+arviz-devs_preliz_pr373
+arviz-devs_preliz_pr374
+arviz-devs_preliz_pr376
+arviz-devs_preliz_pr382
+arviz-devs_preliz_pr384
+arviz-devs_preliz_pr386
+arviz-devs_preliz_pr387
+arviz-devs_preliz_pr388
+arviz-devs_preliz_pr389
+arviz-devs_preliz_pr391
+arviz-devs_preliz_pr392
+arviz-devs_preliz_pr394
+arviz-devs_preliz_pr395
+arviz-devs_preliz_pr396
+arviz-devs_preliz_pr401
+arviz-devs_preliz_pr403
+arviz-devs_preliz_pr404
+arviz-devs_preliz_pr405
+arviz-devs_preliz_pr407
+arviz-devs_preliz_pr409
+arviz-devs_preliz_pr411
+arviz-devs_preliz_pr414
+arviz-devs_preliz_pr415
+arviz-devs_preliz_pr416
+arviz-devs_preliz_pr419
+arviz-devs_preliz_pr424
+arviz-devs_preliz_pr425
+arviz-devs_preliz_pr434
+arviz-devs_preliz_pr45
+arviz-devs_preliz_pr48
+arviz-devs_preliz_pr50
+arviz-devs_preliz_pr55
+arviz-devs_preliz_pr635
+arviz-devs_preliz_pr636
+arviz-devs_preliz_pr646
+arviz-devs_preliz_pr651
+arviz-devs_preliz_pr658
+arviz-devs_preliz_pr660
+arviz-devs_preliz_pr662
+arviz-devs_preliz_pr663
+arviz-devs_preliz_pr670
+arviz-devs_preliz_pr671
+arviz-devs_preliz_pr94
+arviz-devs_preliz_pr97
+arviz-devs_preliz_pr99
+asottile_add-trailing-comma_pr107
+asottile_add-trailing-comma_pr110
+asottile_add-trailing-comma_pr112
+asottile_add-trailing-comma_pr12
+asottile_add-trailing-comma_pr13
+asottile_add-trailing-comma_pr166
+asottile_add-trailing-comma_pr178
+asottile_add-trailing-comma_pr18
+asottile_add-trailing-comma_pr199
+asottile_add-trailing-comma_pr20
+asottile_add-trailing-comma_pr21
+asottile_add-trailing-comma_pr214
+asottile_add-trailing-comma_pr229
+asottile_add-trailing-comma_pr23
+asottile_add-trailing-comma_pr27
+asottile_add-trailing-comma_pr28
+asottile_add-trailing-comma_pr34
+asottile_add-trailing-comma_pr5
+asottile_add-trailing-comma_pr55
+asottile_add-trailing-comma_pr6
+asottile_add-trailing-comma_pr71
+asottile_add-trailing-comma_pr78
+asottile_add-trailing-comma_pr8
+asottile_add-trailing-comma_pr82
+asottile_add-trailing-comma_pr85
+asottile_add-trailing-comma_pr89
+asottile_astpretty_pr28
+asottile_blacken-docs_pr11
+asottile_blacken-docs_pr12
+asottile_blacken-docs_pr128
+asottile_blacken-docs_pr2
+asottile_blacken-docs_pr202
+asottile_blacken-docs_pr25
+asottile_blacken-docs_pr287
+asottile_blacken-docs_pr333
+asottile_blacken-docs_pr347
+asottile_blacken-docs_pr369
+asottile_blacken-docs_pr375
+asottile_blacken-docs_pr49
+asottile_blacken-docs_pr55
+asottile_blacken-docs_pr71
+asottile_classify-imports_pr106
+asottile_classify-imports_pr112
+asottile_classify-imports_pr139
+asottile_classify-imports_pr15
+asottile_classify-imports_pr19
+asottile_classify-imports_pr3
+asottile_classify-imports_pr53
+asottile_classify-imports_pr65
+asottile_classify-imports_pr8
+asottile_flake8-typing-imports_pr127
+asottile_future-fstrings_pr10
+aspectumapp_osm2geojson_pr55
+assertpy_assertpy_pr152
+assertpy_assertpy_pr96
+astronomer_airflow-provider-fivetran-async_pr101
+astronomer_airflow-provider-fivetran-async_pr6
+astronomer_airflow-provider-great-expectations_pr101
+astronomer_airflow-provider-great-expectations_pr113
+astronomer_airflow-provider-great-expectations_pr116
+astronomer_airflow-provider-great-expectations_pr57
+astronomer_airflow-provider-great-expectations_pr61
+astronomer_airflow-provider-great-expectations_pr75
+astronomer_airflow-provider-great-expectations_pr91
+astropy_astroplan_pr458
+astropy_astroplan_pr507
+astropy_astroplan_pr522
+astropy_astroplan_pr525
+astropy_astroplan_pr528
+astropy_astroplan_pr535
+astropy_astroplan_pr540
+astropy_astroplan_pr551
+astropy_astroplan_pr562
+astropy_astroplan_pr568
+astropy_astroplan_pr581
+astropy_sphinx-automodapi_pr1
+astropy_sphinx-automodapi_pr100
+astropy_sphinx-automodapi_pr127
+astropy_sphinx-automodapi_pr129
+astropy_sphinx-automodapi_pr142
+astropy_sphinx-automodapi_pr24
+astropy_sphinx-automodapi_pr25
+astropy_sphinx-automodapi_pr43
+astropy_sphinx-automodapi_pr44
+astropy_sphinx-automodapi_pr51
+astropy_sphinx-automodapi_pr53
+astropy_sphinx-automodapi_pr75
+astropy_sphinx-automodapi_pr88
+asyncgui_asyncgui_pr1
+asyncgui_asyncgui_pr10
+asyncgui_asyncgui_pr101
+asyncgui_asyncgui_pr124
+asyncgui_asyncgui_pr13
+asyncgui_asyncgui_pr131
+asyncgui_asyncgui_pr3
+asyncgui_asyncgui_pr33
+asyncgui_asyncgui_pr35
+asyncgui_asyncgui_pr37
+asyncgui_asyncgui_pr39
+asyncgui_asyncgui_pr4
+asyncgui_asyncgui_pr41
+asyncgui_asyncgui_pr48
+asyncgui_asyncgui_pr6
+asyncgui_asyncgui_pr61
+asyncgui_asyncgui_pr62
+asyncgui_asyncgui_pr66
+asyncgui_asyncgui_pr69
+asyncgui_asyncgui_pr7
+asyncgui_asyncgui_pr74
+asyncgui_asyncgui_pr78
+asyncgui_asyncgui_pr8
+asyncgui_asyncgui_pr80
+asyncgui_asyncgui_pr86
+asyncgui_asyncgui_pr96
+asyncgui_asyncgui_pr97
+asyncgui_asynckivy_pr101
+asyncgui_asynckivy_pr105
+asyncgui_asynckivy_pr112
+asyncgui_asynckivy_pr121
+asyncgui_asynckivy_pr124
+asyncgui_asynckivy_pr133
+asyncgui_asynckivy_pr138
+asyncgui_asynckivy_pr157
+asyncgui_asynckivy_pr168
+asyncgui_asynckivy_pr17
+asyncgui_asynckivy_pr18
+asyncgui_asynckivy_pr186
+asyncgui_asynckivy_pr191
+asyncgui_asynckivy_pr193
+asyncgui_asynckivy_pr88
+asyncgui_asynckivy_pr90
+asyncgui_asynckivy_pr98
+asyncgui_asynckivy_pr99
+atlanhq_atlan-python_pr37
+atlassian_asap-authentication-python_pr111
+atlassian_asap-authentication-python_pr113
+atlassian_asap-authentication-python_pr114
+atlassian_asap-authentication-python_pr116
+atlassian_asap-authentication-python_pr117
+atlassian_asap-authentication-python_pr118
+atlassian_asap-authentication-python_pr119
+atlassian_asap-authentication-python_pr126
+atlassian_asap-authentication-python_pr130
+atlassian_asap-authentication-python_pr2
+atlassian_asap-authentication-python_pr27
+atlassian_asap-authentication-python_pr3
+atlassian_asap-authentication-python_pr65
+atlassian_asap-authentication-python_pr66
+atlassian_asap-authentication-python_pr69
+atlassian_asap-authentication-python_pr75
+atlassian_asap-authentication-python_pr77
+atlassian_asap-authentication-python_pr78
+atlassian_asap-authentication-python_pr80
+atlassian_asap-authentication-python_pr82
+atlassian_asap-authentication-python_pr83
+atlassian_asap-authentication-python_pr91
+atlassian_asap-authentication-python_pr99
+audreyr_cookiecutter_pr1096
+audreyr_cookiecutter_pr1336
+audreyr_cookiecutter_pr1353
+audreyr_cookiecutter_pr1370
+audreyr_cookiecutter_pr1374
+audreyr_cookiecutter_pr1414
+audreyr_cookiecutter_pr1419
+audreyr_cookiecutter_pr1468
+audreyr_cookiecutter_pr1485
+audreyr_cookiecutter_pr1545
+audreyr_cookiecutter_pr1559
+audreyr_cookiecutter_pr1569
+audreyr_cookiecutter_pr1621
+audreyr_cookiecutter_pr1626
+audreyr_cookiecutter_pr1651
+audreyr_cookiecutter_pr1669
+audreyr_cookiecutter_pr1679
+audreyr_cookiecutter_pr1689
+audreyr_cookiecutter_pr1692
+audreyr_cookiecutter_pr1706
+audreyr_cookiecutter_pr1722
+audreyr_cookiecutter_pr1874
+audreyr_cookiecutter_pr1881
+audreyr_cookiecutter_pr1896
+audreyr_cookiecutter_pr1898
+audreyr_cookiecutter_pr1901
+audreyr_cookiecutter_pr1903
+audreyr_cookiecutter_pr1920
+audreyr_cookiecutter_pr1923
+audreyr_cookiecutter_pr1924
+audreyr_cookiecutter_pr1950
+audreyr_cookiecutter_pr1961
+audreyr_cookiecutter_pr1981
+audreyr_cookiecutter_pr1991
+audreyr_cookiecutter_pr1995
+audreyr_cookiecutter_pr1997
+audreyr_cookiecutter_pr2010
+audreyr_cookiecutter_pr2012
+audreyr_cookiecutter_pr2041
+audreyr_cookiecutter_pr2049
+audreyr_cookiecutter_pr2051
+audreyr_cookiecutter_pr2053
+audreyr_cookiecutter_pr2054
+audreyr_cookiecutter_pr2059
+audreyr_cookiecutter_pr2147
+audreyr_cookiecutter_pr2159
+audreyr_cookiecutter_pr2171
+audreyr_cookiecutter_pr839
+audreyr_cookiecutter_pr906
+audreyr_cookiecutter_pr974
+auth0_auth0-python_pr108
+auth0_auth0-python_pr110
+auth0_auth0-python_pr113
+auth0_auth0-python_pr122
+auth0_auth0-python_pr152
+auth0_auth0-python_pr158
+auth0_auth0-python_pr159
+auth0_auth0-python_pr170
+auth0_auth0-python_pr177
+auth0_auth0-python_pr187
+auth0_auth0-python_pr190
+auth0_auth0-python_pr220
+auth0_auth0-python_pr222
+auth0_auth0-python_pr23
+auth0_auth0-python_pr236
+auth0_auth0-python_pr256
+auth0_auth0-python_pr258
+auth0_auth0-python_pr273
+auth0_auth0-python_pr279
+auth0_auth0-python_pr285
+auth0_auth0-python_pr289
+auth0_auth0-python_pr301
+auth0_auth0-python_pr312
+auth0_auth0-python_pr313
+auth0_auth0-python_pr43
+auth0_auth0-python_pr443
+auth0_auth0-python_pr467
+auth0_auth0-python_pr477
+auth0_auth0-python_pr484
+auth0_auth0-python_pr486
+auth0_auth0-python_pr495
+auth0_auth0-python_pr497
+auth0_auth0-python_pr499
+auth0_auth0-python_pr500
+auth0_auth0-python_pr501
+auth0_auth0-python_pr549
+auth0_auth0-python_pr556
+auth0_auth0-python_pr560
+auth0_auth0-python_pr64
+auth0_auth0-python_pr66
+auth0_auth0-python_pr669
+auth0_auth0-python_pr671
+auth0_auth0-python_pr679
+auth0_auth0-python_pr68
+auth0_auth0-python_pr682
+auth0_auth0-python_pr69
+auth0_auth0-python_pr695
+auth0_auth0-python_pr696
+auth0_auth0-python_pr706
+auth0_auth0-python_pr720
+auth0_auth0-python_pr744
+auth0_auth0-python_pr77
+auth0_auth0-python_pr92
+auth0_auth0-python_pr96
+avian2_jsonmerge_pr19
+avian2_jsonmerge_pr29
+aws-samples_amazon-textract-response-parser_pr134
+aws-samples_amazon-textract-response-parser_pr181
+aws-samples_amazon-textract-response-parser_pr19
+aws-samples_amazon-textract-response-parser_pr24
+aws-samples_amazon-textract-response-parser_pr27
+aws-samples_amazon-textract-response-parser_pr31
+aws-samples_amazon-textract-response-parser_pr42
+aws-samples_amazon-textract-response-parser_pr48
+aws-samples_amazon-textract-response-parser_pr57
+aws_aws-encryption-sdk-cli_pr14
+aws_aws-encryption-sdk-cli_pr47
+aws_aws-encryption-sdk-cli_pr48
+aws_aws-encryption-sdk-cli_pr55
+aws_aws-encryption-sdk-cli_pr60
+aws_aws-encryption-sdk-python_pr47
+awslabs_amazon-sns-python-extended-client-lib_pr21
+awslabs_amazon-sns-python-extended-client-lib_pr9
+awslabs_aws-lambda-builders_pr41
+awslabs_aws-lambda-builders_pr61
+awslabs_aws-serverlessrepo-python_pr16
+awslabs_aws-serverlessrepo-python_pr19
+awslabs_aws-serverlessrepo-python_pr20
+awslabs_aws-serverlessrepo-python_pr25
+awslabs_kinesis-aggregation_pr124
+awslabs_kinesis-aggregation_pr96
+awslabs_mxnet-model-server_pr213
+awslabs_mxnet-model-server_pr303
+awslabs_serverless-application-model_pr1264
+awslabs_serverless-application-model_pr1625
+awslabs_serverless-application-model_pr1756
+awslabs_serverless-application-model_pr1827
+awslabs_serverless-application-model_pr1906
+awslabs_serverless-application-model_pr2050
+awslabs_serverless-application-model_pr2079
+awslabs_serverless-application-model_pr2095
+awslabs_serverless-application-model_pr2165
+awslabs_serverless-application-model_pr2242
+awslabs_serverless-application-model_pr2261
+awslabs_serverless-application-model_pr2362
+backstage_mkdocs-monorepo-plugin_pr120
+backstage_mkdocs-monorepo-plugin_pr86
+backstage_mkdocs-techdocs-core_pr247
+backstage_mkdocs-techdocs-core_pr260
+backstage_mkdocs-techdocs-core_pr279
+bambinos_formulae_pr100
+bambinos_formulae_pr102
+bambinos_formulae_pr33
+bambinos_formulae_pr35
+bambinos_formulae_pr40
+bambinos_formulae_pr41
+bambinos_formulae_pr48
+bambinos_formulae_pr49
+bambinos_formulae_pr52
+bambinos_formulae_pr60
+bambinos_formulae_pr61
+bambinos_formulae_pr71
+bambinos_formulae_pr73
+bambinos_formulae_pr81
+bambinos_formulae_pr85
+bambinos_formulae_pr88
+bambinos_formulae_pr89
+bambinos_formulae_pr90
+banesullivan_scooby_pr118
+banesullivan_scooby_pr119
+banesullivan_scooby_pr41
+banesullivan_scooby_pr61
+banesullivan_scooby_pr64
+banesullivan_scooby_pr76
+banesullivan_scooby_pr86
+banesullivan_scooby_pr87
+barrust_pyprobables_pr116
+barrust_pyprobables_pr14
+barrust_pyprobables_pr17
+barrust_pyprobables_pr24
+barrust_pyprobables_pr34
+barrust_pyprobables_pr45
+barrust_pyprobables_pr5
+barrust_pyprobables_pr64
+barrust_pyprobables_pr66
+barrust_pyprobables_pr68
+barrust_pyprobables_pr69
+barrust_pyprobables_pr70
+barrust_pyprobables_pr77
+barrust_pyprobables_pr80
+barrust_pyprobables_pr81
+barrust_pyprobables_pr84
+barrust_pyprobables_pr85
+barrust_pyprobables_pr86
+barrust_pyprobables_pr90
+barrust_pyprobables_pr95
+barrust_pyprobables_pr96
+bastibe_python-soundfile_pr132
+bastibe_python-soundfile_pr148
+bastibe_python-soundfile_pr152
+bastibe_python-soundfile_pr192
+bastibe_python-soundfile_pr200
+bastibe_python-soundfile_pr36
+bastibe_python-soundfile_pr38
+bastibe_python-soundfile_pr39
+bastibe_python-soundfile_pr46
+bastibe_python-soundfile_pr48
+bastibe_python-soundfile_pr58
+bastikr_boolean.py_pr27
+bastikr_boolean.py_pr32
+bastikr_boolean.py_pr48
+bcwaldon_warlock_pr55
+bdraco_bluetooth-data-tools_pr119
+bdraco_bluetooth-data-tools_pr12
+bdraco_bluetooth-data-tools_pr121
+bdraco_bluetooth-data-tools_pr132
+bdraco_bluetooth-data-tools_pr155
+bdraco_bluetooth-data-tools_pr2
+bdraco_bluetooth-data-tools_pr9
+bdraco_bluetooth-data-tools_pr99
+beetbox_audioread_pr126
+beetbox_beets_pr2554
+beetbox_beets_pr3360
+beetbox_beets_pr3635
+beetbox_beets_pr3637
+beetbox_beets_pr3641
+beetbox_beets_pr3647
+beetbox_beets_pr3658
+beetbox_beets_pr3661
+beetbox_beets_pr3670
+beetbox_beets_pr3671
+beetbox_beets_pr3688
+beetbox_beets_pr3700
+beetbox_beets_pr3702
+beetbox_beets_pr3711
+beetbox_beets_pr3712
+beetbox_beets_pr3721
+beetbox_beets_pr3725
+beetbox_beets_pr3731
+beetbox_beets_pr3746
+beetbox_beets_pr3748
+beetbox_beets_pr3755
+beetbox_beets_pr3761
+beetbox_beets_pr3764
+beetbox_beets_pr3765
+beetbox_beets_pr3766
+beetbox_beets_pr3774
+beetbox_beets_pr3786
+beetbox_beets_pr3805
+beetbox_beets_pr3810
+beetbox_beets_pr3811
+beetbox_beets_pr3814
+beetbox_beets_pr3816
+beetbox_beets_pr3818
+beetbox_beets_pr3824
+beetbox_beets_pr3825
+beetbox_beets_pr3831
+beetbox_beets_pr3832
+beetbox_beets_pr3848
+beetbox_beets_pr3863
+beetbox_beets_pr3868
+beetbox_beets_pr3869
+beetbox_beets_pr3873
+beetbox_beets_pr3877
+beetbox_beets_pr3883
+beetbox_beets_pr3900
+beetbox_beets_pr3901
+beetbox_beets_pr3905
+beetbox_beets_pr3923
+beetbox_beets_pr3927
+beetbox_beets_pr3929
+beetbox_beets_pr3942
+beetbox_beets_pr3980
+beetbox_beets_pr3982
+beetbox_beets_pr3995
+beetbox_beets_pr3996
+beetbox_beets_pr4008
+beetbox_beets_pr4036
+beetbox_beets_pr4045
+beetbox_beets_pr4048
+beetbox_beets_pr4086
+beetbox_beets_pr4095
+beetbox_beets_pr4124
+beetbox_beets_pr4125
+beetbox_beets_pr4129
+beetbox_beets_pr4133
+beetbox_beets_pr4140
+beetbox_beets_pr4146
+beetbox_beets_pr4147
+beetbox_beets_pr4148
+beetbox_beets_pr4153
+beetbox_beets_pr4155
+beetbox_beets_pr4160
+beetbox_beets_pr4177
+beetbox_beets_pr4190
+beetbox_beets_pr4195
+beetbox_beets_pr4196
+beetbox_beets_pr4197
+beetbox_beets_pr4198
+beetbox_beets_pr4199
+beetbox_beets_pr4200
+beetbox_beets_pr4209
+beetbox_beets_pr4226
+beetbox_beets_pr4227
+beetbox_beets_pr4229
+beetbox_beets_pr4251
+beetbox_beets_pr4263
+beetbox_beets_pr4275
+beetbox_beets_pr4303
+beetbox_beets_pr4304
+beetbox_beets_pr4313
+beetbox_beets_pr4319
+beetbox_beets_pr4327
+beetbox_beets_pr4333
+beetbox_beets_pr4348
+beetbox_beets_pr4352
+beetbox_beets_pr4359
+beetbox_beets_pr4370
+beetbox_beets_pr4374
+beetbox_beets_pr4386
+beetbox_beets_pr4387
+beetbox_beets_pr4390
+beetbox_beets_pr4396
+beetbox_beets_pr4399
+beetbox_beets_pr4405
+beetbox_beets_pr4413
+beetbox_beets_pr4431
+beetbox_beets_pr4441
+beetbox_beets_pr4450
+beetbox_beets_pr4496
+beetbox_beets_pr4504
+beetbox_beets_pr4507
+beetbox_beets_pr4515
+beetbox_beets_pr4521
+beetbox_beets_pr4546
+beetbox_beets_pr4547
+beetbox_beets_pr4549
+beetbox_beets_pr4564
+beetbox_beets_pr4579
+beetbox_beets_pr4588
+beetbox_beets_pr4633
+beetbox_beets_pr4634
+beetbox_beets_pr4636
+beetbox_beets_pr4663
+beetbox_beets_pr4677
+beetbox_beets_pr4679
+beetbox_beets_pr4698
+beetbox_beets_pr4708
+beetbox_beets_pr4714
+beetbox_beets_pr4719
+beetbox_beets_pr4735
+beetbox_beets_pr4743
+beetbox_beets_pr4744
+beetbox_beets_pr4771
+beetbox_beets_pr4774
+beetbox_beets_pr4775
+beetbox_beets_pr4778
+beetbox_beets_pr4781
+beetbox_beets_pr4804
+beetbox_beets_pr4805
+beetbox_beets_pr4807
+beetbox_beets_pr4808
+beetbox_beets_pr4809
+beetbox_beets_pr4823
+beetbox_beets_pr4826
+beetbox_beets_pr4827
+beetbox_beets_pr4828
+beetbox_beets_pr4830
+beetbox_beets_pr4834
+beetbox_beets_pr4842
+beetbox_beets_pr4849
+beetbox_beets_pr4850
+beetbox_beets_pr4851
+beetbox_beets_pr4854
+beetbox_beets_pr4858
+beetbox_beets_pr4863
+beetbox_beets_pr4899
+beetbox_beets_pr4900
+beetbox_beets_pr4906
+beetbox_beets_pr4940
+beetbox_beets_pr4952
+beetbox_beets_pr4971
+beetbox_beets_pr4984
+beetbox_beets_pr4996
+beetbox_beets_pr5007
+beetbox_beets_pr5022
+beetbox_beets_pr5044
+beetbox_beets_pr5046
+beetbox_beets_pr5048
+beetbox_beets_pr5052
+beetbox_beets_pr5053
+beetbox_beets_pr5063
+beetbox_beets_pr5068
+beetbox_beets_pr5081
+beetbox_beets_pr5089
+beetbox_beets_pr5121
+beetbox_beets_pr5123
+beetbox_beets_pr5134
+beetbox_beets_pr5149
+beetbox_beets_pr5152
+beetbox_beets_pr5153
+beetbox_beets_pr5160
+beetbox_beets_pr5214
+beetbox_beets_pr5239
+beetbox_beets_pr5244
+beetbox_beets_pr5262
+beetbox_beets_pr5274
+beetbox_beets_pr5282
+beetbox_beets_pr5288
+beetbox_beets_pr5301
+beetbox_beets_pr5308
+beetbox_beets_pr5327
+beetbox_beets_pr5352
+beetbox_beets_pr5356
+beetbox_beets_pr5357
+beetbox_beets_pr5362
+beetbox_beets_pr5385
+beetbox_beets_pr5386
+beetbox_beets_pr5388
+beetbox_beets_pr5393
+beetbox_beets_pr5409
+beetbox_beets_pr5415
+beetbox_beets_pr5421
+beetbox_beets_pr5437
+beetbox_beets_pr5442
+beetbox_beets_pr5447
+beetbox_beets_pr5457
+beetbox_beets_pr5470
+beetbox_beets_pr5480
+beetbox_beets_pr5495
+beetbox_beets_pr5520
+beetbox_beets_pr5536
+beetbox_beets_pr5540
+beetbox_confuse_pr1
+beetbox_confuse_pr104
+beetbox_confuse_pr129
+beetbox_confuse_pr142
+beetbox_confuse_pr149
+beetbox_confuse_pr171
+beetbox_confuse_pr180
+beetbox_confuse_pr50
+beetbox_confuse_pr78
+beetbox_confuse_pr79
+beetbox_confuse_pr92
+beetbox_mediafile_pr16
+beetbox_mediafile_pr58
+beetbox_mediafile_pr86
+belerico_py-asciimath_pr4
+belerico_py-asciimath_pr6
+bellini666_django-choices-field_pr28
+bellockk_alphashape_pr12
+benhoyt_graphyte_pr11
+benhoyt_graphyte_pr18
+bennylope_pydiscourse_pr15
+bennylope_pydiscourse_pr16
+bennylope_pydiscourse_pr3
+bennylope_pydiscourse_pr74
+bennylope_pydiscourse_pr82
+bennylope_pydiscourse_pr9
+bennylope_pydiscourse_pr91
+berkerpeksag_astor_pr133
+berkerpeksag_astor_pr134
+berkerpeksag_astor_pr137
+berkerpeksag_astor_pr139
+berkerpeksag_astor_pr141
+berkerpeksag_astor_pr143
+berkerpeksag_astor_pr155
+berkerpeksag_astor_pr163
+berkerpeksag_astor_pr164
+berkerpeksag_astor_pr219
+berkerpeksag_astor_pr222
+best-doctor_flake8-annotations-complexity_pr23
+best-doctor_flake8-class-attributes-order_pr13
+best-doctor_flake8-class-attributes-order_pr17
+best-doctor_flake8-functions_pr5
+betodealmeida_python-rison_pr7
+betodealmeida_shillelagh_pr507
+betodealmeida_shillelagh_pr514
+betodealmeida_shillelagh_pr518
+betodealmeida_shillelagh_pr525
+betodealmeida_shillelagh_pr527
+betodealmeida_shillelagh_pr531
+betodealmeida_shillelagh_pr532
+bharel_asynciolimiter_pr15
+bids-standard_pybids_pr1016
+bids-standard_pybids_pr1023
+bids-standard_pybids_pr1034
+bids-standard_pybids_pr1059
+bids-standard_pybids_pr1075
+bids-standard_pybids_pr1087
+bids-standard_pybids_pr15
+bids-standard_pybids_pr17
+bids-standard_pybids_pr297
+bids-standard_pybids_pr298
+bids-standard_pybids_pr303
+bids-standard_pybids_pr306
+bids-standard_pybids_pr307
+bids-standard_pybids_pr309
+bids-standard_pybids_pr321
+bids-standard_pybids_pr327
+bids-standard_pybids_pr34
+bids-standard_pybids_pr341
+bids-standard_pybids_pr351
+bids-standard_pybids_pr36
+bids-standard_pybids_pr39
+bids-standard_pybids_pr396
+bids-standard_pybids_pr424
+bids-standard_pybids_pr432
+bids-standard_pybids_pr443
+bids-standard_pybids_pr444
+bids-standard_pybids_pr449
+bids-standard_pybids_pr457
+bids-standard_pybids_pr458
+bids-standard_pybids_pr463
+bids-standard_pybids_pr467
+bids-standard_pybids_pr468
+bids-standard_pybids_pr471
+bids-standard_pybids_pr477
+bids-standard_pybids_pr485
+bids-standard_pybids_pr488
+bids-standard_pybids_pr492
+bids-standard_pybids_pr494
+bids-standard_pybids_pr495
+bids-standard_pybids_pr496
+bids-standard_pybids_pr497
+bids-standard_pybids_pr508
+bids-standard_pybids_pr511
+bids-standard_pybids_pr520
+bids-standard_pybids_pr523
+bids-standard_pybids_pr529
+bids-standard_pybids_pr540
+bids-standard_pybids_pr541
+bids-standard_pybids_pr547
+bids-standard_pybids_pr548
+bids-standard_pybids_pr560
+bids-standard_pybids_pr568
+bids-standard_pybids_pr569
+bids-standard_pybids_pr571
+bids-standard_pybids_pr574
+bids-standard_pybids_pr576
+bids-standard_pybids_pr580
+bids-standard_pybids_pr589
+bids-standard_pybids_pr593
+bids-standard_pybids_pr601
+bids-standard_pybids_pr607
+bids-standard_pybids_pr610
+bids-standard_pybids_pr611
+bids-standard_pybids_pr612
+bids-standard_pybids_pr613
+bids-standard_pybids_pr615
+bids-standard_pybids_pr62
+bids-standard_pybids_pr620
+bids-standard_pybids_pr623
+bids-standard_pybids_pr629
+bids-standard_pybids_pr637
+bids-standard_pybids_pr638
+bids-standard_pybids_pr642
+bids-standard_pybids_pr645
+bids-standard_pybids_pr647
+bids-standard_pybids_pr649
+bids-standard_pybids_pr65
+bids-standard_pybids_pr669
+bids-standard_pybids_pr67
+bids-standard_pybids_pr672
+bids-standard_pybids_pr682
+bids-standard_pybids_pr688
+bids-standard_pybids_pr695
+bids-standard_pybids_pr705
+bids-standard_pybids_pr713
+bids-standard_pybids_pr73
+bids-standard_pybids_pr76
+bids-standard_pybids_pr799
+bids-standard_pybids_pr809
+bids-standard_pybids_pr819
+bids-standard_pybids_pr822
+bids-standard_pybids_pr836
+bids-standard_pybids_pr838
+bids-standard_pybids_pr840
+bids-standard_pybids_pr846
+bids-standard_pybids_pr848
+bids-standard_pybids_pr853
+bids-standard_pybids_pr854
+bids-standard_pybids_pr859
+bids-standard_pybids_pr861
+bids-standard_pybids_pr866
+bids-standard_pybids_pr869
+bids-standard_pybids_pr886
+bids-standard_pybids_pr891
+bids-standard_pybids_pr892
+bids-standard_pybids_pr894
+bids-standard_pybids_pr901
+bids-standard_pybids_pr902
+bids-standard_pybids_pr906
+bids-standard_pybids_pr913
+bids-standard_pybids_pr918
+bids-standard_pybids_pr942
+bids-standard_pybids_pr971
+bigjason_django-choices_pr13
+bigjason_django-choices_pr17
+biocommons_biocommons.seqrepo_pr161
+biocommons_biocommons.seqrepo_pr172
+biocommons_biocommons.seqrepo_pr190
+biopragmatics_bioregistry_pr104
+biopragmatics_bioregistry_pr113
+biopragmatics_bioregistry_pr134
+biopragmatics_bioregistry_pr135
+biopragmatics_bioregistry_pr136
+biopragmatics_bioregistry_pr138
+biopragmatics_bioregistry_pr146
+biopragmatics_bioregistry_pr15
+biopragmatics_bioregistry_pr159
+biopragmatics_bioregistry_pr164
+biopragmatics_bioregistry_pr169
+biopragmatics_bioregistry_pr178
+biopragmatics_bioregistry_pr189
+biopragmatics_bioregistry_pr194
+biopragmatics_bioregistry_pr195
+biopragmatics_bioregistry_pr198
+biopragmatics_bioregistry_pr201
+biopragmatics_bioregistry_pr204
+biopragmatics_bioregistry_pr207
+biopragmatics_bioregistry_pr209
+biopragmatics_bioregistry_pr212
+biopragmatics_bioregistry_pr213
+biopragmatics_bioregistry_pr214
+biopragmatics_bioregistry_pr225
+biopragmatics_bioregistry_pr238
+biopragmatics_bioregistry_pr24
+biopragmatics_bioregistry_pr252
+biopragmatics_bioregistry_pr254
+biopragmatics_bioregistry_pr255
+biopragmatics_bioregistry_pr260
+biopragmatics_bioregistry_pr266
+biopragmatics_bioregistry_pr271
+biopragmatics_bioregistry_pr276
+biopragmatics_bioregistry_pr277
+biopragmatics_bioregistry_pr282
+biopragmatics_bioregistry_pr286
+biopragmatics_bioregistry_pr289
+biopragmatics_bioregistry_pr292
+biopragmatics_bioregistry_pr297
+biopragmatics_bioregistry_pr298
+biopragmatics_bioregistry_pr299
+biopragmatics_bioregistry_pr302
+biopragmatics_bioregistry_pr316
+biopragmatics_bioregistry_pr319
+biopragmatics_bioregistry_pr322
+biopragmatics_bioregistry_pr351
+biopragmatics_bioregistry_pr352
+biopragmatics_bioregistry_pr355
+biopragmatics_bioregistry_pr356
+biopragmatics_bioregistry_pr78
+biopragmatics_bioregistry_pr79
+biopragmatics_bioregistry_pr8
+biopragmatics_bioregistry_pr81
+biopragmatics_bioregistry_pr84
+biopragmatics_bioregistry_pr86
+biopragmatics_bioregistry_pr92
+biopragmatics_bioversions_pr80
+biopragmatics_bioversions_pr84
+biopragmatics_bioversions_pr89
+biopragmatics_curies_pr1
+biopragmatics_curies_pr134
+biopragmatics_curies_pr149
+biopragmatics_curies_pr159
+biopragmatics_curies_pr164
+biopragmatics_curies_pr167
+biopragmatics_curies_pr172
+biopragmatics_curies_pr187
+biopragmatics_curies_pr191
+biopragmatics_curies_pr199
+biopragmatics_curies_pr2
+biopragmatics_curies_pr200
+biopragmatics_curies_pr204
+blackducksoftware_hub-rest-api-python_pr101
+blackducksoftware_hub-rest-api-python_pr107
+blackducksoftware_hub-rest-api-python_pr111
+blackducksoftware_hub-rest-api-python_pr114
+blackducksoftware_hub-rest-api-python_pr120
+blackducksoftware_hub-rest-api-python_pr121
+blackducksoftware_hub-rest-api-python_pr127
+blackducksoftware_hub-rest-api-python_pr140
+blackducksoftware_hub-rest-api-python_pr141
+blackducksoftware_hub-rest-api-python_pr143
+blackducksoftware_hub-rest-api-python_pr145
+blackducksoftware_hub-rest-api-python_pr148
+blackducksoftware_hub-rest-api-python_pr149
+blackducksoftware_hub-rest-api-python_pr152
+blackducksoftware_hub-rest-api-python_pr155
+blackducksoftware_hub-rest-api-python_pr157
+blackducksoftware_hub-rest-api-python_pr158
+blackducksoftware_hub-rest-api-python_pr169
+blackducksoftware_hub-rest-api-python_pr181
+blackducksoftware_hub-rest-api-python_pr182
+blackducksoftware_hub-rest-api-python_pr194
+blackducksoftware_hub-rest-api-python_pr195
+blackducksoftware_hub-rest-api-python_pr205
+blackducksoftware_hub-rest-api-python_pr208
+blackducksoftware_hub-rest-api-python_pr213
+blackducksoftware_hub-rest-api-python_pr222
+blackducksoftware_hub-rest-api-python_pr226
+blackducksoftware_hub-rest-api-python_pr229
+blackducksoftware_hub-rest-api-python_pr232
+blackducksoftware_hub-rest-api-python_pr234
+blackducksoftware_hub-rest-api-python_pr246
+blackducksoftware_hub-rest-api-python_pr261
+blackducksoftware_hub-rest-api-python_pr262
+blackducksoftware_hub-rest-api-python_pr271
+blackducksoftware_hub-rest-api-python_pr282
+blackducksoftware_hub-rest-api-python_pr284
+blackducksoftware_hub-rest-api-python_pr285
+blackducksoftware_hub-rest-api-python_pr286
+blackducksoftware_hub-rest-api-python_pr291
+blackducksoftware_hub-rest-api-python_pr60
+blackducksoftware_hub-rest-api-python_pr62
+blackducksoftware_hub-rest-api-python_pr74
+blackducksoftware_hub-rest-api-python_pr75
+blackducksoftware_hub-rest-api-python_pr77
+blackducksoftware_hub-rest-api-python_pr80
+blackducksoftware_hub-rest-api-python_pr81
+blackducksoftware_hub-rest-api-python_pr95
+blackducksoftware_hub-rest-api-python_pr99
+blake-r_pytest-durations_pr29
+blake-r_pytest-durations_pr34
+blambright_qstylizer_pr5
+bluesky_event-model_pr104
+bluesky_event-model_pr105
+bluesky_event-model_pr113
+bluesky_event-model_pr116
+bluesky_event-model_pr117
+bluesky_event-model_pr118
+bluesky_event-model_pr122
+bluesky_event-model_pr131
+bluesky_event-model_pr133
+bluesky_event-model_pr139
+bluesky_event-model_pr158
+bluesky_event-model_pr159
+bluesky_event-model_pr161
+bluesky_event-model_pr162
+bluesky_event-model_pr166
+bluesky_event-model_pr178
+bluesky_event-model_pr179
+bluesky_event-model_pr184
+bluesky_event-model_pr192
+bluesky_event-model_pr195
+bluesky_event-model_pr210
+bluesky_event-model_pr212
+bluesky_event-model_pr222
+bluesky_event-model_pr24
+bluesky_event-model_pr247
+bluesky_event-model_pr257
+bluesky_event-model_pr258
+bluesky_event-model_pr264
+bluesky_event-model_pr272
+bluesky_event-model_pr273
+bluesky_event-model_pr275
+bluesky_event-model_pr277
+bluesky_event-model_pr28
+bluesky_event-model_pr289
+bluesky_event-model_pr29
+bluesky_event-model_pr316
+bluesky_event-model_pr33
+bluesky_event-model_pr40
+bluesky_event-model_pr41
+bluesky_event-model_pr43
+bluesky_event-model_pr59
+bluesky_event-model_pr65
+bluesky_event-model_pr67
+bluesky_event-model_pr79
+bluesky_event-model_pr90
+bluesky_event-model_pr92
+bluesky_event-model_pr95
+bluetooth-devices_aiooui_pr33
+bluetooth-devices_aiooui_pr5
+bluetooth-devices_bleak-retry-connector_pr57
+bluetooth-devices_bleak-retry-connector_pr58
+bluetooth-devices_bleak-retry-connector_pr61
+bluetooth-devices_bleak-retry-connector_pr67
+bluetooth-devices_bleak-retry-connector_pr68
+bluetooth-devices_bleak-retry-connector_pr72
+bluetooth-devices_bleak-retry-connector_pr74
+bluetooth-devices_bluetooth-adapters_pr102
+bluetooth-devices_bluetooth-adapters_pr105
+bluetooth-devices_bluetooth-adapters_pr19
+bluetooth-devices_bluetooth-adapters_pr21
+bluetooth-devices_bluetooth-adapters_pr34
+bluetooth-devices_bluetooth-adapters_pr57
+bluetooth-devices_bluetooth-adapters_pr71
+bluetooth-devices_bluetooth-adapters_pr89
+bluetooth-devices_bluetooth-auto-recovery_pr13
+bluetooth-devices_bluetooth-auto-recovery_pr15
+bluetooth-devices_bluetooth-auto-recovery_pr18
+bluetooth-devices_bluetooth-auto-recovery_pr2
+bluetooth-devices_bluetooth-auto-recovery_pr24
+bluetooth-devices_bluetooth-auto-recovery_pr25
+bluetooth-devices_bluetooth-auto-recovery_pr26
+bluetooth-devices_bluetooth-auto-recovery_pr27
+bluetooth-devices_bluetooth-auto-recovery_pr31
+bluetooth-devices_bluetooth-auto-recovery_pr33
+bluetooth-devices_bluetooth-auto-recovery_pr34
+bluetooth-devices_bluetooth-auto-recovery_pr5
+bluetooth-devices_bluetooth-auto-recovery_pr89
+bluetooth-devices_bluetooth-auto-recovery_pr9
+bluetooth-devices_cached-ipaddress_pr26
+bluetooth-devices_habluetooth_pr153
+bluetooth-devices_habluetooth_pr155
+bluetooth-devices_ulid-transform_pr18
+bobthemighty_punq_pr10
+bobthemighty_punq_pr191
+bottlepy_bottle_pr1246
+bottlepy_bottle_pr1354
+bottlepy_bottle_pr1459
+bottlepy_bottle_pr550
+bottlepy_bottle_pr673
+bottlepy_bottle_pr716
+bottlepy_bottle_pr778
+bottlepy_bottle_pr787
+box_box-python-sdk_pr705
+box_box-python-sdk_pr710
+box_box-python-sdk_pr716
+bqplot_bqplot_pr1017
+bqplot_bqplot_pr1032
+bqplot_bqplot_pr1047
+bqplot_bqplot_pr1059
+bqplot_bqplot_pr1064
+bqplot_bqplot_pr1084
+bqplot_bqplot_pr1311
+bqplot_bqplot_pr1320
+bqplot_bqplot_pr1335
+bqplot_bqplot_pr1364
+bqplot_bqplot_pr1365
+bqplot_bqplot_pr1366
+bqplot_bqplot_pr1382
+bqplot_bqplot_pr750
+bqplot_bqplot_pr755
+bqplot_bqplot_pr772
+bqplot_bqplot_pr807
+bqplot_bqplot_pr811
+bqplot_bqplot_pr828
+bqplot_bqplot_pr835
+bqplot_bqplot_pr837
+bqplot_bqplot_pr861
+bqplot_bqplot_pr870
+bqplot_bqplot_pr909
+bqplot_bqplot_pr914
+bqplot_bqplot_pr968
+bqplot_bqplot_pr974
+bqplot_bqplot_pr976
+bqplot_bqplot_pr980
+bqplot_bqplot_pr998
+brack3t_django-braces_pr275
+brack3t_django-braces_pr286
+brack3t_django-braces_pr305
+brandon-rhodes_python-skyfield_pr49
+brandon-rhodes_python-skyfield_pr51
+breid48_cacheing_pr16
+breid48_cacheing_pr20
+breid48_cacheing_pr26
+breid48_cacheing_pr5
+breid48_cacheing_pr9
+brentvollebregt_auto-py-to-exe_pr456
+bretello_pdbpp_pr28
+brettcannon_gidgethub_pr122
+brettcannon_gidgethub_pr131
+brettcannon_gidgethub_pr134
+brettcannon_gidgethub_pr14
+brettcannon_gidgethub_pr160
+brettcannon_gidgethub_pr170
+brettcannon_gidgethub_pr174
+brettcannon_gidgethub_pr18
+brettcannon_gidgethub_pr184
+brettcannon_gidgethub_pr215
+brettcannon_gidgethub_pr225
+brettcannon_gidgethub_pr31
+brettcannon_gidgethub_pr32
+brettcannon_gidgethub_pr34
+brettcannon_gidgethub_pr35
+brettcannon_gidgethub_pr37
+brettcannon_gidgethub_pr38
+brettcannon_gidgethub_pr5
+brettcannon_gidgethub_pr50
+brettcannon_gidgethub_pr51
+brettcannon_gidgethub_pr57
+brettcannon_gidgethub_pr62
+brettcannon_gidgethub_pr68
+bridgecrewio_jsonpath-ng_pr2
+bridgecrewio_python-hcl2_pr17
+bridgecrewio_python-hcl2_pr18
+bridgecrewio_python-hcl2_pr27
+bridgecrewio_python-hcl2_pr29
+bridgecrewio_python-hcl2_pr32
+brightway-lca_brightway2-calc_pr128
+brightway-lca_brightway2-data_pr207
+brightway-lca_brightway2-data_pr246
+browserbase_stagehand-python_pr12
+btubbs_sseclient_pr35
+btubbs_sseclient_pr64
+bufbuild_protovalidate-python_pr112
+bufbuild_protovalidate-python_pr174
+bufbuild_protovalidate-python_pr217
+bufbuild_protovalidate-python_pr308
+bufbuild_protovalidate-python_pr317
+bufbuild_protovalidate-python_pr319
+bufbuild_protovalidate-python_pr32
+bufbuild_protovalidate-python_pr321
+bufbuild_protovalidate-python_pr323
+bufbuild_protovalidate-python_pr325
+bufbuild_protovalidate-python_pr338
+bufbuild_protovalidate-python_pr346
+bufbuild_protovalidate-python_pr348
+bufbuild_protovalidate-python_pr358
+bufbuild_protovalidate-python_pr359
+bufbuild_protovalidate-python_pr360
+bufbuild_protovalidate-python_pr363
+bufbuild_protovalidate-python_pr364
+bufbuild_protovalidate-python_pr370
+bufbuild_protovalidate-python_pr64
+buildkite_test-collector-python_pr12
+buildkite_test-collector-python_pr2
+buildkite_test-collector-python_pr32
+buildkite_test-collector-python_pr38
+buildkite_test-collector-python_pr44
+buildkite_test-collector-python_pr58
+buildkite_test-collector-python_pr61
+buildkite_test-collector-python_pr65
+buildkite_test-collector-python_pr67
+buildkite_test-collector-python_pr69
+buildkite_test-collector-python_pr71
+buriy_python-readability_pr190
+burnash_gspread_pr1004
+burnash_gspread_pr1008
+burnash_gspread_pr1010
+burnash_gspread_pr1012
+burnash_gspread_pr1013
+burnash_gspread_pr1021
+burnash_gspread_pr1030
+burnash_gspread_pr1040
+burnash_gspread_pr1042
+burnash_gspread_pr1047
+burnash_gspread_pr1049
+burnash_gspread_pr1063
+burnash_gspread_pr1077
+burnash_gspread_pr1092
+burnash_gspread_pr1095
+burnash_gspread_pr1115
+burnash_gspread_pr1119
+burnash_gspread_pr1138
+burnash_gspread_pr1140
+burnash_gspread_pr1189
+burnash_gspread_pr1199
+burnash_gspread_pr1207
+burnash_gspread_pr1211
+burnash_gspread_pr1215
+burnash_gspread_pr1225
+burnash_gspread_pr1233
+burnash_gspread_pr1256
+burnash_gspread_pr1269
+burnash_gspread_pr1271
+burnash_gspread_pr1274
+burnash_gspread_pr1277
+burnash_gspread_pr1278
+burnash_gspread_pr1291
+burnash_gspread_pr1299
+burnash_gspread_pr1301
+burnash_gspread_pr1305
+burnash_gspread_pr1308
+burnash_gspread_pr1324
+burnash_gspread_pr1333
+burnash_gspread_pr1335
+burnash_gspread_pr1357
+burnash_gspread_pr1364
+burnash_gspread_pr1384
+burnash_gspread_pr1392
+burnash_gspread_pr1397
+burnash_gspread_pr1402
+burnash_gspread_pr1404
+burnash_gspread_pr1415
+burnash_gspread_pr1417
+burnash_gspread_pr1427
+burnash_gspread_pr1448
+burnash_gspread_pr1458
+burnash_gspread_pr1461
+burnash_gspread_pr1463
+burnash_gspread_pr1469
+burnash_gspread_pr1475
+burnash_gspread_pr1477
+burnash_gspread_pr1487
+burnash_gspread_pr1498
+burnash_gspread_pr1531
+burnash_gspread_pr941
+burnash_gspread_pr945
+burnash_gspread_pr948
+burnash_gspread_pr954
+burnash_gspread_pr956
+burnash_gspread_pr967
+burnash_gspread_pr979
+burnash_gspread_pr982
+burnash_gspread_pr984
+burnash_gspread_pr990
+burnash_gspread_pr992
+businho_pytest-ruff_pr25
+butler54_mdformat-frontmatter_pr5
+bxparks_bigquery-schema-generator_pr99
+c2nes_javalang_pr23
+c4deszes_ldfparser_pr106
+c4deszes_ldfparser_pr108
+c4deszes_ldfparser_pr11
+c4deszes_ldfparser_pr114
+c4deszes_ldfparser_pr116
+c4deszes_ldfparser_pr135
+c4deszes_ldfparser_pr139
+c4deszes_ldfparser_pr15
+c4deszes_ldfparser_pr16
+c4deszes_ldfparser_pr40
+c4deszes_ldfparser_pr59
+c4deszes_ldfparser_pr62
+c4deszes_ldfparser_pr67
+c4deszes_ldfparser_pr75
+c4deszes_ldfparser_pr76
+c4deszes_ldfparser_pr80
+c4deszes_ldfparser_pr90
+c4deszes_ldfparser_pr94
+c4deszes_ldfparser_pr97
+calmjs_calmjs.parse_pr41
+calmjs_calmjs.parse_pr44
+canimus_cuallee_pr13
+canimus_cuallee_pr14
+canimus_cuallee_pr17
+canimus_cuallee_pr18
+canimus_cuallee_pr20
+canimus_cuallee_pr27
+canimus_cuallee_pr28
+canimus_cuallee_pr8
+canonical_operator_pr1000
+canonical_operator_pr1001
+canonical_operator_pr1005
+canonical_operator_pr101
+canonical_operator_pr1013
+canonical_operator_pr1014
+canonical_operator_pr1017
+canonical_operator_pr1018
+canonical_operator_pr1024
+canonical_operator_pr1028
+canonical_operator_pr1032
+canonical_operator_pr1038
+canonical_operator_pr1041
+canonical_operator_pr1048
+canonical_operator_pr1049
+canonical_operator_pr1053
+canonical_operator_pr1054
+canonical_operator_pr1057
+canonical_operator_pr1067
+canonical_operator_pr1068
+canonical_operator_pr107
+canonical_operator_pr1074
+canonical_operator_pr1076
+canonical_operator_pr108
+canonical_operator_pr1082
+canonical_operator_pr1084
+canonical_operator_pr1086
+canonical_operator_pr1087
+canonical_operator_pr109
+canonical_operator_pr1091
+canonical_operator_pr110
+canonical_operator_pr1100
+canonical_operator_pr1106
+canonical_operator_pr1107
+canonical_operator_pr1111
+canonical_operator_pr1114
+canonical_operator_pr1122
+canonical_operator_pr1124
+canonical_operator_pr1134
+canonical_operator_pr1138
+canonical_operator_pr114
+canonical_operator_pr1142
+canonical_operator_pr1146
+canonical_operator_pr1147
+canonical_operator_pr1150
+canonical_operator_pr1151
+canonical_operator_pr1152
+canonical_operator_pr1155
+canonical_operator_pr1167
+canonical_operator_pr1170
+canonical_operator_pr1176
+canonical_operator_pr1181
+canonical_operator_pr1183
+canonical_operator_pr1189
+canonical_operator_pr1197
+canonical_operator_pr1209
+canonical_operator_pr121
+canonical_operator_pr1215
+canonical_operator_pr1247
+canonical_operator_pr1248
+canonical_operator_pr1267
+canonical_operator_pr1268
+canonical_operator_pr1281
+canonical_operator_pr129
+canonical_operator_pr1313
+canonical_operator_pr133
+canonical_operator_pr1338
+canonical_operator_pr1369
+canonical_operator_pr1370
+canonical_operator_pr1374
+canonical_operator_pr138
+canonical_operator_pr1381
+canonical_operator_pr1386
+canonical_operator_pr140
+canonical_operator_pr146
+canonical_operator_pr147
+canonical_operator_pr149
+canonical_operator_pr157
+canonical_operator_pr159
+canonical_operator_pr163
+canonical_operator_pr191
+canonical_operator_pr195
+canonical_operator_pr199
+canonical_operator_pr203
+canonical_operator_pr209
+canonical_operator_pr221
+canonical_operator_pr230
+canonical_operator_pr232
+canonical_operator_pr233
+canonical_operator_pr236
+canonical_operator_pr238
+canonical_operator_pr246
+canonical_operator_pr248
+canonical_operator_pr259
+canonical_operator_pr264
+canonical_operator_pr279
+canonical_operator_pr283
+canonical_operator_pr284
+canonical_operator_pr287
+canonical_operator_pr294
+canonical_operator_pr296
+canonical_operator_pr298
+canonical_operator_pr299
+canonical_operator_pr311
+canonical_operator_pr312
+canonical_operator_pr318
+canonical_operator_pr319
+canonical_operator_pr320
+canonical_operator_pr322
+canonical_operator_pr324
+canonical_operator_pr327
+canonical_operator_pr338
+canonical_operator_pr340
+canonical_operator_pr349
+canonical_operator_pr350
+canonical_operator_pr352
+canonical_operator_pr359
+canonical_operator_pr360
+canonical_operator_pr361
+canonical_operator_pr364
+canonical_operator_pr369
+canonical_operator_pr374
+canonical_operator_pr379
+canonical_operator_pr393
+canonical_operator_pr399
+canonical_operator_pr406
+canonical_operator_pr411
+canonical_operator_pr412
+canonical_operator_pr413
+canonical_operator_pr415
+canonical_operator_pr418
+canonical_operator_pr419
+canonical_operator_pr422
+canonical_operator_pr436
+canonical_operator_pr439
+canonical_operator_pr440
+canonical_operator_pr46
+canonical_operator_pr47
+canonical_operator_pr52
+canonical_operator_pr53
+canonical_operator_pr54
+canonical_operator_pr55
+canonical_operator_pr56
+canonical_operator_pr57
+canonical_operator_pr580
+canonical_operator_pr59
+canonical_operator_pr593
+canonical_operator_pr61
+canonical_operator_pr62
+canonical_operator_pr628
+canonical_operator_pr629
+canonical_operator_pr63
+canonical_operator_pr630
+canonical_operator_pr635
+canonical_operator_pr640
+canonical_operator_pr641
+canonical_operator_pr645
+canonical_operator_pr648
+canonical_operator_pr653
+canonical_operator_pr658
+canonical_operator_pr659
+canonical_operator_pr666
+canonical_operator_pr667
+canonical_operator_pr668
+canonical_operator_pr669
+canonical_operator_pr67
+canonical_operator_pr672
+canonical_operator_pr674
+canonical_operator_pr677
+canonical_operator_pr68
+canonical_operator_pr680
+canonical_operator_pr686
+canonical_operator_pr69
+canonical_operator_pr702
+canonical_operator_pr709
+canonical_operator_pr712
+canonical_operator_pr715
+canonical_operator_pr72
+canonical_operator_pr724
+canonical_operator_pr727
+canonical_operator_pr73
+canonical_operator_pr733
+canonical_operator_pr734
+canonical_operator_pr738
+canonical_operator_pr749
+canonical_operator_pr754
+canonical_operator_pr755
+canonical_operator_pr756
+canonical_operator_pr757
+canonical_operator_pr763
+canonical_operator_pr765
+canonical_operator_pr771
+canonical_operator_pr772
+canonical_operator_pr773
+canonical_operator_pr776
+canonical_operator_pr782
+canonical_operator_pr786
+canonical_operator_pr787
+canonical_operator_pr788
+canonical_operator_pr79
+canonical_operator_pr790
+canonical_operator_pr791
+canonical_operator_pr795
+canonical_operator_pr800
+canonical_operator_pr805
+canonical_operator_pr811
+canonical_operator_pr820
+canonical_operator_pr823
+canonical_operator_pr828
+canonical_operator_pr838
+canonical_operator_pr843
+canonical_operator_pr855
+canonical_operator_pr860
+canonical_operator_pr871
+canonical_operator_pr873
+canonical_operator_pr875
+canonical_operator_pr876
+canonical_operator_pr882
+canonical_operator_pr889
+canonical_operator_pr890
+canonical_operator_pr891
+canonical_operator_pr894
+canonical_operator_pr897
+canonical_operator_pr900
+canonical_operator_pr901
+canonical_operator_pr904
+canonical_operator_pr905
+canonical_operator_pr910
+canonical_operator_pr914
+canonical_operator_pr92
+canonical_operator_pr925
+canonical_operator_pr926
+canonical_operator_pr936
+canonical_operator_pr937
+canonical_operator_pr942
+canonical_operator_pr944
+canonical_operator_pr949
+canonical_operator_pr961
+canonical_operator_pr965
+canonical_operator_pr967
+canonical_operator_pr975
+canonical_operator_pr977
+canonical_operator_pr982
+canonical_operator_pr986
+canonical_operator_pr99
+canonical_operator_pr991
+canonical_operator_pr993
+canonical_operator_pr994
+canonical_operator_pr996
+canonical_operator_pr998
+canonical_pylxd_pr164
+canonical_pylxd_pr166
+canonical_pylxd_pr168
+canonical_pylxd_pr169
+canonical_pylxd_pr176
+canonical_pylxd_pr177
+canonical_pylxd_pr178
+canonical_pylxd_pr181
+canonical_pylxd_pr200
+canonical_pylxd_pr202
+canonical_pylxd_pr203
+canonical_pylxd_pr205
+canonical_pylxd_pr233
+canonical_pylxd_pr250
+canonical_pylxd_pr253
+canonical_pylxd_pr254
+canonical_pylxd_pr265
+canonical_pylxd_pr276
+canonical_pylxd_pr285
+canonical_pylxd_pr289
+canonical_pylxd_pr290
+canonical_pylxd_pr291
+canonical_pylxd_pr299
+cansarigol_pdbr_pr61
+capnproto_pycapnp_pr246
+carbonplan_xarray-schema_pr1
+carbonplan_xarray-schema_pr2
+careless25_text2digits_pr28
+carsonyl_pypac_pr5
+carsonyl_pypac_pr81
+carsonyl_pypac_pr83
+catcombo_jira2markdown_pr13
+catcombo_jira2markdown_pr15
+catcombo_jira2markdown_pr19
+catcombo_jira2markdown_pr30
+cbornet_blockbuster_pr12
+cbornet_blockbuster_pr20
+cbornet_blockbuster_pr35
+cbornet_blockbuster_pr36
+cbornet_blockbuster_pr39
+cbornet_blockbuster_pr4
+cclib_cclib_pr751
+cclib_cclib_pr770
+cclib_cclib_pr783
+cclib_cclib_pr792
+cclib_cclib_pr794
+cclib_cclib_pr831
+cclib_cclib_pr832
+cclib_cclib_pr840
+cdgriffith_puremagic_pr108
+cdgriffith_puremagic_pr113
+cdgriffith_puremagic_pr28
+censys_censys-python_pr100
+censys_censys-python_pr125
+censys_censys-python_pr147
+censys_censys-python_pr148
+censys_censys-python_pr157
+censys_censys-python_pr165
+censys_censys-python_pr172
+censys_censys-python_pr175
+censys_censys-python_pr177
+censys_censys-python_pr196
+censys_censys-python_pr207
+censys_censys-python_pr235
+censys_censys-python_pr241
+censys_censys-python_pr266
+censys_censys-python_pr267
+censys_censys-python_pr291
+censys_censys-python_pr312
+censys_censys-python_pr347
+censys_censys-python_pr384
+censys_censys-python_pr496
+censys_censys-python_pr541
+censys_censys-python_pr571
+censys_censys-python_pr655
+censys_censys-python_pr656
+censys_censys-python_pr687
+censys_censys-python_pr71
+censys_censys-python_pr91
+cerfacs-globc_icclim_pr110
+cerfacs-globc_icclim_pr129
+cerfacs-globc_icclim_pr132
+cerfacs-globc_icclim_pr135
+cerfacs-globc_icclim_pr88
+cerfacs-globc_icclim_pr89
+cesbit_pyleri_pr24
+cevans87_atools_pr7
+chargebee_chargebee-python_pr100
+chargebee_chargebee-python_pr101
+chargebee_chargebee-python_pr95
+childsish_dynamic-yaml_pr14
+childsish_dynamic-yaml_pr27
+chimpler_pyhocon_pr108
+chimpler_pyhocon_pr119
+chimpler_pyhocon_pr120
+chimpler_pyhocon_pr123
+chimpler_pyhocon_pr124
+chimpler_pyhocon_pr127
+chimpler_pyhocon_pr128
+chimpler_pyhocon_pr129
+chimpler_pyhocon_pr133
+chimpler_pyhocon_pr136
+chimpler_pyhocon_pr143
+chimpler_pyhocon_pr146
+chimpler_pyhocon_pr148
+chimpler_pyhocon_pr153
+chimpler_pyhocon_pr158
+chimpler_pyhocon_pr160
+chimpler_pyhocon_pr162
+chimpler_pyhocon_pr166
+chimpler_pyhocon_pr170
+chimpler_pyhocon_pr173
+chimpler_pyhocon_pr184
+chimpler_pyhocon_pr188
+chimpler_pyhocon_pr189
+chimpler_pyhocon_pr192
+chimpler_pyhocon_pr196
+chimpler_pyhocon_pr199
+chimpler_pyhocon_pr228
+chimpler_pyhocon_pr229
+chimpler_pyhocon_pr247
+chimpler_pyhocon_pr255
+chimpler_pyhocon_pr257
+chimpler_pyhocon_pr263
+chimpler_pyhocon_pr266
+chimpler_pyhocon_pr287
+chimpler_pyhocon_pr291
+chimpler_pyhocon_pr308
+chimpler_pyhocon_pr322
+chimpler_pyhocon_pr73
+chimpler_pyhocon_pr74
+chimpler_pyhocon_pr76
+chimpler_pyhocon_pr81
+chimpler_pyhocon_pr82
+chimpler_pyhocon_pr83
+chimpler_pyhocon_pr85
+chimpler_pyhocon_pr90
+chimpler_pyhocon_pr92
+chimpler_pyhocon_pr94
+chmp_ipytest_pr110
+choderalab_pymbar_pr513
+choderalab_pymbar_pr551
+choderalab_pymbar_pr558
+choderalab_pymbar_pr569
+chrisjsewell_pytest-notebook_pr41
+ciscorn_starlette-graphene3_pr11
+ciscorn_starlette-graphene3_pr31
+clarkduvall_serpy_pr15
+cldf_csvw_pr23
+cldf_csvw_pr29
+cldf_csvw_pr42
+clemense_yourdfpy_pr21
+clemense_yourdfpy_pr32
+clemense_yourdfpy_pr33
+clemense_yourdfpy_pr4
+clemense_yourdfpy_pr6
+click-contrib_sphinx-click_pr108
+clld_clldutils_pr93
+cloud-custodian_cel-python_pr12
+cloud-custodian_cel-python_pr130
+cloud-custodian_cel-python_pr18
+cloud-custodian_cel-python_pr36
+cloud-custodian_cel-python_pr92
+cloud-custodian_cel-python_pr96
+cloudevents_sdk-python_pr122
+cloudevents_sdk-python_pr149
+cloudevents_sdk-python_pr151
+cloudevents_sdk-python_pr173
+cloudevents_sdk-python_pr184
+cloudsmith-io_cloudsmith-cli_pr111
+cloudsmith-io_cloudsmith-cli_pr116
+cloudsmith-io_cloudsmith-cli_pr131
+cloudsmith-io_cloudsmith-cli_pr14
+cloudsmith-io_cloudsmith-cli_pr140
+cloudsmith-io_cloudsmith-cli_pr142
+cloudsmith-io_cloudsmith-cli_pr169
+cloudsmith-io_cloudsmith-cli_pr172
+cloudsmith-io_cloudsmith-cli_pr189
+cloudsmith-io_cloudsmith-cli_pr192
+cloudsmith-io_cloudsmith-cli_pr209
+cloudsmith-io_cloudsmith-cli_pr214
+cloudsmith-io_cloudsmith-cli_pr28
+cloudsmith-io_cloudsmith-cli_pr38
+cloudsmith-io_cloudsmith-cli_pr40
+cloudsmith-io_cloudsmith-cli_pr42
+cloudsmith-io_cloudsmith-cli_pr43
+cloudsmith-io_cloudsmith-cli_pr45
+cloudsmith-io_cloudsmith-cli_pr74
+cloudsmith-io_cloudsmith-cli_pr79
+cloudsmith-io_cloudsmith-cli_pr8
+cloudsmith-io_cloudsmith-cli_pr92
+cloudtools_awacs_pr159
+cloudtools_awacs_pr181
+cloudtools_awacs_pr186
+cloudtools_awacs_pr214
+cloudtools_awacs_pr248
+cloudtools_troposphere_pr1960
+cloudtools_troposphere_pr1966
+cloudtools_troposphere_pr1968
+cloudtools_troposphere_pr1980
+cloudtools_troposphere_pr1988
+cloudtools_troposphere_pr2013
+cloudtools_troposphere_pr2014
+cloudtools_troposphere_pr2018
+cloudtools_troposphere_pr2021
+cloudtools_troposphere_pr2024
+cloudtools_troposphere_pr2025
+cloudtools_troposphere_pr2027
+cloudtools_troposphere_pr2030
+cloudtools_troposphere_pr2039
+cloudtools_troposphere_pr2040
+cloudtools_troposphere_pr2041
+cloudtools_troposphere_pr2046
+cloudtools_troposphere_pr2048
+cloudtools_troposphere_pr2051
+cloudtools_troposphere_pr2055
+cloudtools_troposphere_pr2056
+cloudtools_troposphere_pr2057
+cloudtools_troposphere_pr2059
+cloudtools_troposphere_pr2064
+cloudtools_troposphere_pr2069
+cloudtools_troposphere_pr2085
+cloudtools_troposphere_pr2087
+cloudtools_troposphere_pr2088
+cloudtools_troposphere_pr2090
+cloudtools_troposphere_pr2091
+cloudtools_troposphere_pr2093
+cloudtools_troposphere_pr2097
+cloudtools_troposphere_pr2101
+cloudtools_troposphere_pr2102
+cloudtools_troposphere_pr2110
+cloudtools_troposphere_pr2120
+cloudtools_troposphere_pr2129
+cloudtools_troposphere_pr2130
+cloudtools_troposphere_pr2131
+cloudtools_troposphere_pr2133
+cloudtools_troposphere_pr2136
+cloudtools_troposphere_pr2143
+cloudtools_troposphere_pr2145
+cloudtools_troposphere_pr2156
+cloudtools_troposphere_pr2164
+cloudtools_troposphere_pr2168
+cloudtools_troposphere_pr2170
+cloudtools_troposphere_pr2171
+cloudtools_troposphere_pr2175
+cloudtools_troposphere_pr2177
+cloudtools_troposphere_pr2178
+cloudtools_troposphere_pr2179
+cloudtools_troposphere_pr2181
+cloudtools_troposphere_pr2182
+cloudtools_troposphere_pr2185
+cloudtools_troposphere_pr2191
+cloudtools_troposphere_pr2193
+cloudtools_troposphere_pr2195
+cloudtools_troposphere_pr2197
+cloudtools_troposphere_pr2200
+cloudtools_troposphere_pr2201
+cloudtools_troposphere_pr2202
+cloudtools_troposphere_pr2207
+cloudtools_troposphere_pr2211
+cloudtools_troposphere_pr2212
+cloudtools_troposphere_pr2222
+cloudtools_troposphere_pr2225
+cloudtools_troposphere_pr2230
+cloudtools_troposphere_pr2240
+cloudtools_troposphere_pr2241
+cloudtools_troposphere_pr2242
+cloudtools_troposphere_pr2244
+cloudtools_troposphere_pr2249
+cloudtools_troposphere_pr2250
+cloudtools_troposphere_pr2251
+cloudtools_troposphere_pr2254
+cloudtools_troposphere_pr2257
+cloudtools_troposphere_pr2258
+cloudtools_troposphere_pr2259
+cloudtools_troposphere_pr2263
+cloudtools_troposphere_pr2267
+cloudtools_troposphere_pr2269
+cloudtools_troposphere_pr2270
+cloudtools_troposphere_pr2271
+cloudtools_troposphere_pr2272
+cloudtools_troposphere_pr2278
+cloudtools_troposphere_pr2285
+cloudtools_troposphere_pr2286
+cloudtools_troposphere_pr2289
+cloudtools_troposphere_pr2297
+cloudtools_troposphere_pr2301
+cloudtools_troposphere_pr2311
+cloudtools_troposphere_pr2316
+cloudtools_troposphere_pr2317
+cloudtools_troposphere_pr2319
+cloudtools_troposphere_pr2320
+cloudtools_troposphere_pr2322
+cloudtools_troposphere_pr2323
+cloudtools_troposphere_pr2326
+cloudtools_troposphere_pr2327
+cloudtools_troposphere_pr2328
+cloudtools_troposphere_pr2329
+cloudtools_troposphere_pr2331
+cloudtools_troposphere_pr2332
+cloudtools_troposphere_pr2335
+cloudtools_troposphere_pr2336
+cloudtools_troposphere_pr2337
+cloudtools_troposphere_pr2338
+cloudtools_troposphere_pr2340
+cobrateam_django-htmlmin_pr122
+cobrateam_django-htmlmin_pr150
+cobrateam_django-htmlmin_pr99
+cocotb_cocotb_pr1619
+cocotb_cocotb_pr1620
+cocotb_cocotb_pr1635
+cocotb_cocotb_pr1644
+cocotb_cocotb_pr1646
+cocotb_cocotb_pr1692
+cocotb_cocotb_pr1714
+cocotb_cocotb_pr1723
+cocotb_cocotb_pr1725
+cocotb_cocotb_pr1743
+cocotb_cocotb_pr1752
+cocotb_cocotb_pr1760
+cocotb_cocotb_pr1780
+codingjoe_django-stdimage_pr191
+codingjoe_django-stdimage_pr217
+codingjoe_django-stdimage_pr225
+codingjoe_django-stdimage_pr324
+codrsquad_setupmeta_pr64
+codrsquad_setupmeta_pr81
+codrsquad_setupmeta_pr83
+codrsquad_setupmeta_pr91
+cogeotiff_rio-cogeo_pr14
+cogeotiff_rio-cogeo_pr239
+cogeotiff_rio-cogeo_pr252
+cogeotiff_rio-cogeo_pr255
+cogeotiff_rio-cogeo_pr260
+cogeotiff_rio-cogeo_pr278
+cogeotiff_rio-cogeo_pr279
+cogeotiff_rio-cogeo_pr283
+cogeotiff_rio-cogeo_pr285
+cogeotiff_rio-cogeo_pr293
+cogeotiff_rio-cogeo_pr294
+cogeotiff_rio-cogeo_pr305
+cogeotiff_rio-cogeo_pr37
+cogeotiff_rio-cogeo_pr44
+cogeotiff_rio-cogeo_pr57
+cogeotiff_rio-cogeo_pr61
+cogeotiff_rio-cogeo_pr65
+cohere-ai_cohere-compass-sdk_pr101
+cohere-ai_cohere-compass-sdk_pr108
+cohere-ai_cohere-compass-sdk_pr110
+cohere-ai_cohere-compass-sdk_pr116
+cohere-ai_cohere-compass-sdk_pr50
+cohere-ai_cohere-compass-sdk_pr53
+cohere-ai_cohere-compass-sdk_pr57
+cohere-ai_cohere-compass-sdk_pr58
+cohere-ai_cohere-compass-sdk_pr63
+cohere-ai_cohere-compass-sdk_pr70
+cohere-ai_cohere-compass-sdk_pr71
+cohere-ai_cohere-compass-sdk_pr74
+cohere-ai_cohere-compass-sdk_pr76
+cohere-ai_cohere-compass-sdk_pr79
+cohere-ai_cohere-compass-sdk_pr83
+cohere-ai_cohere-compass-sdk_pr87
+cohere-ai_cohere-compass-sdk_pr88
+cohere-ai_cohere-compass-sdk_pr98
+cohere-ai_cohere-compass-sdk_pr99
+coinbase_coinbase-advanced-py_pr18
+commit-check_commit-check_pr244
+commit-check_commit-check_pr276
+commit-check_commit-check_pr292
+commit-check_commit-check_pr299
+commit-check_commit-check_pr304
+commit-check_commit-check_pr305
+commit-check_commit-check_pr50
+commit-check_commit-check_pr51
+commit-check_commit-check_pr60
+commit-check_commit-check_pr73
+common-workflow-language_cwl-utils_pr101
+common-workflow-language_cwl-utils_pr102
+common-workflow-language_cwl-utils_pr117
+common-workflow-language_cwl-utils_pr132
+common-workflow-language_cwl-utils_pr144
+common-workflow-language_cwl-utils_pr145
+common-workflow-language_cwl-utils_pr146
+common-workflow-language_cwl-utils_pr165
+common-workflow-language_cwl-utils_pr191
+common-workflow-language_cwl-utils_pr192
+common-workflow-language_cwl-utils_pr193
+common-workflow-language_cwl-utils_pr196
+common-workflow-language_cwl-utils_pr199
+common-workflow-language_cwl-utils_pr206
+common-workflow-language_cwl-utils_pr223
+common-workflow-language_cwl-utils_pr247
+common-workflow-language_cwl-utils_pr267
+common-workflow-language_cwl-utils_pr297
+common-workflow-language_cwl-utils_pr329
+common-workflow-language_cwl-utils_pr343
+common-workflow-language_cwl-utils_pr345
+compas-dev_compas_pr1078
+compas-dev_compas_pr1084
+compas-dev_compas_pr1088
+compas-dev_compas_pr1090
+compas-dev_compas_pr1093
+compas-dev_compas_pr1098
+compas-dev_compas_pr1104
+compas-dev_compas_pr1106
+compas-dev_compas_pr1113
+compas-dev_compas_pr1118
+compas-dev_compas_pr1123
+compas-dev_compas_pr1124
+compas-dev_compas_pr1129
+compas-dev_compas_pr1130
+compas-dev_compas_pr1131
+compas-dev_compas_pr1137
+compas-dev_compas_pr1144
+compas-dev_compas_pr1146
+compas-dev_compas_pr1150
+compas-dev_compas_pr1152
+compas-dev_compas_pr1157
+compas-dev_compas_pr1162
+compas-dev_compas_pr1163
+compas-dev_compas_pr1170
+compas-dev_compas_pr1172
+compas-dev_compas_pr1174
+compas-dev_compas_pr1316
+compas-dev_compas_pr327
+compas-dev_compas_pr328
+compas-dev_compas_pr331
+compas-dev_compas_pr332
+compas-dev_compas_pr333
+compas-dev_compas_pr339
+compas-dev_compas_pr347
+compas-dev_compas_pr365
+compas-dev_compas_pr370
+compas-dev_compas_pr371
+compas-dev_compas_pr372
+compas-dev_compas_pr373
+compas-dev_compas_pr374
+compas-dev_compas_pr376
+compas-dev_compas_pr378
+compas-dev_compas_pr382
+compas-dev_compas_pr386
+compas-dev_compas_pr389
+compas-dev_compas_pr390
+compas-dev_compas_pr394
+compas-dev_compas_pr395
+compas-dev_compas_pr403
+compas-dev_compas_pr404
+compas-dev_compas_pr419
+compas-dev_compas_pr420
+compas-dev_compas_pr422
+compas-dev_compas_pr528
+compas-dev_compas_pr537
+compas-dev_compas_pr541
+compas-dev_compas_pr547
+compas-dev_compas_pr550
+compas-dev_compas_pr592
+compas-dev_compas_pr596
+compas-dev_compas_pr598
+compas-dev_compas_pr602
+compas-dev_compas_pr608
+compas-dev_compas_pr611
+compas-dev_compas_pr623
+compas-dev_compas_pr634
+compas-dev_compas_pr635
+compas-dev_compas_pr638
+compas-dev_compas_pr642
+compas-dev_compas_pr651
+compas-dev_compas_pr667
+compas-dev_compas_pr668
+compas-dev_compas_pr674
+compas-dev_compas_pr680
+compas-dev_compas_pr681
+compas-dev_compas_pr686
+compas-dev_compas_pr690
+compas-dev_compas_pr708
+compas-dev_compas_pr712
+compas-dev_compas_pr731
+compas-dev_compas_pr734
+compas-dev_compas_pr735
+compas-dev_compas_pr761
+compas-dev_compas_pr764
+compas-dev_compas_pr765
+compas-dev_compas_pr770
+compas-dev_compas_pr771
+compas-dev_compas_pr774
+compas-dev_compas_pr778
+compas-dev_compas_pr780
+compas-dev_compas_pr781
+compas-dev_compas_pr782
+compas-dev_compas_pr783
+compas-dev_compas_pr785
+compas-dev_compas_pr786
+compas-dev_compas_pr790
+compas-dev_compas_pr796
+compas-dev_compas_pr799
+compas-dev_compas_pr803
+compas-dev_compas_pr804
+compas-dev_compas_pr805
+compas-dev_compas_pr814
+compas-dev_compas_pr818
+compas-dev_compas_pr820
+compas-dev_compas_pr821
+compilerla_conventional-pre-commit_pr105
+compilerla_conventional-pre-commit_pr140
+comtravo_ctparse_pr10
+comtravo_ctparse_pr104
+comtravo_ctparse_pr129
+comtravo_ctparse_pr2
+comtravo_ctparse_pr29
+comtravo_ctparse_pr30
+comtravo_ctparse_pr31
+comtravo_ctparse_pr32
+comtravo_ctparse_pr35
+comtravo_ctparse_pr37
+comtravo_ctparse_pr39
+comtravo_ctparse_pr40
+comtravo_ctparse_pr41
+comtravo_ctparse_pr46
+comtravo_ctparse_pr47
+comtravo_ctparse_pr58
+comtravo_ctparse_pr60
+comtravo_ctparse_pr61
+comtravo_ctparse_pr62
+comtravo_ctparse_pr63
+comtravo_ctparse_pr7
+comtravo_ctparse_pr70
+comtravo_ctparse_pr71
+configcat_python-sdk_pr15
+configcat_python-sdk_pr16
+configcat_python-sdk_pr17
+configcat_python-sdk_pr19
+configcat_python-sdk_pr25
+configcat_python-sdk_pr32
+configcat_python-sdk_pr35
+configcat_python-sdk_pr37
+configcat_python-sdk_pr38
+configcat_python-sdk_pr40
+configcat_python-sdk_pr43
+configcat_python-sdk_pr46
+configcat_python-sdk_pr8
+configcat_python-sdk_pr9
+containerbuildsystem_dockerfile-parse_pr110
+containerbuildsystem_dockerfile-parse_pr119
+containerbuildsystem_dockerfile-parse_pr5
+containerbuildsystem_dockerfile-parse_pr56
+containerbuildsystem_dockerfile-parse_pr60
+containerbuildsystem_dockerfile-parse_pr65
+containerbuildsystem_dockerfile-parse_pr92
+containers_podman-py_pr19
+containers_podman-py_pr37
+containers_podman-py_pr41
+containers_podman-py_pr44
+containers_podman-py_pr46
+containers_podman-py_pr52
+contentful_contentful-management.py_pr119
+contentful_contentful-management.py_pr28
+contentful_contentful-management.py_pr32
+contentful_contentful-management.py_pr33
+contentful_rich-text-renderer.py_pr13
+contentful_rich-text-renderer.py_pr4
+cookiecutter_cookiecutter_pr1200
+cookiecutter_cookiecutter_pr1284
+cookiecutter_cookiecutter_pr1468
+cookiecutter_cookiecutter_pr1485
+cookiecutter_cookiecutter_pr1493
+cookiecutter_cookiecutter_pr1496
+cookiecutter_cookiecutter_pr1542
+cookiecutter_cookiecutter_pr1545
+cookiecutter_cookiecutter_pr1546
+cookiecutter_cookiecutter_pr1569
+cookiecutter_cookiecutter_pr1621
+cookiecutter_cookiecutter_pr1626
+cookiecutter_cookiecutter_pr1651
+cookiecutter_cookiecutter_pr1669
+cookiecutter_cookiecutter_pr1679
+cookiecutter_cookiecutter_pr1689
+cookiecutter_cookiecutter_pr1692
+cookiecutter_cookiecutter_pr1706
+cookiecutter_cookiecutter_pr1716
+cookiecutter_cookiecutter_pr1719
+cookiecutter_cookiecutter_pr1721
+cookiecutter_cookiecutter_pr1758
+cookiecutter_cookiecutter_pr1770
+cookiecutter_cookiecutter_pr1779
+cookiecutter_cookiecutter_pr1866
+cookiecutter_cookiecutter_pr1881
+cookiecutter_cookiecutter_pr1901
+cookiecutter_cookiecutter_pr1903
+cookiecutter_cookiecutter_pr1920
+cookiecutter_cookiecutter_pr1923
+cookiecutter_cookiecutter_pr1924
+cookiecutter_cookiecutter_pr1942
+cookiecutter_cookiecutter_pr1950
+cookiecutter_cookiecutter_pr1981
+cookiecutter_cookiecutter_pr1995
+cookiecutter_cookiecutter_pr1997
+cookiecutter_cookiecutter_pr2010
+cookiecutter_cookiecutter_pr2015
+cookiecutter_cookiecutter_pr2020
+cookiecutter_cookiecutter_pr2029
+cookiecutter_cookiecutter_pr2051
+cookiecutter_cookiecutter_pr2054
+cookiecutter_cookiecutter_pr2060
+cookiecutter_cookiecutter_pr2171
+corenting_immutabledict_pr244
+corenting_immutabledict_pr307
+corteva_geocube_pr101
+corteva_geocube_pr112
+corteva_geocube_pr119
+corteva_geocube_pr122
+corteva_geocube_pr171
+corteva_geocube_pr180
+corteva_geocube_pr95
+corydolphin_flask-cors_pr272
+corydolphin_flask-cors_pr318
+corydolphin_flask-cors_pr363
+corydolphin_flask-cors_pr390
+corydolphin_flask-cors_pr391
+cphyc_matplotlib-label-lines_pr153
+cphyc_matplotlib-label-lines_pr22
+cphyc_matplotlib-label-lines_pr26
+cphyc_matplotlib-label-lines_pr59
+cphyc_matplotlib-label-lines_pr8
+craffel_pretty-midi_pr222
+crate_sqlalchemy-cratedb_pr140
+crate_sqlalchemy-cratedb_pr203
+crflynn_pbspark_pr15
+crflynn_pbspark_pr18
+crflynn_pbspark_pr33
+crflynn_pbspark_pr39
+cronofy_pycronofy_pr102
+cronofy_pycronofy_pr107
+cronofy_pycronofy_pr17
+cronofy_pycronofy_pr2
+cronofy_pycronofy_pr20
+cronofy_pycronofy_pr21
+cronofy_pycronofy_pr22
+cronofy_pycronofy_pr23
+cronofy_pycronofy_pr24
+cronofy_pycronofy_pr30
+cronofy_pycronofy_pr36
+cronofy_pycronofy_pr39
+cronofy_pycronofy_pr4
+cronofy_pycronofy_pr40
+cronofy_pycronofy_pr42
+cronofy_pycronofy_pr47
+cronofy_pycronofy_pr50
+cronofy_pycronofy_pr55
+cronofy_pycronofy_pr60
+cronofy_pycronofy_pr63
+cronofy_pycronofy_pr64
+cronofy_pycronofy_pr69
+cronofy_pycronofy_pr70
+cronofy_pycronofy_pr79
+cronofy_pycronofy_pr8
+cronofy_pycronofy_pr89
+cronofy_pycronofy_pr99
+crs4_repo2rocrate_pr10
+crs4_repo2rocrate_pr13
+crs4_repo2rocrate_pr14
+csparpa_pyowm_pr230
+csurfer_rake-nltk_pr59
+csurfer_rake-nltk_pr62
+cthoyt_class-resolver_pr13
+cthoyt_class-resolver_pr17
+cthoyt_class-resolver_pr19
+cthoyt_class-resolver_pr20
+cthoyt_class-resolver_pr30
+cthoyt_class-resolver_pr34
+cthoyt_class-resolver_pr36
+cthoyt_class-resolver_pr37
+cthoyt_class-resolver_pr38
+cthoyt_class-resolver_pr42
+cthoyt_class-resolver_pr43
+cthoyt_class-resolver_pr68
+cthoyt_class-resolver_pr69
+cthoyt_class-resolver_pr71
+cthoyt_class-resolver_pr74
+cthoyt_class-resolver_pr75
+cthoyt_class-resolver_pr85
+cthoyt_pystow_pr104
+cthoyt_pystow_pr108
+cthoyt_pystow_pr17
+cthoyt_pystow_pr29
+cthoyt_pystow_pr3
+cthoyt_pystow_pr34
+cthoyt_pystow_pr38
+cthoyt_pystow_pr39
+cthoyt_pystow_pr4
+cthoyt_pystow_pr42
+cthoyt_pystow_pr43
+cthoyt_pystow_pr47
+cthoyt_pystow_pr55
+cthoyt_pystow_pr56
+cthoyt_pystow_pr59
+cthoyt_pystow_pr61
+cthoyt_pystow_pr76
+cthoyt_pystow_pr80
+cucumber_cucumber-expressions_pr259
+cucumber_gherkin_pr241
+cucumber_gherkin_pr64
+cuenca-mx_clabe_pr167
+cunla_fakeredis-py_pr105
+cunla_fakeredis-py_pr109
+cunla_fakeredis-py_pr110
+cunla_fakeredis-py_pr111
+cunla_fakeredis-py_pr112
+cunla_fakeredis-py_pr127
+cunla_fakeredis-py_pr135
+cunla_fakeredis-py_pr139
+cunla_fakeredis-py_pr143
+cunla_fakeredis-py_pr147
+cunla_fakeredis-py_pr152
+cunla_fakeredis-py_pr180
+cunla_fakeredis-py_pr19
+cunla_fakeredis-py_pr202
+cunla_fakeredis-py_pr206
+cunla_fakeredis-py_pr207
+cunla_fakeredis-py_pr208
+cunla_fakeredis-py_pr223
+cunla_fakeredis-py_pr234
+cunla_fakeredis-py_pr238
+cunla_fakeredis-py_pr248
+cunla_fakeredis-py_pr257
+cunla_fakeredis-py_pr27
+cunla_fakeredis-py_pr280
+cunla_fakeredis-py_pr281
+cunla_fakeredis-py_pr303
+cunla_fakeredis-py_pr307
+cunla_fakeredis-py_pr317
+cunla_fakeredis-py_pr319
+cunla_fakeredis-py_pr41
+cunla_fakeredis-py_pr42
+cunla_fakeredis-py_pr46
+cunla_fakeredis-py_pr49
+cunla_fakeredis-py_pr74
+cunla_fakeredis-py_pr85
+da4089_simplefix_pr17
+da4089_simplefix_pr20
+daggaz_json-stream_pr11
+daggaz_json-stream_pr25
+daggaz_json-stream_pr71
+dajiaji_pyhpke_pr16
+dandi_dandi-cli_pr20
+dandi_dandi-cli_pr24
+dandi_dandi-cli_pr28
+dandi_dandi-cli_pr34
+dandi_dandi-cli_pr36
+dandi_dandischema_pr30
+dandi_dandischema_pr40
+dandi_dandischema_pr48
+dandi_dandischema_pr58
+dandi_dandischema_pr60
+dandi_dandischema_pr68
+dandi_dandischema_pr70
+dantebben_nox-uv_pr35
+dantebben_nox-uv_pr4
+dantebben_nox-uv_pr47
+dantebben_nox-uv_pr56
+dantebben_nox-uv_pr61
+dantebben_nox-uv_pr8
+dapr_python-sdk_pr84
+dapr_python-sdk_pr89
+darosior_python-bip32_pr17
+darosior_python-bip32_pr2
+darosior_python-bip32_pr23
+darosior_python-bip32_pr33
+darosior_python-bip32_pr49
+darvid_python-hyperscan_pr136
+darvid_python-hyperscan_pr70
+dask_dask-jobqueue_pr582
+dask_dask-jobqueue_pr623
+dask_dask-jobqueue_pr680
+dask_dask-jobqueue_pr690
+dask_partd_pr12
+dask_partd_pr24
+data-apis_array-api-compat_pr110
+data-apis_array-api-compat_pr126
+data-apis_array-api-compat_pr130
+data-apis_array-api-compat_pr147
+data-apis_array-api-compat_pr166
+data-apis_array-api-compat_pr174
+data-apis_array-api-compat_pr207
+data-apis_array-api-compat_pr224
+data-apis_array-api-compat_pr231
+data-apis_array-api-compat_pr238
+data-apis_array-api-compat_pr239
+data-apis_array-api-compat_pr240
+data-apis_array-api-compat_pr244
+data-apis_array-api-compat_pr249
+data-apis_array-api-compat_pr263
+data-apis_array-api-compat_pr276
+data-apis_array-api-compat_pr286
+data-apis_array-api-compat_pr290
+data-apis_array-api-compat_pr291
+data-apis_array-api-compat_pr294
+data-apis_array-api-compat_pr299
+data-apis_array-api-compat_pr303
+data-apis_array-api-compat_pr305
+data-apis_array-api-compat_pr308
+data-apis_array-api-compat_pr318
+data-apis_array-api-compat_pr76
+data-apis_array-api-compat_pr78
+data-apis_array-api-compat_pr79
+data-apis_array-api-compat_pr80
+data-apis_array-api-compat_pr94
+data-apis_array-api-compat_pr96
+davidvujic_poetry-multiproject-plugin_pr56
+davidvujic_poetry-multiproject-plugin_pr67
+davidvujic_poetry-multiproject-plugin_pr75
+dbader_schedule_pr15
+dbader_schedule_pr22
+dbader_schedule_pr28
+dbader_schedule_pr401
+dbader_schedule_pr404
+dbader_schedule_pr43
+dbader_schedule_pr46
+dbader_schedule_pr604
+dbatten5_maison_pr16
+dbatten5_maison_pr30
+dbatten5_maison_pr373
+dbatten5_maison_pr377
+dbcli_pgcli_pr608
+dbcli_pgcli_pr612
+dbcli_pgcli_pr613
+dbcli_pgcli_pr614
+dbcli_pgcli_pr619
+dbcli_pgcli_pr620
+dbcli_pgcli_pr621
+dbcli_pgcli_pr624
+dbcli_pgcli_pr633
+dbcli_pgcli_pr639
+dbcli_pgcli_pr641
+dbcli_pgcli_pr647
+dbcli_pgcli_pr649
+dbcli_pgcli_pr654
+dbcli_pgcli_pr655
+dbcli_pgcli_pr656
+dbcli_pgcli_pr659
+dbcli_pgcli_pr667
+dbcli_pgcli_pr673
+dbcli_pgcli_pr677
+dbcli_pgcli_pr687
+dbcli_pgcli_pr688
+dbcli_pgcli_pr701
+dbcli_pgcli_pr703
+dbcli_pgcli_pr706
+dbcli_pgcli_pr709
+dbcli_pgcli_pr710
+dbcli_pgcli_pr714
+dbcli_pgcli_pr715
+dbcli_pgcli_pr722
+dbcli_pgcli_pr724
+dbcli_pgcli_pr729
+dbcli_pgcli_pr750
+dbcli_pgcli_pr761
+dbcli_pgcli_pr766
+dbcli_pgcli_pr770
+dbcli_pgcli_pr771
+dbcli_pgcli_pr773
+dbcli_pgcli_pr782
+dbcli_pgcli_pr785
+dbcli_pgcli_pr798
+dbcli_pgcli_pr820
+dbcli_pgcli_pr821
+dbcli_pgcli_pr856
+dbcli_pgcli_pr861
+dbcli_pgcli_pr871
+dbcli_pgcli_pr875
+dbcli_pgcli_pr876
+dbcli_pgcli_pr877
+dbcli_pgcli_pr878
+dbcli_pgcli_pr921
+dbcli_pgcli_pr941
+dbcli_pgcli_pr942
+dbcli_pgspecial_pr131
+dbcli_pgspecial_pr136
+dbcli_pgspecial_pr137
+dbcli_pgspecial_pr150
+dbcli_pgspecial_pr65
+dbcli_pgspecial_pr79
+dbcli_pgspecial_pr80
+dbt-labs_dbt-adapters_pr119
+dbt-labs_dbt-adapters_pr126
+dbt-labs_dbt-adapters_pr165
+dbt-labs_dbt-adapters_pr179
+dbt-labs_dbt-adapters_pr197
+dbt-labs_dbt-adapters_pr217
+dbt-labs_dbt-adapters_pr231
+dbt-labs_dbt-adapters_pr236
+dbt-labs_dbt-adapters_pr244
+dbt-labs_dbt-adapters_pr247
+dbt-labs_dbt-adapters_pr260
+dbt-labs_dbt-adapters_pr282
+dbt-labs_dbt-adapters_pr300
+dbt-labs_dbt-adapters_pr350
+dbt-labs_dbt-adapters_pr368
+dbt-labs_dbt-adapters_pr43
+dbt-labs_dbt-adapters_pr44
+dbt-labs_dbt-adapters_pr78
+dbt-labs_dbt-adapters_pr91
+dbt-labs_dbt-common_pr235
+dbt-labs_dbt-common_pr291
+dbt-labs_dbt-common_pr308
+dbt-labs_dbt-common_pr311
+dbt-labs_dbt-common_pr313
+dbt-labs_dbt-common_pr314
+dbt-labs_dbt-common_pr318
+dbt-labs_dbt-common_pr323
+dbt-msft_dbt-sqlserver_pr122
+dbt-msft_dbt-sqlserver_pr141
+dbt-msft_dbt-sqlserver_pr147
+dbt-msft_dbt-sqlserver_pr151
+dbt-msft_dbt-sqlserver_pr158
+dbt-msft_dbt-sqlserver_pr231
+dchevell_flask-executor_pr12
+dchevell_flask-executor_pr2
+ddmee_polling2_pr27
+ddmee_polling2_pr8
+declaresub_abnf_pr20
+deedy5_primp_pr7
+deepghs_hfutils_pr2
+deeplook_sparklines_pr16
+deeplook_sparklines_pr2
+deeplook_sparklines_pr8
+deepset-ai_haystack-experimental_pr10
+deepset-ai_haystack-experimental_pr13
+deepset-ai_haystack-experimental_pr15
+deepset-ai_haystack-experimental_pr17
+deepset-ai_haystack-experimental_pr22
+deepset-ai_haystack-experimental_pr23
+deepset-ai_haystack-experimental_pr30
+deepset-ai_haystack-experimental_pr32
+deepset-ai_haystack-experimental_pr37
+deepset-ai_haystack-experimental_pr395
+deepset-ai_haystack-experimental_pr40
+deepset-ai_haystack-experimental_pr42
+deepset-ai_haystack-experimental_pr49
+deepset-ai_haystack-experimental_pr52
+deepset-ai_haystack-experimental_pr53
+deepset-ai_haystack-experimental_pr57
+deepset-ai_haystack-experimental_pr61
+deepset-ai_haystack-experimental_pr62
+defnull_multipart_pr30
+delta-io_delta-sharing_pr105
+delta-io_delta-sharing_pr107
+delta-io_delta-sharing_pr108
+delta-io_delta-sharing_pr111
+delta-io_delta-sharing_pr12
+delta-io_delta-sharing_pr120
+delta-io_delta-sharing_pr140
+delta-io_delta-sharing_pr142
+delta-io_delta-sharing_pr145
+delta-io_delta-sharing_pr148
+delta-io_delta-sharing_pr150
+delta-io_delta-sharing_pr151
+delta-io_delta-sharing_pr153
+delta-io_delta-sharing_pr155
+delta-io_delta-sharing_pr163
+delta-io_delta-sharing_pr181
+delta-io_delta-sharing_pr188
+delta-io_delta-sharing_pr199
+delta-io_delta-sharing_pr201
+delta-io_delta-sharing_pr207
+delta-io_delta-sharing_pr209
+delta-io_delta-sharing_pr211
+delta-io_delta-sharing_pr217
+delta-io_delta-sharing_pr235
+delta-io_delta-sharing_pr255
+delta-io_delta-sharing_pr26
+delta-io_delta-sharing_pr285
+delta-io_delta-sharing_pr30
+delta-io_delta-sharing_pr302
+delta-io_delta-sharing_pr309
+delta-io_delta-sharing_pr326
+delta-io_delta-sharing_pr333
+delta-io_delta-sharing_pr334
+delta-io_delta-sharing_pr349
+delta-io_delta-sharing_pr356
+delta-io_delta-sharing_pr36
+delta-io_delta-sharing_pr364
+delta-io_delta-sharing_pr369
+delta-io_delta-sharing_pr37
+delta-io_delta-sharing_pr384
+delta-io_delta-sharing_pr394
+delta-io_delta-sharing_pr41
+delta-io_delta-sharing_pr420
+delta-io_delta-sharing_pr421
+delta-io_delta-sharing_pr43
+delta-io_delta-sharing_pr445
+delta-io_delta-sharing_pr472
+delta-io_delta-sharing_pr478
+delta-io_delta-sharing_pr48
+delta-io_delta-sharing_pr49
+delta-io_delta-sharing_pr494
+delta-io_delta-sharing_pr527
+delta-io_delta-sharing_pr536
+delta-io_delta-sharing_pr553
+delta-io_delta-sharing_pr56
+delta-io_delta-sharing_pr578
+delta-io_delta-sharing_pr586
+delta-io_delta-sharing_pr590
+delta-io_delta-sharing_pr591
+delta-io_delta-sharing_pr603
+delta-io_delta-sharing_pr613
+delta-io_delta-sharing_pr621
+delta-io_delta-sharing_pr628
+delta-io_delta-sharing_pr653
+delta-io_delta-sharing_pr654
+delta-io_delta-sharing_pr657
+delta-io_delta-sharing_pr660
+delta-io_delta-sharing_pr670
+delta-io_delta-sharing_pr681
+delta-io_delta-sharing_pr686
+delta-io_delta-sharing_pr69
+delta-io_delta-sharing_pr693
+delta-io_delta-sharing_pr708
+delta-io_delta-sharing_pr736
+delta-io_delta-sharing_pr737
+delta-io_delta-sharing_pr743
+delta-io_delta-sharing_pr75
+delta-io_delta-sharing_pr757
+delta-io_delta-sharing_pr760
+delta-io_delta-sharing_pr763
+delta-io_delta-sharing_pr77
+delta-io_delta-sharing_pr771
+delta-io_delta-sharing_pr788
+delta-io_delta-sharing_pr791
+delta-io_delta-sharing_pr801
+delta-io_delta-sharing_pr81
+delta-io_delta-sharing_pr84
+delta-io_delta-sharing_pr92
+delta-io_delta-sharing_pr93
+demisto_demisto-sdk_pr101
+demisto_demisto-sdk_pr102
+demisto_demisto-sdk_pr115
+demisto_demisto-sdk_pr15
+demisto_demisto-sdk_pr16
+demisto_demisto-sdk_pr18
+demisto_demisto-sdk_pr26
+demisto_demisto-sdk_pr35
+demisto_demisto-sdk_pr36
+demisto_demisto-sdk_pr39
+demisto_demisto-sdk_pr4
+demisto_demisto-sdk_pr42
+demisto_demisto-sdk_pr46
+demisto_demisto-sdk_pr49
+demisto_demisto-sdk_pr54
+demisto_demisto-sdk_pr56
+demisto_demisto-sdk_pr58
+demisto_demisto-sdk_pr62
+demisto_demisto-sdk_pr64
+demisto_demisto-sdk_pr7
+demisto_demisto-sdk_pr80
+demisto_demisto-sdk_pr82
+demisto_demisto-sdk_pr84
+demisto_demisto-sdk_pr85
+demisto_demisto-sdk_pr86
+demisto_demisto-sdk_pr92
+demisto_demisto-sdk_pr99
+denisart_graphql-query_pr39
+deschler_django-modeltranslation_pr656
+deschler_django-modeltranslation_pr657
+deschler_django-modeltranslation_pr662
+deschler_django-modeltranslation_pr671
+deschler_django-modeltranslation_pr685
+deschler_django-modeltranslation_pr687
+deschler_django-modeltranslation_pr735
+deschler_django-modeltranslation_pr739
+deschler_django-modeltranslation_pr782
+deschler_django-modeltranslation_pr783
+deschler_django-modeltranslation_pr794
+dev-petrov_pytest-lazy-fixtures_pr40
+dev-petrov_pytest-lazy-fixtures_pr41
+dev-petrov_pytest-lazy-fixtures_pr44
+developmentseed_cogeo-mosaic_pr183
+developmentseed_cogeo-mosaic_pr184
+developmentseed_cogeo-mosaic_pr185
+developmentseed_cogeo-mosaic_pr241
+developmentseed_geojson-pydantic_pr101
+developmentseed_geojson-pydantic_pr105
+developmentseed_geojson-pydantic_pr138
+developmentseed_geojson-pydantic_pr143
+developmentseed_geojson-pydantic_pr148
+developmentseed_geojson-pydantic_pr153
+developmentseed_geojson-pydantic_pr167
+developmentseed_geojson-pydantic_pr38
+developmentseed_geojson-pydantic_pr64
+developmentseed_geojson-pydantic_pr67
+developmentseed_geojson-pydantic_pr69
+developmentseed_geojson-pydantic_pr70
+developmentseed_geojson-pydantic_pr86
+developmentseed_geojson-pydantic_pr91
+developmentseed_geojson-pydantic_pr94
+developmentseed_geojson-pydantic_pr97
+developmentseed_morecantile_pr104
+developmentseed_morecantile_pr111
+developmentseed_morecantile_pr122
+developmentseed_morecantile_pr123
+developmentseed_morecantile_pr131
+developmentseed_morecantile_pr132
+developmentseed_morecantile_pr142
+developmentseed_morecantile_pr146
+developmentseed_morecantile_pr154
+developmentseed_morecantile_pr158
+developmentseed_morecantile_pr159
+developmentseed_morecantile_pr177
+developmentseed_morecantile_pr191
+developmentseed_morecantile_pr192
+developmentseed_morecantile_pr68
+developmentseed_morecantile_pr72
+developmentseed_morecantile_pr74
+developmentseed_morecantile_pr82
+developmentseed_morecantile_pr84
+developmentseed_morecantile_pr93
+developmentseed_morecantile_pr94
+developmentseed_morecantile_pr95
+developmentseed_rio-stac_pr65
+developmentseed_rio-stac_pr71
+developmentseed_starlette-cramjam_pr4
+devrimcavusoglu_pybboxes_pr19
+devrimcavusoglu_pybboxes_pr24
+dhatim_python-license-check_pr103
+dhatim_python-license-check_pr94
+dhermes_bezier_pr176
+dhermes_bezier_pr191
+dhermes_bezier_pr194
+dhermes_bezier_pr208
+dhermes_bezier_pr233
+dhermes_bezier_pr259
+dhermes_bezier_pr265
+dhermes_bezier_pr267
+dhermes_bezier_pr319
+di_id_pr149
+di_pip-api_pr109
+di_pip-api_pr99
+didix21_mdutils_pr27
+didix21_mdutils_pr45
+didix21_mdutils_pr61
+digitalocean_pydo_pr20
+digitalocean_pydo_pr34
+digitalocean_pydo_pr38
+digitalocean_pydo_pr43
+dimastbk_python-calamine_pr51
+disqus_django-bitfield_pr104
+diyan_pywinrm_pr132
+diyan_pywinrm_pr186
+diyan_pywinrm_pr202
+diyan_pywinrm_pr213
+diyan_pywinrm_pr222
+diyan_pywinrm_pr262
+django-cas-ng_django-cas-ng_pr187
+django-cas-ng_django-cas-ng_pr197
+django-cas-ng_django-cas-ng_pr222
+django-cas-ng_django-cas-ng_pr247
+django-cas-ng_django-cas-ng_pr259
+django-commons_django-cookie-consent_pr81
+django-commons_django-fsm-2_pr42
+django-commons_django-fsm-2_pr54
+django-crispy-forms_crispy-bootstrap5_pr107
+django-crispy-forms_crispy-bootstrap5_pr113
+django-crispy-forms_crispy-bootstrap5_pr151
+django-crispy-forms_crispy-bootstrap5_pr158
+django-crispy-forms_crispy-bootstrap5_pr162
+django-crispy-forms_crispy-bootstrap5_pr180
+django-crispy-forms_crispy-bootstrap5_pr183
+django-crispy-forms_crispy-bootstrap5_pr187
+django-crispy-forms_crispy-bootstrap5_pr200
+django-crispy-forms_crispy-bootstrap5_pr31
+django-crispy-forms_crispy-bootstrap5_pr44
+django-crispy-forms_crispy-bootstrap5_pr53
+django-crispy-forms_crispy-bootstrap5_pr56
+django-crispy-forms_crispy-bootstrap5_pr63
+django-crispy-forms_crispy-bootstrap5_pr64
+django-crispy-forms_crispy-bootstrap5_pr65
+django-crispy-forms_crispy-bootstrap5_pr81
+django-crispy-forms_crispy-bootstrap5_pr93
+django-crispy-forms_django-crispy-forms_pr1008
+django-crispy-forms_django-crispy-forms_pr1029
+django-crispy-forms_django-crispy-forms_pr1032
+django-crispy-forms_django-crispy-forms_pr1091
+django-crispy-forms_django-crispy-forms_pr1099
+django-crispy-forms_django-crispy-forms_pr1114
+django-crispy-forms_django-crispy-forms_pr1116
+django-crispy-forms_django-crispy-forms_pr1123
+django-crispy-forms_django-crispy-forms_pr1130
+django-crispy-forms_django-crispy-forms_pr1155
+django-crispy-forms_django-crispy-forms_pr1157
+django-crispy-forms_django-crispy-forms_pr1159
+django-crispy-forms_django-crispy-forms_pr1190
+django-crispy-forms_django-crispy-forms_pr1195
+django-crispy-forms_django-crispy-forms_pr1224
+django-crispy-forms_django-crispy-forms_pr1225
+django-crispy-forms_django-crispy-forms_pr1226
+django-crispy-forms_django-crispy-forms_pr1229
+django-crispy-forms_django-crispy-forms_pr1230
+django-crispy-forms_django-crispy-forms_pr1231
+django-crispy-forms_django-crispy-forms_pr1262
+django-crispy-forms_django-crispy-forms_pr1286
+django-crispy-forms_django-crispy-forms_pr1289
+django-crispy-forms_django-crispy-forms_pr1293
+django-crispy-forms_django-crispy-forms_pr897
+django-crispy-forms_django-crispy-forms_pr920
+django-crispy-forms_django-crispy-forms_pr952
+django-crispy-forms_django-crispy-forms_pr966
+django-extensions_django-extensions_pr1837
+django-extensions_django-extensions_pr1869
+django-extensions_django-extensions_pr1878
+django-extensions_django-extensions_pr1914
+django-extensions_django-extensions_pr1941
+django-hijack_django-hijack_pr505
+django-hijack_django-hijack_pr528
+django-hijack_django-hijack_pr629
+django-hijack_django-hijack_pr651
+django-json-api_django-rest-framework-json-api_pr1182
+django-json-api_django-rest-framework-json-api_pr1286
+django-treebeard_django-treebeard_pr150
+django-treebeard_django-treebeard_pr158
+django-treebeard_django-treebeard_pr178
+django-treebeard_django-treebeard_pr183
+django-treebeard_django-treebeard_pr91
+dlwh_draccus_pr41
+dmort27_panphon_pr10
+dmort27_panphon_pr68
+docopt_docopt_pr6
+doloopwhile_pyjq_pr53
+dorthu_openapi3_pr24
+dorthu_openapi3_pr34
+dorthu_openapi3_pr35
+dorthu_openapi3_pr39
+dorthu_openapi3_pr42
+dorthu_openapi3_pr46
+dorthu_openapi3_pr57
+dpath-maintainers_dpath-python_pr106
+dpath-maintainers_dpath-python_pr169
+dpath-maintainers_dpath-python_pr181
+dpath-maintainers_dpath-python_pr22
+dpkp_kafka-python_pr1761
+dpkp_kafka-python_pr1768
+dpkp_kafka-python_pr1769
+dpkp_kafka-python_pr1781
+dpkp_kafka-python_pr1782
+dpkp_kafka-python_pr1821
+dpkp_kafka-python_pr1909
+dpkp_kafka-python_pr1912
+dpkp_kafka-python_pr1918
+dpkp_kafka-python_pr1993
+dpkp_kafka-python_pr1995
+dpkp_kafka-python_pr2038
+drgarcia1986_simple-settings_pr10
+drgarcia1986_simple-settings_pr11
+drgarcia1986_simple-settings_pr19
+drgarcia1986_simple-settings_pr20
+drgarcia1986_simple-settings_pr21
+drgarcia1986_simple-settings_pr23
+drgarcia1986_simple-settings_pr24
+drgarcia1986_simple-settings_pr6
+drgarcia1986_simple-settings_pr8
+dropbox_stone_pr307
+dropbox_stone_pr326
+dropbox_stone_pr330
+dropbox_stone_pr345
+duplocloud_duploctl_pr1
+duplocloud_duploctl_pr15
+duplocloud_duploctl_pr19
+duplocloud_duploctl_pr26
+duplocloud_duploctl_pr37
+duplocloud_duploctl_pr40
+duplocloud_duploctl_pr41
+duplocloud_duploctl_pr43
+duplocloud_duploctl_pr45
+duplocloud_duploctl_pr47
+duplocloud_duploctl_pr50
+duplocloud_duploctl_pr56
+dwavesystems_dimod_pr370
+dwavesystems_dimod_pr387
+dwavesystems_dimod_pr398
+dwavesystems_dimod_pr415
+dwavesystems_dimod_pr417
+dwavesystems_dimod_pr420
+dwavesystems_dimod_pr427
+dwavesystems_dimod_pr451
+dwavesystems_dimod_pr464
+dwavesystems_dimod_pr494
+dwavesystems_dimod_pr539
+dwavesystems_dwave-cloud-client_pr106
+dwavesystems_dwave-cloud-client_pr120
+dwavesystems_dwave-cloud-client_pr122
+dwavesystems_dwave-cloud-client_pr145
+dwavesystems_dwave-cloud-client_pr15
+dwavesystems_dwave-cloud-client_pr152
+dwavesystems_dwave-cloud-client_pr164
+dwavesystems_dwave-cloud-client_pr168
+dwavesystems_dwave-cloud-client_pr169
+dwavesystems_dwave-cloud-client_pr174
+dwavesystems_dwave-cloud-client_pr184
+dwavesystems_dwave-cloud-client_pr189
+dwavesystems_dwave-cloud-client_pr213
+dwavesystems_dwave-cloud-client_pr222
+dwavesystems_dwave-cloud-client_pr34
+dwavesystems_dwave-cloud-client_pr35
+dwavesystems_dwave-cloud-client_pr38
+dwavesystems_dwave-cloud-client_pr386
+dwavesystems_dwave-cloud-client_pr402
+dwavesystems_dwave-cloud-client_pr404
+dwavesystems_dwave-cloud-client_pr421
+dwavesystems_dwave-cloud-client_pr431
+dwavesystems_dwave-cloud-client_pr432
+dwavesystems_dwave-cloud-client_pr47
+dwavesystems_dwave-cloud-client_pr50
+dwavesystems_dwave-cloud-client_pr575
+dwavesystems_dwave-cloud-client_pr92
+dwavesystems_dwave-cloud-client_pr93
+ecies_py_pr392
+ecies_py_pr78
+ecmwf_cfgrib_pr280
+ecmwf_cfgrib_pr288
+edornd_argdantic_pr51
+eerimoq_asn1tools_pr100
+eerimoq_asn1tools_pr112
+eerimoq_asn1tools_pr137
+eerimoq_asn1tools_pr157
+eerimoq_asn1tools_pr57
+eerimoq_asn1tools_pr6
+eerimoq_asn1tools_pr74
+eerimoq_asn1tools_pr77
+eerimoq_asn1tools_pr87
+eerimoq_asn1tools_pr89
+eerkunt_terraform-compliance_pr113
+eerkunt_terraform-compliance_pr117
+eerkunt_terraform-compliance_pr118
+eerkunt_terraform-compliance_pr141
+eerkunt_terraform-compliance_pr142
+eerkunt_terraform-compliance_pr152
+eerkunt_terraform-compliance_pr169
+eerkunt_terraform-compliance_pr176
+eerkunt_terraform-compliance_pr196
+eerkunt_terraform-compliance_pr213
+eerkunt_terraform-compliance_pr286
+eerkunt_terraform-compliance_pr299
+eerkunt_terraform-compliance_pr317
+eerkunt_terraform-compliance_pr320
+eerkunt_terraform-compliance_pr352
+eerkunt_terraform-compliance_pr401
+eerkunt_terraform-compliance_pr414
+eerkunt_terraform-compliance_pr440
+eerkunt_terraform-compliance_pr444
+eerkunt_terraform-compliance_pr445
+eerkunt_terraform-compliance_pr448
+eerkunt_terraform-compliance_pr469
+eerkunt_terraform-compliance_pr513
+eerkunt_terraform-compliance_pr522
+eerkunt_terraform-compliance_pr532
+eerkunt_terraform-compliance_pr548
+eerkunt_terraform-compliance_pr553
+eerkunt_terraform-compliance_pr563
+eerkunt_terraform-compliance_pr742
+eerkunt_terraform-compliance_pr98
+eht16_python-logstash-async_pr92
+eigenein_protobuf_pr178
+eigenein_protobuf_pr191
+eigenein_protobuf_pr37
+ej2_python-quickbooks_pr19
+ej2_python-quickbooks_pr37
+ej2_python-quickbooks_pr4
+elalish_manifold_pr1005
+elalish_manifold_pr1023
+elalish_manifold_pr1033
+elalish_manifold_pr1045
+elalish_manifold_pr1055
+elalish_manifold_pr1079
+elalish_manifold_pr1080
+elalish_manifold_pr1123
+elalish_manifold_pr1167
+elalish_manifold_pr1216
+elalish_manifold_pr1219
+elalish_manifold_pr1223
+elalish_manifold_pr1246
+elalish_manifold_pr1263
+elalish_manifold_pr1273
+elalish_manifold_pr1291
+elalish_manifold_pr1332
+elalish_manifold_pr1384
+elalish_manifold_pr1391
+elalish_manifold_pr1399
+elalish_manifold_pr1401
+elalish_manifold_pr1416
+elalish_manifold_pr1423
+elalish_manifold_pr1425
+elalish_manifold_pr1427
+elalish_manifold_pr1429
+elastic_elastic-transport-python_pr100
+elastic_elastic-transport-python_pr127
+elastic_elastic-transport-python_pr137
+elastic_elastic-transport-python_pr14
+elastic_elastic-transport-python_pr143
+elastic_elastic-transport-python_pr148
+elastic_elastic-transport-python_pr26
+elastic_elastic-transport-python_pr3
+elastic_elastic-transport-python_pr30
+elastic_elastic-transport-python_pr31
+elastic_elastic-transport-python_pr4
+elastic_elastic-transport-python_pr55
+elastic_elastic-transport-python_pr57
+elastic_elastic-transport-python_pr6
+elastic_elasticsearch-py_pr1128
+elastic_elasticsearch-py_pr1176
+elastic_elasticsearch-py_pr143
+elastic_elasticsearch-py_pr2030
+elastic_elasticsearch-py_pr2039
+elastic_elasticsearch-py_pr2064
+elastic_elasticsearch-py_pr2083
+elastic_elasticsearch-py_pr2193
+elastic_elasticsearch-py_pr2299
+elastic_elasticsearch-py_pr2393
+elastic_elasticsearch-py_pr2427
+elastic_elasticsearch-py_pr2561
+elastic_elasticsearch-py_pr2581
+elastic_elasticsearch-py_pr2602
+elastic_elasticsearch-py_pr2607
+elastic_elasticsearch-py_pr2625
+elastic_elasticsearch-py_pr2632
+elastic_elasticsearch-py_pr2666
+elastic_elasticsearch-py_pr2675
+elastic_elasticsearch-py_pr3064
+elastic_elasticsearch-py_pr3078
+elastic_elasticsearch-py_pr3080
+elastic_elasticsearch-py_pr3103
+elastic_elasticsearch-py_pr3125
+elastic_elasticsearch-py_pr454
+elastic_elasticsearch-py_pr481
+elastic_elasticsearch-py_pr539
+elastic_elasticsearch-py_pr569
+elastic_elasticsearch-py_pr612
+eoda-dev_py-maplibregl_pr123
+eoda-dev_py-maplibregl_pr58
+eoda-dev_py-maplibregl_pr60
+eoda-dev_py-maplibregl_pr83
+eoda-dev_py-maplibregl_pr92
+eoda-dev_py-maplibregl_pr97
+epicserve_django-cache-url_pr11
+epicserve_django-cache-url_pr24
+erdogant_pca_pr14
+erezlife_html2docx_pr11
+erezlife_html2docx_pr21
+erezlife_html2docx_pr40
+erezsh_runtype_pr20
+erezsh_runtype_pr31
+erezsh_runtype_pr32
+erezsh_runtype_pr39
+erezsh_runtype_pr43
+erezsh_runtype_pr8
+erikbern_synchronicity_pr100
+erikbern_synchronicity_pr106
+erikbern_synchronicity_pr11
+erikbern_synchronicity_pr111
+erikbern_synchronicity_pr122
+erikbern_synchronicity_pr126
+erikbern_synchronicity_pr130
+erikbern_synchronicity_pr131
+erikbern_synchronicity_pr133
+erikbern_synchronicity_pr14
+erikbern_synchronicity_pr142
+erikbern_synchronicity_pr144
+erikbern_synchronicity_pr147
+erikbern_synchronicity_pr148
+erikbern_synchronicity_pr15
+erikbern_synchronicity_pr150
+erikbern_synchronicity_pr152
+erikbern_synchronicity_pr154
+erikbern_synchronicity_pr155
+erikbern_synchronicity_pr160
+erikbern_synchronicity_pr165
+erikbern_synchronicity_pr169
+erikbern_synchronicity_pr171
+erikbern_synchronicity_pr172
+erikbern_synchronicity_pr174
+erikbern_synchronicity_pr175
+erikbern_synchronicity_pr179
+erikbern_synchronicity_pr182
+erikbern_synchronicity_pr184
+erikbern_synchronicity_pr193
+erikbern_synchronicity_pr194
+erikbern_synchronicity_pr199
+erikbern_synchronicity_pr2
+erikbern_synchronicity_pr204
+erikbern_synchronicity_pr208
+erikbern_synchronicity_pr21
+erikbern_synchronicity_pr22
+erikbern_synchronicity_pr23
+erikbern_synchronicity_pr233
+erikbern_synchronicity_pr26
+erikbern_synchronicity_pr27
+erikbern_synchronicity_pr29
+erikbern_synchronicity_pr30
+erikbern_synchronicity_pr33
+erikbern_synchronicity_pr34
+erikbern_synchronicity_pr38
+erikbern_synchronicity_pr41
+erikbern_synchronicity_pr43
+erikbern_synchronicity_pr47
+erikbern_synchronicity_pr50
+erikbern_synchronicity_pr51
+erikbern_synchronicity_pr52
+erikbern_synchronicity_pr55
+erikbern_synchronicity_pr57
+erikbern_synchronicity_pr58
+erikbern_synchronicity_pr62
+erikbern_synchronicity_pr65
+erikbern_synchronicity_pr69
+erikbern_synchronicity_pr7
+erikbern_synchronicity_pr72
+erikbern_synchronicity_pr76
+erikbern_synchronicity_pr77
+erikbern_synchronicity_pr78
+erikbern_synchronicity_pr8
+erikbern_synchronicity_pr81
+erikbern_synchronicity_pr83
+erikbern_synchronicity_pr86
+erikbern_synchronicity_pr90
+erikbern_synchronicity_pr91
+erikbern_synchronicity_pr92
+erikbern_synchronicity_pr98
+erikbern_synchronicity_pr99
+eriwen_lcov-to-cobertura-xml_pr38
+espdev_csaps_pr10
+espdev_csaps_pr102
+espdev_csaps_pr28
+espdev_csaps_pr32
+espdev_csaps_pr47
+espdev_csaps_pr96
+esphome_aioesphomeapi_pr1038
+esphome_aioesphomeapi_pr1045
+esphome_aioesphomeapi_pr1063
+esphome_aioesphomeapi_pr1066
+esphome_aioesphomeapi_pr1082
+esphome_aioesphomeapi_pr1086
+esphome_aioesphomeapi_pr1099
+esphome_aioesphomeapi_pr1101
+esphome_aioesphomeapi_pr1109
+esphome_aioesphomeapi_pr1121
+esphome_aioesphomeapi_pr1132
+esphome_aioesphomeapi_pr1219
+esphome_aioesphomeapi_pr1237
+esphome_aioesphomeapi_pr1258
+esphome_aioesphomeapi_pr1261
+esphome_aioesphomeapi_pr1267
+esphome_aioesphomeapi_pr1304
+esphome_aioesphomeapi_pr1311
+esphome_aioesphomeapi_pr1312
+esphome_aioesphomeapi_pr1317
+esphome_aioesphomeapi_pr1333
+esphome_aioesphomeapi_pr1334
+esphome_aioesphomeapi_pr276
+esphome_aioesphomeapi_pr310
+esphome_aioesphomeapi_pr316
+esphome_aioesphomeapi_pr317
+esphome_aioesphomeapi_pr324
+esphome_aioesphomeapi_pr326
+esphome_aioesphomeapi_pr327
+esphome_aioesphomeapi_pr329
+esphome_aioesphomeapi_pr330
+esphome_aioesphomeapi_pr339
+esphome_aioesphomeapi_pr352
+esphome_aioesphomeapi_pr353
+esphome_aioesphomeapi_pr359
+esphome_aioesphomeapi_pr362
+esphome_aioesphomeapi_pr382
+esphome_aioesphomeapi_pr384
+esphome_aioesphomeapi_pr390
+esphome_aioesphomeapi_pr396
+esphome_aioesphomeapi_pr397
+esphome_aioesphomeapi_pr409
+esphome_aioesphomeapi_pr412
+esphome_aioesphomeapi_pr417
+esphome_aioesphomeapi_pr421
+esphome_aioesphomeapi_pr426
+esphome_aioesphomeapi_pr428
+esphome_aioesphomeapi_pr438
+esphome_aioesphomeapi_pr447
+esphome_aioesphomeapi_pr454
+esphome_aioesphomeapi_pr455
+esphome_aioesphomeapi_pr456
+esphome_aioesphomeapi_pr458
+esphome_aioesphomeapi_pr461
+esphome_aioesphomeapi_pr462
+esphome_aioesphomeapi_pr463
+esphome_aioesphomeapi_pr464
+esphome_aioesphomeapi_pr465
+esphome_aioesphomeapi_pr471
+esphome_aioesphomeapi_pr474
+esphome_aioesphomeapi_pr475
+esphome_aioesphomeapi_pr477
+esphome_aioesphomeapi_pr479
+esphome_aioesphomeapi_pr480
+esphome_aioesphomeapi_pr481
+esphome_aioesphomeapi_pr483
+esphome_aioesphomeapi_pr486
+esphome_aioesphomeapi_pr487
+esphome_aioesphomeapi_pr488
+esphome_aioesphomeapi_pr490
+esphome_aioesphomeapi_pr496
+esphome_aioesphomeapi_pr498
+esphome_aioesphomeapi_pr500
+esphome_aioesphomeapi_pr503
+esphome_aioesphomeapi_pr512
+esphome_aioesphomeapi_pr519
+esphome_aioesphomeapi_pr524
+esphome_aioesphomeapi_pr529
+esphome_aioesphomeapi_pr556
+esphome_aioesphomeapi_pr559
+esphome_aioesphomeapi_pr570
+esphome_aioesphomeapi_pr573
+esphome_aioesphomeapi_pr574
+esphome_aioesphomeapi_pr577
+esphome_aioesphomeapi_pr646
+esphome_aioesphomeapi_pr653
+esphome_aioesphomeapi_pr664
+esphome_aioesphomeapi_pr665
+esphome_aioesphomeapi_pr666
+esphome_aioesphomeapi_pr826
+esphome_aioesphomeapi_pr827
+esphome_aioesphomeapi_pr828
+esphome_aioesphomeapi_pr840
+esphome_aioesphomeapi_pr853
+esphome_aioesphomeapi_pr854
+esphome_aioesphomeapi_pr871
+esphome_aioesphomeapi_pr923
+esphome_aioesphomeapi_pr948
+esphome_aioesphomeapi_pr954
+esphome_aioesphomeapi_pr990
+espressif_idf-build-apps_pr103
+espressif_idf-build-apps_pr107
+espressif_idf-build-apps_pr110
+espressif_idf-build-apps_pr111
+espressif_idf-build-apps_pr112
+espressif_idf-build-apps_pr114
+espressif_idf-build-apps_pr116
+espressif_idf-build-apps_pr118
+espressif_idf-build-apps_pr120
+espressif_idf-build-apps_pr123
+espressif_idf-build-apps_pr124
+espressif_idf-build-apps_pr128
+espressif_idf-build-apps_pr130
+espressif_idf-build-apps_pr135
+espressif_idf-build-apps_pr143
+espressif_idf-build-apps_pr144
+espressif_idf-build-apps_pr145
+espressif_idf-build-apps_pr147
+espressif_idf-build-apps_pr149
+espressif_idf-build-apps_pr151
+espressif_idf-build-apps_pr152
+espressif_idf-build-apps_pr160
+espressif_idf-build-apps_pr161
+espressif_idf-build-apps_pr163
+espressif_idf-build-apps_pr164
+espressif_idf-build-apps_pr165
+espressif_idf-build-apps_pr166
+espressif_idf-build-apps_pr169
+espressif_idf-build-apps_pr171
+espressif_idf-build-apps_pr176
+espressif_idf-build-apps_pr177
+espressif_idf-build-apps_pr186
+espressif_idf-build-apps_pr76
+espressif_idf-build-apps_pr78
+espressif_idf-build-apps_pr79
+espressif_idf-build-apps_pr81
+espressif_idf-build-apps_pr83
+espressif_idf-build-apps_pr84
+espressif_idf-build-apps_pr88
+espressif_idf-build-apps_pr90
+espressif_idf-build-apps_pr91
+ethereum_eth-account_pr254
+ethereum_eth-keyfile_pr22
+ethereum_eth-keyfile_pr25
+ethereum_eth-keys_pr74
+ethereum_eth-tester_pr245
+ethereum_eth-tester_pr266
+ethereum_eth-tester_pr269
+ethereum_eth-utils_pr100
+ethereum_eth-utils_pr108
+ethereum_eth-utils_pr113
+ethereum_eth-utils_pr115
+ethereum_eth-utils_pr188
+ethereum_eth-utils_pr190
+ethereum_eth-utils_pr191
+ethereum_eth-utils_pr199
+ethereum_eth-utils_pr204
+ethereum_eth-utils_pr205
+ethereum_eth-utils_pr207
+ethereum_eth-utils_pr226
+ethereum_eth-utils_pr268
+ethereum_eth-utils_pr278
+ethereum_eth-utils_pr285
+ethereum_eth-utils_pr303
+ethereum_eth-utils_pr322
+ethereum_eth-utils_pr78
+ethereum_eth-utils_pr83
+ethereum_eth-utils_pr84
+ethereum_eth-utils_pr87
+ethereum_eth-utils_pr99
+ethereum_hexbytes_pr13
+ethereum_hexbytes_pr7
+ethereum_hexbytes_pr9
+ethereum_py-trie_pr100
+ethereum_py-trie_pr106
+ethereum_py-trie_pr110
+ethereum_py-trie_pr49
+ethereum_py-trie_pr54
+ethereum_py-trie_pr60
+ethereum_py-trie_pr77
+ethereum_py-trie_pr80
+ethereum_py-trie_pr82
+ethereum_py-trie_pr83
+ethereum_py-trie_pr84
+ethereum_py-trie_pr86
+ethereum_py-trie_pr90
+ethereum_py-trie_pr91
+ethereum_py-trie_pr93
+ethereum_py-trie_pr98
+ethereum_pyrlp_pr117
+evergreen-ci_evergreen.py_pr1
+evergreen-ci_evergreen.py_pr2
+evergreen-ci_evergreen.py_pr21
+evergreen-ci_evergreen.py_pr25
+evergreen-ci_evergreen.py_pr27
+evergreen-ci_evergreen.py_pr28
+evergreen-ci_evergreen.py_pr29
+evergreen-ci_evergreen.py_pr37
+evergreen-ci_evergreen.py_pr40
+evergreen-ci_evergreen.py_pr41
+evergreen-ci_evergreen.py_pr42
+evergreen-ci_evergreen.py_pr43
+evergreen-ci_evergreen.py_pr47
+evergreen-ci_evergreen.py_pr5
+evergreen-ci_evergreen.py_pr51
+evergreen-ci_evergreen.py_pr52
+evergreen-ci_evergreen.py_pr54
+evergreen-ci_evergreen.py_pr56
+evergreen-ci_evergreen.py_pr57
+evergreen-ci_evergreen.py_pr59
+evergreen-ci_evergreen.py_pr6
+evergreen-ci_shrub.py_pr12
+evergreen-ci_shrub.py_pr13
+evergreen-ci_shrub.py_pr14
+evergreen-ci_shrub.py_pr15
+evergreen-ci_shrub.py_pr18
+evergreen-ci_shrub.py_pr19
+evergreen-ci_shrub.py_pr27
+evidentlyai_evidently_pr117
+evidentlyai_evidently_pr122
+evidentlyai_evidently_pr127
+evidentlyai_evidently_pr129
+evidentlyai_evidently_pr134
+evidentlyai_evidently_pr141
+evidentlyai_evidently_pr142
+evidentlyai_evidently_pr144
+evidentlyai_evidently_pr146
+evidentlyai_evidently_pr147
+evidentlyai_evidently_pr148
+evidentlyai_evidently_pr151
+evidentlyai_evidently_pr152
+evidentlyai_evidently_pr153
+evidentlyai_evidently_pr158
+evidentlyai_evidently_pr162
+evidentlyai_evidently_pr282
+evidentlyai_evidently_pr284
+evidentlyai_evidently_pr289
+evidentlyai_evidently_pr291
+evidentlyai_evidently_pr301
+evidentlyai_evidently_pr304
+evidentlyai_evidently_pr308
+evidentlyai_evidently_pr312
+evidentlyai_evidently_pr313
+evidentlyai_evidently_pr316
+evidentlyai_evidently_pr336
+evidentlyai_evidently_pr339
+evidentlyai_evidently_pr340
+evidentlyai_evidently_pr341
+evidentlyai_evidently_pr348
+evidentlyai_evidently_pr352
+evidentlyai_evidently_pr357
+evidentlyai_evidently_pr360
+evidentlyai_evidently_pr361
+evidentlyai_evidently_pr363
+evidentlyai_evidently_pr364
+evidentlyai_evidently_pr366
+evidentlyai_evidently_pr367
+evidentlyai_evidently_pr373
+evidentlyai_evidently_pr380
+evidentlyai_evidently_pr381
+evidentlyai_evidently_pr391
+evidentlyai_evidently_pr400
+evidentlyai_evidently_pr404
+evidentlyai_evidently_pr405
+evidentlyai_evidently_pr406
+evidentlyai_evidently_pr408
+evidentlyai_evidently_pr418
+evidentlyai_evidently_pr422
+evidentlyai_evidently_pr424
+evidentlyai_evidently_pr430
+evidentlyai_evidently_pr441
+evidentlyai_evidently_pr444
+evidentlyai_evidently_pr445
+evidentlyai_evidently_pr453
+evidentlyai_evidently_pr454
+evidentlyai_evidently_pr455
+evidentlyai_evidently_pr456
+evidentlyai_evidently_pr458
+evidentlyai_evidently_pr463
+evidentlyai_evidently_pr472
+evidentlyai_evidently_pr474
+evidentlyai_evidently_pr499
+evidentlyai_evidently_pr502
+evidentlyai_evidently_pr504
+evidentlyai_evidently_pr505
+evidentlyai_evidently_pr517
+evidentlyai_evidently_pr520
+evidentlyai_evidently_pr521
+evidentlyai_evidently_pr528
+evidentlyai_evidently_pr532
+evidentlyai_evidently_pr533
+evidentlyai_evidently_pr536
+evidentlyai_evidently_pr537
+evidentlyai_evidently_pr542
+evidentlyai_evidently_pr545
+evidentlyai_evidently_pr546
+evidentlyai_evidently_pr554
+evidentlyai_evidently_pr557
+evidentlyai_evidently_pr558
+evidentlyai_evidently_pr563
+evidentlyai_evidently_pr564
+evidentlyai_evidently_pr566
+evidentlyai_evidently_pr567
+evidentlyai_evidently_pr569
+evidentlyai_evidently_pr574
+evidentlyai_evidently_pr580
+evidentlyai_evidently_pr583
+evidentlyai_evidently_pr585
+evidentlyai_evidently_pr586
+evidentlyai_evidently_pr587
+evidentlyai_evidently_pr593
+evidentlyai_evidently_pr601
+evidentlyai_evidently_pr617
+evidentlyai_evidently_pr622
+exasol_error-reporting-python_pr30
+exasol_error-reporting-python_pr31
+exasol_error-reporting-python_pr50
+exasol_error-reporting-python_pr64
+excitoon_gitignorefile_pr17
+excitoon_gitignorefile_pr33
+executablebooks_myst-nb_pr218
+executablebooks_myst-nb_pr219
+executablebooks_myst-nb_pr600
+executablebooks_myst-nb_pr604
+executablebooks_myst-nb_pr609
+executablebooks_myst-nb_pr620
+executablebooks_myst-nb_pr641
+executablebooks_sphinx-design_pr105
+executablebooks_sphinx-design_pr13
+executablebooks_sphinx-design_pr17
+executablebooks_sphinx-external-toc_pr14
+executablebooks_sphinx-external-toc_pr15
+executablebooks_sphinx-external-toc_pr44
+executablebooks_sphinx-panels_pr42
+explodinglabs_jsonrpcclient_pr220
+explodinglabs_jsonrpcserver_pr107
+explodinglabs_jsonrpcserver_pr108
+explodinglabs_jsonrpcserver_pr113
+explodinglabs_jsonrpcserver_pr118
+explodinglabs_jsonrpcserver_pr120
+explodinglabs_jsonrpcserver_pr123
+explodinglabs_jsonrpcserver_pr127
+explodinglabs_jsonrpcserver_pr168
+explodinglabs_jsonrpcserver_pr170
+explodinglabs_jsonrpcserver_pr176
+explodinglabs_jsonrpcserver_pr179
+explodinglabs_jsonrpcserver_pr193
+explodinglabs_jsonrpcserver_pr198
+explodinglabs_jsonrpcserver_pr201
+explodinglabs_jsonrpcserver_pr42
+explodinglabs_jsonrpcserver_pr45
+explodinglabs_jsonrpcserver_pr94
+explosion_catalogue_pr33
+explosion_confection_pr65
+explosion_spacy-curated-transformers_pr3
+explosion_wasabi_pr11
+explosion_wasabi_pr12
+ezyang_expecttest_pr11
+ezyang_expecttest_pr7
+facebookresearch_clusterscope_pr102
+facebookresearch_clusterscope_pr104
+facebookresearch_clusterscope_pr106
+facebookresearch_clusterscope_pr108
+facebookresearch_clusterscope_pr14
+facebookresearch_clusterscope_pr143
+facebookresearch_clusterscope_pr29
+facebookresearch_clusterscope_pr3
+facebookresearch_clusterscope_pr33
+facebookresearch_clusterscope_pr34
+facebookresearch_clusterscope_pr35
+facebookresearch_clusterscope_pr52
+facebookresearch_clusterscope_pr66
+facebookresearch_clusterscope_pr67
+facebookresearch_clusterscope_pr68
+facebookresearch_clusterscope_pr69
+facebookresearch_clusterscope_pr81
+facebookresearch_clusterscope_pr82
+facebookresearch_clusterscope_pr86
+facebookresearch_clusterscope_pr87
+facebookresearch_clusterscope_pr93
+facebookresearch_clusterscope_pr95
+facebookresearch_clusterscope_pr98
+facebookresearch_dora_pr48
+facelessuser_bracex_pr5
+facelessuser_coloraide_pr10
+facelessuser_coloraide_pr103
+facelessuser_coloraide_pr105
+facelessuser_coloraide_pr106
+facelessuser_coloraide_pr113
+facelessuser_coloraide_pr115
+facelessuser_coloraide_pr123
+facelessuser_coloraide_pr124
+facelessuser_coloraide_pr126
+facelessuser_coloraide_pr13
+facelessuser_coloraide_pr134
+facelessuser_coloraide_pr136
+facelessuser_coloraide_pr137
+facelessuser_coloraide_pr138
+facelessuser_coloraide_pr14
+facelessuser_coloraide_pr142
+facelessuser_coloraide_pr147
+facelessuser_coloraide_pr148
+facelessuser_coloraide_pr149
+facelessuser_coloraide_pr151
+facelessuser_coloraide_pr156
+facelessuser_coloraide_pr159
+facelessuser_coloraide_pr160
+facelessuser_coloraide_pr161
+facelessuser_coloraide_pr165
+facelessuser_coloraide_pr166
+facelessuser_coloraide_pr167
+facelessuser_coloraide_pr176
+facelessuser_coloraide_pr177
+facelessuser_coloraide_pr178
+facelessuser_coloraide_pr179
+facelessuser_coloraide_pr181
+facelessuser_coloraide_pr184
+facelessuser_coloraide_pr189
+facelessuser_coloraide_pr19
+facelessuser_coloraide_pr192
+facelessuser_coloraide_pr193
+facelessuser_coloraide_pr196
+facelessuser_coloraide_pr201
+facelessuser_coloraide_pr203
+facelessuser_coloraide_pr205
+facelessuser_coloraide_pr208
+facelessuser_coloraide_pr210
+facelessuser_coloraide_pr214
+facelessuser_coloraide_pr215
+facelessuser_coloraide_pr216
+facelessuser_coloraide_pr22
+facelessuser_coloraide_pr226
+facelessuser_coloraide_pr232
+facelessuser_coloraide_pr233
+facelessuser_coloraide_pr237
+facelessuser_coloraide_pr239
+facelessuser_coloraide_pr24
+facelessuser_coloraide_pr242
+facelessuser_coloraide_pr248
+facelessuser_coloraide_pr249
+facelessuser_coloraide_pr25
+facelessuser_coloraide_pr252
+facelessuser_coloraide_pr254
+facelessuser_coloraide_pr258
+facelessuser_coloraide_pr260
+facelessuser_coloraide_pr262
+facelessuser_coloraide_pr263
+facelessuser_coloraide_pr266
+facelessuser_coloraide_pr267
+facelessuser_coloraide_pr273
+facelessuser_coloraide_pr275
+facelessuser_coloraide_pr276
+facelessuser_coloraide_pr278
+facelessuser_coloraide_pr28
+facelessuser_coloraide_pr280
+facelessuser_coloraide_pr283
+facelessuser_coloraide_pr284
+facelessuser_coloraide_pr286
+facelessuser_coloraide_pr297
+facelessuser_coloraide_pr30
+facelessuser_coloraide_pr300
+facelessuser_coloraide_pr304
+facelessuser_coloraide_pr305
+facelessuser_coloraide_pr307
+facelessuser_coloraide_pr32
+facelessuser_coloraide_pr322
+facelessuser_coloraide_pr325
+facelessuser_coloraide_pr329
+facelessuser_coloraide_pr331
+facelessuser_coloraide_pr336
+facelessuser_coloraide_pr338
+facelessuser_coloraide_pr34
+facelessuser_coloraide_pr340
+facelessuser_coloraide_pr344
+facelessuser_coloraide_pr347
+facelessuser_coloraide_pr348
+facelessuser_coloraide_pr349
+facelessuser_coloraide_pr350
+facelessuser_coloraide_pr351
+facelessuser_coloraide_pr356
+facelessuser_coloraide_pr357
+facelessuser_coloraide_pr358
+facelessuser_coloraide_pr362
+facelessuser_coloraide_pr363
+facelessuser_coloraide_pr367
+facelessuser_coloraide_pr37
+facelessuser_coloraide_pr370
+facelessuser_coloraide_pr372
+facelessuser_coloraide_pr376
+facelessuser_coloraide_pr377
+facelessuser_coloraide_pr379
+facelessuser_coloraide_pr38
+facelessuser_coloraide_pr382
+facelessuser_coloraide_pr383
+facelessuser_coloraide_pr384
+facelessuser_coloraide_pr386
+facelessuser_coloraide_pr387
+facelessuser_coloraide_pr389
+facelessuser_coloraide_pr39
+facelessuser_coloraide_pr393
+facelessuser_coloraide_pr395
+facelessuser_coloraide_pr396
+facelessuser_coloraide_pr397
+facelessuser_coloraide_pr423
+facelessuser_coloraide_pr424
+facelessuser_coloraide_pr425
+facelessuser_coloraide_pr427
+facelessuser_coloraide_pr428
+facelessuser_coloraide_pr431
+facelessuser_coloraide_pr433
+facelessuser_coloraide_pr436
+facelessuser_coloraide_pr44
+facelessuser_coloraide_pr451
+facelessuser_coloraide_pr455
+facelessuser_coloraide_pr456
+facelessuser_coloraide_pr457
+facelessuser_coloraide_pr458
+facelessuser_coloraide_pr461
+facelessuser_coloraide_pr463
+facelessuser_coloraide_pr464
+facelessuser_coloraide_pr469
+facelessuser_coloraide_pr47
+facelessuser_coloraide_pr479
+facelessuser_coloraide_pr487
+facelessuser_coloraide_pr488
+facelessuser_coloraide_pr51
+facelessuser_coloraide_pr52
+facelessuser_coloraide_pr60
+facelessuser_coloraide_pr61
+facelessuser_coloraide_pr66
+facelessuser_coloraide_pr67
+facelessuser_coloraide_pr75
+facelessuser_coloraide_pr76
+facelessuser_coloraide_pr77
+facelessuser_coloraide_pr79
+facelessuser_coloraide_pr82
+facelessuser_coloraide_pr84
+facelessuser_coloraide_pr85
+facelessuser_coloraide_pr88
+facelessuser_coloraide_pr89
+facelessuser_coloraide_pr98
+facelessuser_pyspelling_pr123
+facelessuser_pyspelling_pr128
+facelessuser_pyspelling_pr144
+facelessuser_pyspelling_pr163
+facelessuser_pyspelling_pr201
+facelessuser_pyspelling_pr206
+facelessuser_pyspelling_pr209
+facelessuser_pyspelling_pr211
+facelessuser_pyspelling_pr32
+facelessuser_pyspelling_pr33
+facelessuser_pyspelling_pr35
+facelessuser_pyspelling_pr41
+facelessuser_pyspelling_pr46
+facelessuser_pyspelling_pr48
+facelessuser_pyspelling_pr52
+facelessuser_pyspelling_pr55
+facelessuser_pyspelling_pr60
+facelessuser_pyspelling_pr61
+facelessuser_pyspelling_pr63
+facelessuser_pyspelling_pr71
+facelessuser_pyspelling_pr78
+facelessuser_pyspelling_pr86
+facelessuser_pyspelling_pr87
+facelessuser_pyspelling_pr98
+facelessuser_soupsieve_pr100
+facelessuser_soupsieve_pr102
+facelessuser_soupsieve_pr107
+facelessuser_soupsieve_pr108
+facelessuser_soupsieve_pr109
+facelessuser_soupsieve_pr126
+facelessuser_soupsieve_pr127
+facelessuser_soupsieve_pr129
+facelessuser_soupsieve_pr131
+facelessuser_soupsieve_pr136
+facelessuser_soupsieve_pr140
+facelessuser_soupsieve_pr141
+facelessuser_soupsieve_pr148
+facelessuser_soupsieve_pr149
+facelessuser_soupsieve_pr150
+facelessuser_soupsieve_pr157
+facelessuser_soupsieve_pr158
+facelessuser_soupsieve_pr163
+facelessuser_soupsieve_pr166
+facelessuser_soupsieve_pr177
+facelessuser_soupsieve_pr178
+facelessuser_soupsieve_pr179
+facelessuser_soupsieve_pr204
+facelessuser_soupsieve_pr211
+facelessuser_soupsieve_pr213
+facelessuser_soupsieve_pr217
+facelessuser_soupsieve_pr226
+facelessuser_soupsieve_pr227
+facelessuser_soupsieve_pr229
+facelessuser_soupsieve_pr256
+facelessuser_soupsieve_pr270
+facelessuser_soupsieve_pr71
+facelessuser_soupsieve_pr73
+facelessuser_soupsieve_pr77
+facelessuser_soupsieve_pr80
+facelessuser_soupsieve_pr83
+facelessuser_soupsieve_pr84
+facelessuser_soupsieve_pr88
+facelessuser_soupsieve_pr90
+facelessuser_soupsieve_pr96
+facelessuser_soupsieve_pr97
+facelessuser_wcmatch_pr111
+facelessuser_wcmatch_pr114
+facelessuser_wcmatch_pr147
+facelessuser_wcmatch_pr161
+facelessuser_wcmatch_pr169
+facelessuser_wcmatch_pr191
+facelessuser_wcmatch_pr206
+facelessuser_wcmatch_pr221
+facelessuser_wcmatch_pr223
+facelessuser_wcmatch_pr225
+facelessuser_wcmatch_pr31
+facelessuser_wcmatch_pr35
+facelessuser_wcmatch_pr4
+facelessuser_wcmatch_pr46
+facelessuser_wcmatch_pr47
+facelessuser_wcmatch_pr50
+facelessuser_wcmatch_pr62
+facelessuser_wcmatch_pr64
+facelessuser_wcmatch_pr8
+facelessuser_wcmatch_pr96
+facelessuser_wcmatch_pr98
+falconry_falcon_pr2366
+falconry_falcon_pr2448
+falconry_falcon_pr2487
+falconry_falcon_pr2496
+falconry_falcon_pr2498
+falconry_falcon_pr2503
+falconry_falcon_pr2535
+falconry_falcon_pr2541
+falconry_falcon_pr2572
+falconry_falcon_pr2581
+falconry_falcon_pr2584
+farridav_django-jazzmin_pr100
+farridav_django-jazzmin_pr107
+farridav_django-jazzmin_pr113
+farridav_django-jazzmin_pr114
+farridav_django-jazzmin_pr131
+farridav_django-jazzmin_pr136
+farridav_django-jazzmin_pr139
+farridav_django-jazzmin_pr143
+farridav_django-jazzmin_pr144
+farridav_django-jazzmin_pr152
+farridav_django-jazzmin_pr156
+farridav_django-jazzmin_pr158
+farridav_django-jazzmin_pr164
+farridav_django-jazzmin_pr174
+farridav_django-jazzmin_pr175
+farridav_django-jazzmin_pr178
+farridav_django-jazzmin_pr180
+farridav_django-jazzmin_pr52
+farridav_django-jazzmin_pr53
+farridav_django-jazzmin_pr56
+farridav_django-jazzmin_pr67
+farridav_django-jazzmin_pr69
+farridav_django-jazzmin_pr88
+farridav_django-jazzmin_pr90
+fastavro_fastavro_pr324
+fastavro_fastavro_pr327
+fastavro_fastavro_pr331
+fastavro_fastavro_pr335
+fastavro_fastavro_pr337
+fastavro_fastavro_pr338
+fastavro_fastavro_pr339
+fastavro_fastavro_pr342
+fastavro_fastavro_pr349
+fastavro_fastavro_pr356
+fastavro_fastavro_pr357
+fastavro_fastavro_pr359
+fastavro_fastavro_pr364
+fastavro_fastavro_pr381
+fastavro_fastavro_pr384
+fastavro_fastavro_pr385
+fastavro_fastavro_pr386
+fastavro_fastavro_pr396
+fastavro_fastavro_pr398
+fastavro_fastavro_pr438
+fastavro_fastavro_pr449
+fastavro_fastavro_pr451
+fastavro_fastavro_pr454
+fastavro_fastavro_pr482
+fastavro_fastavro_pr491
+fastavro_fastavro_pr492
+fastavro_fastavro_pr497
+fastavro_fastavro_pr498
+fastavro_fastavro_pr499
+fastavro_fastavro_pr717
+fastavro_fastavro_pr792
+fbruzzesi_iso-week-date_pr114
+fbruzzesi_iso-week-date_pr120
+fbruzzesi_iso-week-date_pr128
+fbruzzesi_iso-week-date_pr23
+fbruzzesi_iso-week-date_pr25
+fbruzzesi_iso-week-date_pr33
+fbruzzesi_iso-week-date_pr35
+fbruzzesi_iso-week-date_pr53
+fbruzzesi_iso-week-date_pr84
+fetchai_cosmpy_pr10
+fetchai_cosmpy_pr11
+fetchai_cosmpy_pr28
+fetchai_cosmpy_pr31
+fetchai_cosmpy_pr6
+fillipe-gsm_python-tsp_pr39
+firebolt-db_firebolt-sdk_pr11
+firebolt-db_firebolt-sdk_pr13
+firebolt-db_firebolt-sdk_pr16
+firebolt-db_firebolt-sdk_pr20
+firebolt-db_firebolt-sdk_pr21
+firebolt-db_firebolt-sdk_pr7
+firebolt-db_firebolt-sdk_pr8
+firebolt-db_firebolt-sdk_pr9
+fivetran_airflow-provider-fivetran_pr30
+fivetran_airflow-provider-fivetran_pr43
+flaport_sax_pr58
+flaport_sax_pr63
+flexxui_pscript_pr63
+flexxui_pscript_pr70
+florimondmanca_asgi-lifespan_pr10
+florimondmanca_asgi-lifespan_pr19
+florimondmanca_asgi-lifespan_pr24
+florimondmanca_asgi-lifespan_pr26
+florimondmanca_asgi-lifespan_pr7
+florimondmanca_asgi-lifespan_pr8
+florimondmanca_asgi-lifespan_pr9
+fohrloop_wakepy_pr121
+fohrloop_wakepy_pr307
+fohrloop_wakepy_pr356
+fohrloop_wakepy_pr379
+fohrloop_wakepy_pr385
+fohrloop_wakepy_pr396
+fohrloop_wakepy_pr417
+fohrloop_wakepy_pr429
+fohrloop_wakepy_pr430
+fohrloop_wakepy_pr434
+fohrloop_wakepy_pr446
+fohrloop_wakepy_pr447
+fohrloop_wakepy_pr452
+fohrloop_wakepy_pr459
+fohrloop_wakepy_pr460
+fohrloop_wakepy_pr464
+fohrloop_wakepy_pr469
+fohrloop_wakepy_pr474
+fohrloop_wakepy_pr477
+fohrloop_wakepy_pr479
+fohrloop_wakepy_pr79
+fohrloop_wakepy_pr82
+fohrloop_wakepy_pr92
+fohrloop_wakepy_pr97
+fonttools_fonttools_pr1359
+fonttools_fonttools_pr1361
+fonttools_fonttools_pr1430
+fonttools_fonttools_pr1439
+fonttools_fonttools_pr1450
+fonttools_fonttools_pr1453
+fonttools_fonttools_pr1460
+fonttools_fonttools_pr1462
+fonttools_fonttools_pr1464
+fonttools_fonttools_pr1469
+fonttools_fonttools_pr1472
+fonttools_fonttools_pr1477
+fonttools_fonttools_pr1488
+fonttools_fonttools_pr1521
+fonttools_fonttools_pr1535
+fonttools_fonttools_pr1539
+fonttools_fonttools_pr1540
+fonttools_fonttools_pr1563
+fonttools_fonttools_pr1564
+fonttools_fonttools_pr1567
+fonttools_fonttools_pr1599
+fonttools_fonttools_pr1669
+fonttools_fonttools_pr1700
+fonttools_fonttools_pr1706
+fonttools_fonttools_pr1715
+fonttools_fonttools_pr1719
+fonttools_fonttools_pr1720
+fonttools_fonttools_pr1732
+fonttools_fonttools_pr1747
+fonttools_fonttools_pr1752
+fonttools_fonttools_pr1753
+fonttools_fonttools_pr1763
+fonttools_fonttools_pr1767
+fonttools_fonttools_pr1772
+fonttools_fonttools_pr1781
+fonttools_fonttools_pr1782
+fonttools_fonttools_pr1785
+fonttools_fonttools_pr1797
+fonttools_fonttools_pr1802
+fonttools_fonttools_pr1809
+fonttools_fonttools_pr1811
+fonttools_fonttools_pr1814
+fonttools_fonttools_pr1816
+fonttools_fonttools_pr1818
+fonttools_fonttools_pr1826
+fonttools_fonttools_pr1827
+fonttools_fonttools_pr1828
+fonttools_fonttools_pr1830
+fonttools_fonttools_pr1836
+fonttools_fonttools_pr1842
+fonttools_fonttools_pr1850
+fonttools_fonttools_pr1860
+fonttools_fonttools_pr1870
+fonttools_fonttools_pr1872
+fonttools_fonttools_pr1876
+fonttools_fonttools_pr1878
+fonttools_fonttools_pr1883
+fonttools_fonttools_pr1902
+fonttools_fonttools_pr1903
+fonttools_fonttools_pr1905
+fonttools_fonttools_pr1908
+fonttools_fonttools_pr1921
+fonttools_fonttools_pr1926
+fonttools_fonttools_pr1938
+fonttools_fonttools_pr1944
+fonttools_fonttools_pr1952
+fonttools_fonttools_pr1957
+fonttools_fonttools_pr1963
+fonttools_fonttools_pr1967
+fonttools_fonttools_pr1970
+fonttools_fonttools_pr1973
+fonttools_fonttools_pr1983
+fonttools_fonttools_pr1986
+fonttools_fonttools_pr1987
+fonttools_fonttools_pr1998
+fonttools_fonttools_pr2008
+fonttools_fonttools_pr2026
+fonttools_fonttools_pr2037
+fonttools_fonttools_pr2039
+fonttools_fonttools_pr2045
+fonttools_fonttools_pr2075
+fonttools_fonttools_pr2077
+fonttools_fonttools_pr2080
+fonttools_fonttools_pr2092
+fonttools_fonttools_pr2094
+fonttools_fonttools_pr2101
+fonttools_fonttools_pr2112
+fonttools_fonttools_pr2129
+fonttools_fonttools_pr2137
+fonttools_fonttools_pr2146
+fonttools_fonttools_pr2155
+fonttools_fonttools_pr2161
+fonttools_fonttools_pr2170
+fonttools_fonttools_pr2172
+fonttools_fonttools_pr2173
+fonttools_fonttools_pr2175
+fonttools_fonttools_pr2177
+fonttools_fonttools_pr2181
+fonttools_fonttools_pr2182
+fonttools_fonttools_pr2229
+fonttools_fonttools_pr2236
+fonttools_fonttools_pr2237
+fonttools_fonttools_pr2238
+fonttools_fonttools_pr2259
+fonttools_fonttools_pr2261
+fonttools_fonttools_pr2274
+fonttools_fonttools_pr2277
+fonttools_fonttools_pr2285
+fonttools_fonttools_pr2305
+fonttools_fonttools_pr2308
+fonttools_fonttools_pr2313
+fonttools_fonttools_pr2326
+fonttools_fonttools_pr2348
+fonttools_fonttools_pr2353
+fonttools_fonttools_pr2366
+fonttools_fonttools_pr2376
+fonttools_fonttools_pr2386
+fonttools_fonttools_pr2413
+fonttools_fonttools_pr2416
+fonttools_fonttools_pr2424
+fonttools_fonttools_pr2430
+fonttools_fonttools_pr2432
+fonttools_fonttools_pr2439
+fonttools_fonttools_pr2446
+fonttools_fonttools_pr2447
+fonttools_fonttools_pr2462
+fonttools_fonttools_pr2477
+fonttools_fonttools_pr2499
+fonttools_fonttools_pr2504
+fonttools_fonttools_pr2506
+fonttools_fonttools_pr2513
+fonttools_fonttools_pr2521
+fonttools_fonttools_pr2528
+fonttools_fonttools_pr2540
+fonttools_fonttools_pr2544
+fonttools_fonttools_pr2549
+fonttools_fonttools_pr2551
+fonttools_fonttools_pr2552
+fonttools_fonttools_pr2553
+fonttools_fonttools_pr2555
+fonttools_fonttools_pr2577
+fonttools_fonttools_pr2589
+fonttools_fonttools_pr2600
+fonttools_fonttools_pr2603
+fonttools_fonttools_pr2609
+fonttools_fonttools_pr2611
+fonttools_fonttools_pr2645
+fonttools_fonttools_pr2651
+fonttools_fonttools_pr2660
+fonttools_fonttools_pr2662
+fonttools_fonttools_pr2673
+fonttools_fonttools_pr2679
+fonttools_fonttools_pr2684
+fonttools_fonttools_pr271
+fonttools_fonttools_pr2717
+fonttools_fonttools_pr2728
+fonttools_fonttools_pr273
+fonttools_fonttools_pr2743
+fonttools_fonttools_pr275
+fonttools_fonttools_pr2762
+fonttools_fonttools_pr2776
+fonttools_fonttools_pr278
+fonttools_fonttools_pr2789
+fonttools_fonttools_pr2794
+fonttools_fonttools_pr2837
+fonttools_fonttools_pr2846
+fonttools_fonttools_pr2849
+fonttools_fonttools_pr2861
+fonttools_fonttools_pr2880
+fonttools_fonttools_pr2889
+fonttools_fonttools_pr2891
+fonttools_fonttools_pr2921
+fonttools_fonttools_pr2922
+fonttools_fonttools_pr2950
+fonttools_fonttools_pr2968
+fonttools_fonttools_pr297
+fonttools_fonttools_pr2971
+fonttools_fonttools_pr2988
+fonttools_fonttools_pr299
+fonttools_fonttools_pr2993
+fonttools_fonttools_pr2995
+fonttools_fonttools_pr3005
+fonttools_fonttools_pr3012
+fonttools_fonttools_pr3020
+fonttools_fonttools_pr3024
+fonttools_fonttools_pr3027
+fonttools_fonttools_pr3029
+fonttools_fonttools_pr303
+fonttools_fonttools_pr3032
+fonttools_fonttools_pr3034
+fonttools_fonttools_pr3038
+fonttools_fonttools_pr305
+fonttools_fonttools_pr3053
+fonttools_fonttools_pr3075
+fonttools_fonttools_pr3092
+fonttools_fonttools_pr3103
+fonttools_fonttools_pr3110
+fonttools_fonttools_pr3114
+fonttools_fonttools_pr3115
+fonttools_fonttools_pr3119
+fonttools_fonttools_pr3124
+fonttools_fonttools_pr3126
+fonttools_fonttools_pr3129
+fonttools_fonttools_pr3130
+fonttools_fonttools_pr3140
+fonttools_fonttools_pr3145
+fonttools_fonttools_pr315
+fonttools_fonttools_pr3155
+fonttools_fonttools_pr3156
+fonttools_fonttools_pr3179
+fonttools_fonttools_pr3190
+fonttools_fonttools_pr3201
+fonttools_fonttools_pr3212
+fonttools_fonttools_pr3241
+fonttools_fonttools_pr325
+fonttools_fonttools_pr3253
+fonttools_fonttools_pr3268
+fonttools_fonttools_pr327
+fonttools_fonttools_pr330
+fonttools_fonttools_pr3304
+fonttools_fonttools_pr3305
+fonttools_fonttools_pr3319
+fonttools_fonttools_pr3323
+fonttools_fonttools_pr3324
+fonttools_fonttools_pr3330
+fonttools_fonttools_pr3333
+fonttools_fonttools_pr3336
+fonttools_fonttools_pr334
+fonttools_fonttools_pr3346
+fonttools_fonttools_pr3353
+fonttools_fonttools_pr3363
+fonttools_fonttools_pr3374
+fonttools_fonttools_pr3380
+fonttools_fonttools_pr3413
+fonttools_fonttools_pr3424
+fonttools_fonttools_pr3426
+fonttools_fonttools_pr3429
+fonttools_fonttools_pr3446
+fonttools_fonttools_pr3456
+fonttools_fonttools_pr3457
+fonttools_fonttools_pr3506
+fonttools_fonttools_pr3509
+fonttools_fonttools_pr3520
+fonttools_fonttools_pr3559
+fonttools_fonttools_pr3561
+fonttools_fonttools_pr3601
+fonttools_fonttools_pr3653
+fonttools_fonttools_pr3672
+fonttools_fonttools_pr3682
+fonttools_fonttools_pr3688
+fonttools_fonttools_pr3689
+fonttools_fonttools_pr3717
+fonttools_fonttools_pr3726
+fonttools_fonttools_pr3732
+fonttools_fonttools_pr3743
+fonttools_fonttools_pr3752
+fonttools_fonttools_pr3756
+fonttools_fonttools_pr3758
+fonttools_fonttools_pr3781
+fonttools_fonttools_pr3783
+fonttools_fonttools_pr3784
+fonttools_fonttools_pr3794
+fonttools_fonttools_pr3797
+fonttools_fonttools_pr3798
+fonttools_fonttools_pr3799
+fonttools_fonttools_pr3800
+fonttools_fonttools_pr3803
+fonttools_fonttools_pr3804
+fonttools_fonttools_pr3805
+fonttools_fonttools_pr3811
+fonttools_fonttools_pr3818
+fonttools_fonttools_pr3831
+fonttools_fonttools_pr3835
+fonttools_fonttools_pr3838
+fonttools_fonttools_pr3847
+fonttools_fonttools_pr3849
+fonttools_fonttools_pr3853
+fonttools_fonttools_pr3868
+fonttools_fonttools_pr3874
+fonttools_fonttools_pr3894
+fonttools_fonttools_pr3895
+fonttools_fonttools_pr3901
+fonttools_fonttools_pr3907
+fonttools_fonttools_pr3912
+fonttools_fonttools_pr3956
+fonttools_fonttools_pr3973
+formencode_formencode_pr184
+fortifyadmin_fortifyapi_pr7
+fortran-lang_fortls_pr49
+fortran-lang_fortls_pr58
+fortran-lang_fortls_pr67
+fortran-lang_fortls_pr75
+fortran-lang_fortls_pr82
+fortran-lang_fortls_pr83
+fox-it_dissect.cstruct_pr104
+fox-it_dissect.cstruct_pr111
+fox-it_dissect.cstruct_pr120
+fox-it_dissect.cstruct_pr122
+fox-it_dissect.cstruct_pr129
+fox-it_dissect.cstruct_pr137
+fox-it_dissect.cstruct_pr139
+fox-it_dissect.cstruct_pr17
+fox-it_dissect.cstruct_pr18
+fox-it_dissect.cstruct_pr19
+fox-it_dissect.cstruct_pr20
+fox-it_dissect.cstruct_pr3
+fox-it_dissect.cstruct_pr35
+fox-it_dissect.cstruct_pr39
+fox-it_dissect.cstruct_pr43
+fox-it_dissect.cstruct_pr66
+fox-it_dissect.cstruct_pr84
+fox-it_dissect.cstruct_pr88
+fox-it_dissect.cstruct_pr91
+fox-it_dissect.cstruct_pr93
+fox-it_dissect.cstruct_pr99
+fox-it_dissect.util_pr17
+fox-it_dissect.util_pr21
+fox-it_dissect.util_pr35
+fox-it_dissect.util_pr65
+fox-it_dissect.util_pr70
+fox-it_dissect.util_pr71
+fox-it_dissect.util_pr77
+fox-it_dissect.util_pr90
+fox-it_dissect.util_pr97
+frankie567_httpx-oauth_pr328
+frankie567_httpx-ws_pr108
+frankie567_httpx-ws_pr110
+frankie567_httpx-ws_pr115
+frankie567_httpx-ws_pr54
+frawau_aioblescan_pr27
+frawau_aioblescan_pr31
+freakboy3742_pyxero_pr393
+freakboy3742_pyxero_pr396
+frederickjansen_polyline_pr2
+fredrik-johansson_mpmath_pr408
+fredrik-johansson_mpmath_pr409
+fredrik-johansson_mpmath_pr412
+fredrik-johansson_mpmath_pr426
+fredrik-johansson_mpmath_pr439
+fredrik-johansson_mpmath_pr531
+fredrik-johansson_mpmath_pr533
+fredrik-johansson_mpmath_pr537
+fredrik-johansson_mpmath_pr557
+fredrik-johansson_mpmath_pr566
+fredrik-johansson_mpmath_pr664
+fredrik-johansson_mpmath_pr679
+fredrik-johansson_mpmath_pr689
+fredrikaverpil_creosote_pr206
+fredrikaverpil_creosote_pr217
+fredrikaverpil_creosote_pr270
+fredrikaverpil_creosote_pr305
+fredrikaverpil_creosote_pr311
+frictionlessdata_datapackage-py_pr168
+frictionlessdata_datapackage-py_pr177
+frictionlessdata_datapackage-py_pr179
+frictionlessdata_datapackage-py_pr189
+frictionlessdata_datapackage-py_pr204
+frictionlessdata_datapackage-py_pr211
+frictionlessdata_datapackage-py_pr218
+frictionlessdata_datapackage-py_pr220
+frictionlessdata_datapackage-py_pr222
+frictionlessdata_datapackage-py_pr226
+frictionlessdata_datapackage-py_pr228
+frictionlessdata_datapackage-py_pr229
+frictionlessdata_datapackage-py_pr241
+frictionlessdata_datapackage-py_pr247
+frictionlessdata_datapackage-py_pr249
+frictionlessdata_datapackage-py_pr260
+frictionlessdata_datapackage-py_pr262
+frictionlessdata_frictionless-py_pr1007
+frictionlessdata_frictionless-py_pr1030
+frictionlessdata_frictionless-py_pr1039
+frictionlessdata_frictionless-py_pr1045
+frictionlessdata_frictionless-py_pr1047
+frictionlessdata_frictionless-py_pr1051
+frictionlessdata_frictionless-py_pr1052
+frictionlessdata_frictionless-py_pr1060
+frictionlessdata_frictionless-py_pr1064
+frictionlessdata_frictionless-py_pr1070
+frictionlessdata_frictionless-py_pr1073
+frictionlessdata_frictionless-py_pr1074
+frictionlessdata_frictionless-py_pr1075
+frictionlessdata_frictionless-py_pr1080
+frictionlessdata_frictionless-py_pr1081
+frictionlessdata_frictionless-py_pr1082
+frictionlessdata_frictionless-py_pr1089
+frictionlessdata_frictionless-py_pr547
+frictionlessdata_frictionless-py_pr548
+frictionlessdata_frictionless-py_pr554
+frictionlessdata_frictionless-py_pr556
+frictionlessdata_frictionless-py_pr557
+frictionlessdata_frictionless-py_pr566
+frictionlessdata_frictionless-py_pr569
+frictionlessdata_frictionless-py_pr571
+frictionlessdata_frictionless-py_pr572
+frictionlessdata_frictionless-py_pr573
+frictionlessdata_frictionless-py_pr579
+frictionlessdata_frictionless-py_pr580
+frictionlessdata_frictionless-py_pr581
+frictionlessdata_frictionless-py_pr583
+frictionlessdata_frictionless-py_pr589
+frictionlessdata_frictionless-py_pr655
+frictionlessdata_frictionless-py_pr657
+frictionlessdata_frictionless-py_pr658
+frictionlessdata_frictionless-py_pr659
+frictionlessdata_frictionless-py_pr660
+frictionlessdata_frictionless-py_pr672
+frictionlessdata_frictionless-py_pr673
+frictionlessdata_frictionless-py_pr674
+frictionlessdata_frictionless-py_pr689
+frictionlessdata_frictionless-py_pr723
+frictionlessdata_frictionless-py_pr781
+frictionlessdata_frictionless-py_pr806
+frictionlessdata_frictionless-py_pr808
+frictionlessdata_frictionless-py_pr819
+frictionlessdata_frictionless-py_pr822
+frictionlessdata_frictionless-py_pr829
+frictionlessdata_frictionless-py_pr841
+frictionlessdata_frictionless-py_pr842
+frictionlessdata_frictionless-py_pr843
+frictionlessdata_frictionless-py_pr848
+frictionlessdata_frictionless-py_pr849
+frictionlessdata_frictionless-py_pr851
+frictionlessdata_frictionless-py_pr857
+frictionlessdata_frictionless-py_pr875
+frictionlessdata_frictionless-py_pr886
+frictionlessdata_frictionless-py_pr900
+frictionlessdata_frictionless-py_pr902
+frictionlessdata_frictionless-py_pr912
+frictionlessdata_frictionless-py_pr924
+frictionlessdata_frictionless-py_pr945
+frictionlessdata_frictionless-py_pr974
+frictionlessdata_frictionless-py_pr983
+frictionlessdata_frictionless-py_pr985
+frictionlessdata_frictionless-py_pr994
+frictionlessdata_frictionless-py_pr998
+frictionlessdata_goodtables_pr219
+frictionlessdata_goodtables_pr223
+frictionlessdata_goodtables_pr225
+frictionlessdata_goodtables_pr240
+frictionlessdata_goodtables_pr241
+frictionlessdata_goodtables_pr254
+frictionlessdata_goodtables_pr290
+frictionlessdata_goodtables_pr298
+frictionlessdata_goodtables_pr306
+frictionlessdata_goodtables_pr316
+frictionlessdata_goodtables_pr318
+frictionlessdata_goodtables_pr331
+frictionlessdata_goodtables_pr334
+frictionlessdata_goodtables_pr346
+frictionlessdata_goodtables_pr363
+frictionlessdata_goodtables_pr365
+frictionlessdata_goodtables_pr421
+frictionlessdata_goodtables_pr466
+frictionlessdata_goodtables_pr470
+frictionlessdata_tableschema-py_pr120
+frictionlessdata_tableschema-py_pr124
+frictionlessdata_tableschema-py_pr133
+frictionlessdata_tableschema-py_pr140
+frictionlessdata_tableschema-py_pr146
+frictionlessdata_tableschema-py_pr178
+frictionlessdata_tableschema-py_pr179
+frictionlessdata_tableschema-py_pr197
+frictionlessdata_tableschema-py_pr199
+frictionlessdata_tableschema-py_pr200
+frictionlessdata_tableschema-py_pr206
+frictionlessdata_tableschema-py_pr207
+frictionlessdata_tableschema-py_pr208
+frictionlessdata_tableschema-py_pr211
+frictionlessdata_tableschema-py_pr216
+frictionlessdata_tableschema-py_pr219
+frictionlessdata_tableschema-py_pr222
+frictionlessdata_tableschema-py_pr224
+frictionlessdata_tableschema-py_pr227
+frictionlessdata_tableschema-py_pr231
+frictionlessdata_tableschema-py_pr269
+frictionlessdata_tableschema-py_pr270
+frictionlessdata_tableschema-py_pr272
+frictionlessdata_tableschema-py_pr274
+frictionlessdata_tableschema-py_pr276
+frictionlessdata_tableschema-py_pr45
+frictionlessdata_tableschema-py_pr61
+frictionlessdata_tableschema-py_pr73
+frictionlessdata_tableschema-py_pr74
+frictionlessdata_tableschema-py_pr76
+frictionlessdata_tableschema-py_pr77
+frictionlessdata_tableschema-py_pr90
+frictionlessdata_tabulator-py_pr107
+frictionlessdata_tabulator-py_pr110
+frictionlessdata_tabulator-py_pr125
+frictionlessdata_tabulator-py_pr127
+frictionlessdata_tabulator-py_pr129
+frictionlessdata_tabulator-py_pr130
+frictionlessdata_tabulator-py_pr141
+frictionlessdata_tabulator-py_pr145
+frictionlessdata_tabulator-py_pr147
+frictionlessdata_tabulator-py_pr166
+frictionlessdata_tabulator-py_pr185
+frictionlessdata_tabulator-py_pr193
+frictionlessdata_tabulator-py_pr196
+frictionlessdata_tabulator-py_pr207
+frictionlessdata_tabulator-py_pr210
+frictionlessdata_tabulator-py_pr212
+frictionlessdata_tabulator-py_pr215
+frictionlessdata_tabulator-py_pr233
+frictionlessdata_tabulator-py_pr251
+frictionlessdata_tabulator-py_pr253
+frictionlessdata_tabulator-py_pr255
+frictionlessdata_tabulator-py_pr258
+frictionlessdata_tabulator-py_pr289
+frictionlessdata_tabulator-py_pr304
+frictionlessdata_tabulator-py_pr316
+frictionlessdata_tabulator-py_pr323
+frictionlessdata_tabulator-py_pr344
+frictionlessdata_tabulator-py_pr54
+frictionlessdata_tabulator-py_pr55
+frictionlessdata_tabulator-py_pr57
+frictionlessdata_tabulator-py_pr58
+frictionlessdata_tabulator-py_pr60
+frictionlessdata_tabulator-py_pr65
+frictionlessdata_tabulator-py_pr68
+frictionlessdata_tabulator-py_pr69
+frictionlessdata_tabulator-py_pr70
+frictionlessdata_tabulator-py_pr80
+frictionlessdata_tabulator-py_pr83
+frictionlessdata_tabulator-py_pr87
+frictionlessdata_tabulator-py_pr88
+frispete_keyrings.cryptfile_pr19
+frostming_marko_pr104
+frostming_marko_pr123
+frostming_marko_pr127
+frostming_marko_pr136
+frostming_marko_pr172
+frostming_marko_pr175
+frostming_marko_pr222
+frostming_marko_pr230
+frostming_marko_pr237
+frostming_marko_pr242
+frostming_marko_pr48
+frostming_marko_pr50
+frostming_marko_pr54
+frostming_marko_pr57
+frostming_marko_pr63
+frostming_marko_pr71
+frostming_marko_pr77
+frostming_marko_pr88
+frostming_marko_pr93
+frostming_unearth_pr10
+frostming_unearth_pr127
+frostming_unearth_pr132
+frostming_unearth_pr142
+frostming_unearth_pr158
+frostming_unearth_pr166
+frostming_unearth_pr26
+frostming_unearth_pr36
+frostming_unearth_pr43
+frostming_unearth_pr6
+frostming_unearth_pr62
+frostming_unearth_pr66
+frostming_unearth_pr70
+frostming_unearth_pr71
+frostming_unearth_pr75
+frostming_unearth_pr78
+frostming_unearth_pr90
+fugue-project_triad_pr101
+fugue-project_triad_pr102
+fugue-project_triad_pr109
+fugue-project_triad_pr111
+fugue-project_triad_pr112
+fugue-project_triad_pr114
+fugue-project_triad_pr115
+fugue-project_triad_pr118
+fugue-project_triad_pr12
+fugue-project_triad_pr120
+fugue-project_triad_pr125
+fugue-project_triad_pr128
+fugue-project_triad_pr13
+fugue-project_triad_pr130
+fugue-project_triad_pr16
+fugue-project_triad_pr17
+fugue-project_triad_pr18
+fugue-project_triad_pr19
+fugue-project_triad_pr23
+fugue-project_triad_pr34
+fugue-project_triad_pr38
+fugue-project_triad_pr51
+fugue-project_triad_pr55
+fugue-project_triad_pr56
+fugue-project_triad_pr58
+fugue-project_triad_pr60
+fugue-project_triad_pr64
+fugue-project_triad_pr65
+fugue-project_triad_pr66
+fugue-project_triad_pr67
+fugue-project_triad_pr72
+fugue-project_triad_pr77
+fugue-project_triad_pr81
+fugue-project_triad_pr84
+fugue-project_triad_pr89
+fugue-project_triad_pr90
+fugue-project_triad_pr92
+fugue-project_triad_pr93
+fugue-project_triad_pr94
+fugue-project_triad_pr97
+fugue-project_triad_pr98
+fuhrysteve_marshmallow-jsonschema_pr119
+fuhrysteve_marshmallow-jsonschema_pr135
+fuhrysteve_marshmallow-jsonschema_pr139
+fuhrysteve_marshmallow-jsonschema_pr160
+fuhrysteve_marshmallow-jsonschema_pr36
+fuhrysteve_marshmallow-jsonschema_pr37
+fulder_pki-tools_pr119
+fulder_pki-tools_pr121
+fulder_pki-tools_pr127
+fulder_pki-tools_pr21
+fulder_pki-tools_pr34
+fulder_pki-tools_pr35
+fulder_pki-tools_pr4
+fulder_pki-tools_pr6
+gahjelle_pyconfs_pr17
+gauge-sh_tach_pr10
+gauge-sh_tach_pr11
+gauge-sh_tach_pr26
+gauge-sh_tach_pr4
+gauge-sh_tach_pr7
+gb-libs_pydantic-geojson_pr33
+geoalchemy_geoalchemy2_pr540
+geomet_geomet_pr18
+geomet_geomet_pr54
+geopandas_geopandas_pr2027
+geopandas_geopandas_pr2067
+geopandas_geopandas_pr2151
+geopandas_geopandas_pr2224
+geopandas_geopandas_pr2225
+geopandas_geopandas_pr2227
+geopandas_geopandas_pr2243
+geopandas_geopandas_pr2275
+geopandas_geopandas_pr2297
+geopandas_geopandas_pr2314
+geopandas_geopandas_pr2332
+geopandas_geopandas_pr2366
+geopandas_geopandas_pr2373
+geopandas_geopandas_pr2415
+geopandas_geopandas_pr2420
+geopandas_geopandas_pr2437
+geopandas_geopandas_pr2453
+geopandas_geopandas_pr2470
+geopandas_geopandas_pr2498
+geopandas_geopandas_pr2503
+geopandas_geopandas_pr2505
+geopandas_geopandas_pr2537
+geopandas_geopandas_pr2539
+geopandas_geopandas_pr2541
+geopandas_geopandas_pr2542
+geopandas_geopandas_pr2552
+geopandas_geopandas_pr2570
+geopandas_geopandas_pr2571
+geopandas_geopandas_pr2575
+geopandas_geopandas_pr2577
+geopandas_geopandas_pr2578
+geopandas_geopandas_pr2580
+geopandas_geopandas_pr2595
+geopandas_geopandas_pr2618
+geopandas_geopandas_pr2621
+geopandas_geopandas_pr2624
+geopandas_geopandas_pr2663
+geopandas_geopandas_pr2667
+geopandas_geopandas_pr2680
+geopandas_geopandas_pr2685
+geopandas_geopandas_pr2762
+geopandas_geopandas_pr2775
+geopandas_geopandas_pr2785
+geopandas_geopandas_pr2788
+geopandas_geopandas_pr2796
+geopandas_geopandas_pr2811
+geopandas_geopandas_pr2827
+geopandas_geopandas_pr2831
+geopandas_geopandas_pr2833
+geopandas_geopandas_pr2846
+geopandas_geopandas_pr2859
+geopandas_geopandas_pr2861
+geopandas_geopandas_pr2868
+geopandas_geopandas_pr2877
+geopandas_geopandas_pr2886
+geopandas_geopandas_pr2902
+geopandas_geopandas_pr2903
+geopandas_geopandas_pr2907
+geopandas_geopandas_pr2909
+geopandas_geopandas_pr2910
+geopandas_geopandas_pr2914
+geopandas_geopandas_pr2915
+geopandas_geopandas_pr2919
+geopandas_geopandas_pr2929
+geopandas_geopandas_pr2940
+geopandas_geopandas_pr2944
+geopandas_geopandas_pr2959
+geopandas_geopandas_pr2960
+geopandas_geopandas_pr2963
+geopandas_geopandas_pr2986
+geopandas_geopandas_pr2992
+geopandas_geopandas_pr2993
+geopandas_geopandas_pr3010
+geopandas_geopandas_pr3017
+geopandas_geopandas_pr3088
+geopandas_geopandas_pr3151
+geopandas_geopandas_pr3154
+geopandas_geopandas_pr3177
+geopandas_geopandas_pr3202
+geopandas_geopandas_pr3211
+geopandas_geopandas_pr3215
+geopandas_geopandas_pr3219
+geopandas_geopandas_pr3226
+geopandas_geopandas_pr3228
+geopandas_geopandas_pr3231
+geopandas_geopandas_pr3233
+geopandas_geopandas_pr3237
+geopandas_geopandas_pr3240
+geopandas_geopandas_pr3261
+geopandas_geopandas_pr3267
+geopandas_geopandas_pr3271
+geopandas_geopandas_pr3272
+geopandas_geopandas_pr3275
+geopandas_geopandas_pr3278
+geopandas_geopandas_pr3282
+geopandas_geopandas_pr3287
+geopandas_geopandas_pr3290
+geopandas_geopandas_pr3296
+geopandas_geopandas_pr3301
+geopandas_geopandas_pr3314
+geopandas_geopandas_pr3316
+geopandas_geopandas_pr3317
+geopandas_geopandas_pr3318
+geopandas_geopandas_pr3329
+geopandas_geopandas_pr3337
+geopandas_geopandas_pr3347
+geopandas_geopandas_pr3360
+geopandas_geopandas_pr3364
+geopandas_geopandas_pr3383
+geopandas_geopandas_pr3395
+geopandas_geopandas_pr3408
+geopandas_geopandas_pr3412
+geopandas_geopandas_pr3415
+geopandas_geopandas_pr3416
+geopandas_geopandas_pr3424
+geopandas_geopandas_pr3436
+geopandas_geopandas_pr3438
+geopandas_geopandas_pr3443
+geopandas_geopandas_pr3445
+geopandas_geopandas_pr3449
+geopandas_geopandas_pr3463
+geopandas_geopandas_pr3466
+geopandas_geopandas_pr3468
+geopandas_geopandas_pr3471
+geopandas_geopandas_pr3502
+geopandas_geopandas_pr3504
+geopandas_geopandas_pr3505
+geopandas_geopandas_pr3543
+geopandas_geopandas_pr3544
+geopandas_geopandas_pr3552
+geopandas_geopandas_pr3560
+geopandas_geopandas_pr3561
+geopandas_geopandas_pr3564
+geopandas_geopandas_pr3572
+geopandas_geopandas_pr3576
+geopandas_geopandas_pr3591
+geopandas_geopandas_pr3596
+geopandas_geopandas_pr3599
+geopandas_geopandas_pr3611
+geopandas_geopandas_pr3616
+geopandas_geopandas_pr3628
+geopandas_geopandas_pr3640
+geopandas_geopandas_pr416
+geopandas_xyzservices_pr11
+geopandas_xyzservices_pr27
+geopandas_xyzservices_pr34
+geopandas_xyzservices_pr38
+geopandas_xyzservices_pr51
+geopandas_xyzservices_pr76
+geopozo_logistro_pr25
+geopozo_logistro_pr9
+geopy_geopy_pr272
+geopy_geopy_pr279
+geopy_geopy_pr281
+geopython_pygeofilter_pr111
+georgebv_drf-pydantic_pr20
+georgebv_drf-pydantic_pr23
+georgebv_drf-pydantic_pr26
+georgebv_drf-pydantic_pr27
+georgebv_drf-pydantic_pr36
+georgebv_drf-pydantic_pr43
+geotab_mygeotab-python_pr11
+geotab_mygeotab-python_pr20
+geotab_mygeotab-python_pr7
+getmoto_py-partiql-parser_pr24
+getmoto_py-partiql-parser_pr28
+getpelican_feedgenerator_pr23
+getpelican_feedgenerator_pr32
+getpelican_feedgenerator_pr4
+getpelican_feedgenerator_pr7
+getsentry_responses_pr231
+getsentry_responses_pr269
+getsentry_responses_pr278
+getsentry_responses_pr285
+getsentry_responses_pr298
+getsentry_responses_pr301
+getsentry_responses_pr302
+getsentry_responses_pr303
+getsentry_responses_pr308
+getsentry_responses_pr316
+getsentry_responses_pr317
+getsentry_responses_pr318
+getsentry_responses_pr347
+getsentry_responses_pr350
+getsentry_responses_pr360
+getsentry_responses_pr363
+getsentry_responses_pr365
+getsentry_responses_pr370
+getsentry_responses_pr390
+getsentry_responses_pr398
+getsentry_responses_pr407
+getsentry_responses_pr409
+getsentry_responses_pr412
+getsentry_responses_pr413
+getsentry_responses_pr415
+getsentry_responses_pr416
+getsentry_responses_pr419
+getsentry_responses_pr420
+getsentry_responses_pr422
+getsentry_responses_pr427
+getsentry_responses_pr432
+getsentry_responses_pr433
+getsentry_responses_pr444
+getsentry_responses_pr447
+getsentry_responses_pr455
+getsentry_responses_pr462
+getsentry_responses_pr465
+getsentry_responses_pr470
+getsentry_responses_pr472
+getsentry_responses_pr476
+getsentry_responses_pr480
+getsentry_responses_pr482
+getsentry_responses_pr485
+getsentry_responses_pr487
+getsentry_responses_pr497
+getsentry_responses_pr498
+getsentry_responses_pr505
+getsentry_responses_pr507
+getsentry_responses_pr508
+getsentry_responses_pr516
+getsentry_responses_pr522
+getsentry_responses_pr524
+getsentry_responses_pr529
+getsentry_responses_pr534
+getsentry_responses_pr535
+getsentry_responses_pr536
+getsentry_responses_pr562
+getsentry_responses_pr564
+getsentry_responses_pr575
+getsentry_responses_pr578
+getsentry_responses_pr580
+getsentry_responses_pr581
+getsentry_responses_pr583
+getsentry_responses_pr593
+getsentry_responses_pr622
+getsentry_responses_pr643
+getsentry_responses_pr648
+getsentry_responses_pr659
+getsentry_responses_pr663
+getsentry_responses_pr664
+getsentry_responses_pr668
+getsentry_responses_pr671
+getsentry_responses_pr673
+getsentry_responses_pr690
+getsentry_responses_pr702
+getsentry_responses_pr711
+getsentry_responses_pr712
+getsentry_responses_pr717
+getsentry_responses_pr720
+getsentry_responses_pr739
+getsentry_responses_pr776
+ghazi-git_drf-standardized-errors_pr16
+ghazi-git_drf-standardized-errors_pr30
+ghazi-git_drf-standardized-errors_pr75
+giampaolo_pyftpdlib_pr626
+giampaolo_pyftpdlib_pr628
+giampaolo_pyftpdlib_pr638
+giampaolo_pyftpdlib_pr651
+giampaolo_pyftpdlib_pr652
+giampaolo_pyftpdlib_pr656
+gijzelaerr_python-snap7_pr250
+gijzelaerr_python-snap7_pr268
+gijzelaerr_python-snap7_pr28
+gijzelaerr_python-snap7_pr283
+gijzelaerr_python-snap7_pr308
+gijzelaerr_python-snap7_pr326
+gijzelaerr_python-snap7_pr368
+gijzelaerr_python-snap7_pr373
+gijzelaerr_python-snap7_pr385
+gijzelaerr_python-snap7_pr529
+gijzelaerr_python-snap7_pr55
+gjoseph92_stackstac_pr208
+gjoseph92_stackstac_pr209
+gjoseph92_stackstac_pr256
+globus_globus-sdk-python_pr1000
+globus_globus-sdk-python_pr1001
+globus_globus-sdk-python_pr1002
+globus_globus-sdk-python_pr1003
+globus_globus-sdk-python_pr1004
+globus_globus-sdk-python_pr1011
+globus_globus-sdk-python_pr1017
+globus_globus-sdk-python_pr1018
+globus_globus-sdk-python_pr1020
+globus_globus-sdk-python_pr1022
+globus_globus-sdk-python_pr1027
+globus_globus-sdk-python_pr1029
+globus_globus-sdk-python_pr1030
+globus_globus-sdk-python_pr1032
+globus_globus-sdk-python_pr1034
+globus_globus-sdk-python_pr1038
+globus_globus-sdk-python_pr1039
+globus_globus-sdk-python_pr1040
+globus_globus-sdk-python_pr1041
+globus_globus-sdk-python_pr1044
+globus_globus-sdk-python_pr1048
+globus_globus-sdk-python_pr1051
+globus_globus-sdk-python_pr1054
+globus_globus-sdk-python_pr1057
+globus_globus-sdk-python_pr1059
+globus_globus-sdk-python_pr1063
+globus_globus-sdk-python_pr1065
+globus_globus-sdk-python_pr1066
+globus_globus-sdk-python_pr1071
+globus_globus-sdk-python_pr1072
+globus_globus-sdk-python_pr1073
+globus_globus-sdk-python_pr1074
+globus_globus-sdk-python_pr1075
+globus_globus-sdk-python_pr1078
+globus_globus-sdk-python_pr1079
+globus_globus-sdk-python_pr1080
+globus_globus-sdk-python_pr1092
+globus_globus-sdk-python_pr1098
+globus_globus-sdk-python_pr113
+globus_globus-sdk-python_pr500
+globus_globus-sdk-python_pr528
+globus_globus-sdk-python_pr529
+globus_globus-sdk-python_pr530
+globus_globus-sdk-python_pr534
+globus_globus-sdk-python_pr536
+globus_globus-sdk-python_pr540
+globus_globus-sdk-python_pr548
+globus_globus-sdk-python_pr549
+globus_globus-sdk-python_pr554
+globus_globus-sdk-python_pr563
+globus_globus-sdk-python_pr568
+globus_globus-sdk-python_pr571
+globus_globus-sdk-python_pr573
+globus_globus-sdk-python_pr577
+globus_globus-sdk-python_pr591
+globus_globus-sdk-python_pr596
+globus_globus-sdk-python_pr597
+globus_globus-sdk-python_pr60
+globus_globus-sdk-python_pr602
+globus_globus-sdk-python_pr603
+globus_globus-sdk-python_pr604
+globus_globus-sdk-python_pr612
+globus_globus-sdk-python_pr613
+globus_globus-sdk-python_pr616
+globus_globus-sdk-python_pr620
+globus_globus-sdk-python_pr621
+globus_globus-sdk-python_pr622
+globus_globus-sdk-python_pr626
+globus_globus-sdk-python_pr628
+globus_globus-sdk-python_pr630
+globus_globus-sdk-python_pr631
+globus_globus-sdk-python_pr640
+globus_globus-sdk-python_pr641
+globus_globus-sdk-python_pr642
+globus_globus-sdk-python_pr644
+globus_globus-sdk-python_pr646
+globus_globus-sdk-python_pr647
+globus_globus-sdk-python_pr65
+globus_globus-sdk-python_pr655
+globus_globus-sdk-python_pr658
+globus_globus-sdk-python_pr66
+globus_globus-sdk-python_pr662
+globus_globus-sdk-python_pr672
+globus_globus-sdk-python_pr675
+globus_globus-sdk-python_pr676
+globus_globus-sdk-python_pr678
+globus_globus-sdk-python_pr680
+globus_globus-sdk-python_pr681
+globus_globus-sdk-python_pr683
+globus_globus-sdk-python_pr684
+globus_globus-sdk-python_pr686
+globus_globus-sdk-python_pr687
+globus_globus-sdk-python_pr689
+globus_globus-sdk-python_pr690
+globus_globus-sdk-python_pr691
+globus_globus-sdk-python_pr693
+globus_globus-sdk-python_pr694
+globus_globus-sdk-python_pr695
+globus_globus-sdk-python_pr696
+globus_globus-sdk-python_pr698
+globus_globus-sdk-python_pr700
+globus_globus-sdk-python_pr708
+globus_globus-sdk-python_pr710
+globus_globus-sdk-python_pr712
+globus_globus-sdk-python_pr715
+globus_globus-sdk-python_pr72
+globus_globus-sdk-python_pr721
+globus_globus-sdk-python_pr722
+globus_globus-sdk-python_pr723
+globus_globus-sdk-python_pr725
+globus_globus-sdk-python_pr726
+globus_globus-sdk-python_pr736
+globus_globus-sdk-python_pr741
+globus_globus-sdk-python_pr743
+globus_globus-sdk-python_pr744
+globus_globus-sdk-python_pr745
+globus_globus-sdk-python_pr747
+globus_globus-sdk-python_pr749
+globus_globus-sdk-python_pr752
+globus_globus-sdk-python_pr757
+globus_globus-sdk-python_pr760
+globus_globus-sdk-python_pr764
+globus_globus-sdk-python_pr766
+globus_globus-sdk-python_pr769
+globus_globus-sdk-python_pr770
+globus_globus-sdk-python_pr772
+globus_globus-sdk-python_pr773
+globus_globus-sdk-python_pr774
+globus_globus-sdk-python_pr776
+globus_globus-sdk-python_pr778
+globus_globus-sdk-python_pr78
+globus_globus-sdk-python_pr782
+globus_globus-sdk-python_pr786
+globus_globus-sdk-python_pr790
+globus_globus-sdk-python_pr793
+globus_globus-sdk-python_pr798
+globus_globus-sdk-python_pr807
+globus_globus-sdk-python_pr809
+globus_globus-sdk-python_pr81
+globus_globus-sdk-python_pr813
+globus_globus-sdk-python_pr827
+globus_globus-sdk-python_pr828
+globus_globus-sdk-python_pr849
+globus_globus-sdk-python_pr85
+globus_globus-sdk-python_pr865
+globus_globus-sdk-python_pr868
+globus_globus-sdk-python_pr884
+globus_globus-sdk-python_pr887
+globus_globus-sdk-python_pr890
+globus_globus-sdk-python_pr892
+globus_globus-sdk-python_pr894
+globus_globus-sdk-python_pr895
+globus_globus-sdk-python_pr896
+globus_globus-sdk-python_pr897
+globus_globus-sdk-python_pr903
+globus_globus-sdk-python_pr920
+globus_globus-sdk-python_pr921
+globus_globus-sdk-python_pr922
+globus_globus-sdk-python_pr923
+globus_globus-sdk-python_pr927
+globus_globus-sdk-python_pr928
+globus_globus-sdk-python_pr93
+globus_globus-sdk-python_pr934
+globus_globus-sdk-python_pr936
+globus_globus-sdk-python_pr939
+globus_globus-sdk-python_pr94
+globus_globus-sdk-python_pr942
+globus_globus-sdk-python_pr948
+globus_globus-sdk-python_pr949
+globus_globus-sdk-python_pr95
+globus_globus-sdk-python_pr951
+globus_globus-sdk-python_pr952
+globus_globus-sdk-python_pr955
+globus_globus-sdk-python_pr956
+globus_globus-sdk-python_pr957
+globus_globus-sdk-python_pr958
+globus_globus-sdk-python_pr961
+globus_globus-sdk-python_pr965
+globus_globus-sdk-python_pr971
+globus_globus-sdk-python_pr972
+globus_globus-sdk-python_pr974
+globus_globus-sdk-python_pr975
+globus_globus-sdk-python_pr977
+globus_globus-sdk-python_pr979
+globus_globus-sdk-python_pr984
+globus_globus-sdk-python_pr986
+globus_globus-sdk-python_pr989
+globus_globus-sdk-python_pr990
+globus_globus-sdk-python_pr993
+globus_globus-sdk-python_pr994
+globus_globus-sdk-python_pr998
+glotzerlab_parsnip_pr29
+glotzerlab_parsnip_pr33
+glotzerlab_parsnip_pr34
+glotzerlab_parsnip_pr35
+glotzerlab_parsnip_pr38
+glut23_webvtt-py_pr66
+glut23_webvtt-py_pr67
+gmplot_gmplot_pr104
+gmplot_gmplot_pr110
+gmplot_gmplot_pr111
+gmplot_gmplot_pr115
+gmplot_gmplot_pr128
+gmplot_gmplot_pr136
+gmplot_gmplot_pr170
+gmplot_gmplot_pr181
+gmplot_gmplot_pr40
+gmr_pamqp_pr14
+gmr_pamqp_pr37
+gmr_pamqp_pr48
+gmr_pamqp_pr52
+gocardless_airflow-dbt_pr15
+gocardless_airflow-dbt_pr17
+gocardless_airflow-dbt_pr22
+gocardless_airflow-dbt_pr28
+gocardless_airflow-dbt_pr34
+gocardless_airflow-dbt_pr4
+gocardless_airflow-dbt_pr40
+gocardless_airflow-dbt_pr49
+gocardless_airflow-dbt_pr60
+godatadriven_pydantic-avro_pr10
+godatadriven_pydantic-avro_pr11
+godatadriven_pydantic-avro_pr113
+godatadriven_pydantic-avro_pr12
+godatadriven_pydantic-avro_pr137
+godatadriven_pydantic-avro_pr143
+godatadriven_pydantic-avro_pr144
+godatadriven_pydantic-avro_pr20
+godatadriven_pydantic-avro_pr26
+godatadriven_pydantic-avro_pr31
+godatadriven_pydantic-avro_pr4
+godatadriven_pydantic-avro_pr43
+godatadriven_pydantic-avro_pr49
+godatadriven_pydantic-avro_pr58
+godatadriven_pydantic-avro_pr8
+godatadriven_pydantic-avro_pr82
+golosegor_pyspark-nested-fields-functions_pr7
+goodmami_wn_pr173
+goodmami_wn_pr206
+goodmami_wn_pr218
+goodmami_wn_pr227
+goodmami_wn_pr229
+goodmami_wn_pr232
+goodmami_wn_pr240
+goodmami_wn_pr243
+goodmami_wn_pr247
+goodmami_wn_pr249
+goodmami_wn_pr251
+goodmami_wn_pr258
+goodmami_wn_pr259
+goodmami_wn_pr264
+goodmami_wn_pr284
+goodmami_wn_pr287
+goodmami_wn_pr288
+google-deepmind_treescope_pr27
+google-deepmind_treescope_pr33
+google-deepmind_treescope_pr43
+google-deepmind_treescope_pr48
+google_brotli_pr1021
+google_brotli_pr1022
+google_brotli_pr1023
+google_brotli_pr1182
+google_brotli_pr1278
+google_brotli_pr1282
+google_brotli_pr1305
+google_brotli_pr1316
+google_brotli_pr1326
+google_brotli_pr1328
+google_brotli_pr1329
+google_brotli_pr1330
+google_brotli_pr1340
+google_brotli_pr1342
+google_brotli_pr1349
+google_brotli_pr1392
+google_brotli_pr582
+google_brotli_pr583
+google_brotli_pr601
+google_brotli_pr611
+google_brotli_pr612
+google_brotli_pr636
+google_brotli_pr657
+google_brotli_pr677
+google_brotli_pr686
+google_brotli_pr699
+google_brotli_pr702
+google_brotli_pr709
+google_brotli_pr714
+google_brotli_pr719
+google_brotli_pr722
+google_brotli_pr761
+google_brotli_pr766
+google_brotli_pr768
+google_brotli_pr798
+google_brotli_pr887
+google_brotli_pr893
+google_brotli_pr906
+google_brotli_pr929
+google_brotli_pr965
+google_brotli_pr988
+google_brotli_pr997
+google_flatbuffers_pr235
+google_flatbuffers_pr237
+google_flatbuffers_pr238
+google_flatbuffers_pr259
+google_flatbuffers_pr286
+google_flatbuffers_pr288
+google_flatbuffers_pr344
+google_flatbuffers_pr3491
+google_flatbuffers_pr3493
+google_flatbuffers_pr363
+google_flatbuffers_pr3791
+google_flatbuffers_pr3816
+google_flatbuffers_pr3843
+google_flatbuffers_pr3844
+google_flatbuffers_pr3850
+google_flatbuffers_pr3854
+google_flatbuffers_pr3859
+google_flatbuffers_pr3905
+google_flatbuffers_pr3994
+google_flatbuffers_pr4003
+google_flatbuffers_pr4119
+google_flatbuffers_pr4132
+google_flatbuffers_pr4153
+google_flatbuffers_pr4197
+google_flatbuffers_pr4210
+google_flatbuffers_pr4214
+google_flatbuffers_pr4217
+google_flatbuffers_pr4259
+google_flatbuffers_pr4296
+google_flatbuffers_pr4301
+google_flatbuffers_pr4312
+google_flatbuffers_pr4341
+google_flatbuffers_pr4386
+google_flatbuffers_pr4395
+google_flatbuffers_pr4433
+google_flatbuffers_pr4452
+google_flatbuffers_pr4453
+google_flatbuffers_pr4459
+google_flatbuffers_pr4476
+google_flatbuffers_pr4481
+google_flatbuffers_pr4491
+google_flatbuffers_pr4516
+google_flatbuffers_pr4551
+google_flatbuffers_pr4572
+google_flatbuffers_pr4575
+google_flatbuffers_pr4583
+google_flatbuffers_pr4590
+google_flatbuffers_pr4594
+google_flatbuffers_pr4595
+google_flatbuffers_pr4608
+google_flatbuffers_pr4621
+google_flatbuffers_pr4633
+google_flatbuffers_pr4648
+google_flatbuffers_pr4672
+google_flatbuffers_pr4676
+google_flatbuffers_pr4695
+google_flatbuffers_pr4700
+google_flatbuffers_pr4701
+google_flatbuffers_pr4730
+google_flatbuffers_pr4736
+google_flatbuffers_pr4768
+google_flatbuffers_pr4781
+google_flatbuffers_pr4820
+google_flatbuffers_pr4829
+google_flatbuffers_pr4842
+google_flatbuffers_pr4849
+google_flatbuffers_pr4862
+google_flatbuffers_pr4912
+google_flatbuffers_pr4923
+google_flatbuffers_pr4926
+google_flatbuffers_pr4928
+google_flatbuffers_pr4933
+google_flatbuffers_pr4940
+google_flatbuffers_pr4944
+google_flatbuffers_pr4946
+google_flatbuffers_pr4966
+google_flatbuffers_pr4970
+google_flatbuffers_pr4975
+google_flatbuffers_pr4994
+google_flatbuffers_pr4995
+google_flatbuffers_pr5009
+google_flatbuffers_pr5021
+google_flatbuffers_pr5040
+google_flatbuffers_pr5105
+google_flatbuffers_pr5123
+google_flatbuffers_pr5128
+google_flatbuffers_pr5136
+google_flatbuffers_pr5139
+google_flatbuffers_pr5155
+google_flatbuffers_pr5168
+google_flatbuffers_pr5174
+google_flatbuffers_pr5177
+google_flatbuffers_pr5188
+google_flatbuffers_pr5205
+google_flatbuffers_pr5209
+google_flatbuffers_pr5221
+google_flatbuffers_pr5229
+google_flatbuffers_pr5232
+google_flatbuffers_pr5235
+google_flatbuffers_pr5271
+google_flatbuffers_pr5307
+google_flatbuffers_pr5314
+google_flatbuffers_pr5318
+google_flatbuffers_pr5336
+google_flatbuffers_pr5337
+google_flatbuffers_pr5344
+google_flatbuffers_pr5347
+google_flatbuffers_pr5355
+google_flatbuffers_pr5385
+google_flatbuffers_pr5421
+google_flatbuffers_pr5428
+google_flatbuffers_pr5486
+google_flatbuffers_pr5491
+google_flatbuffers_pr5512
+google_flatbuffers_pr5533
+google_flatbuffers_pr5543
+google_flatbuffers_pr5564
+google_flatbuffers_pr5574
+google_flatbuffers_pr5577
+google_flatbuffers_pr5579
+google_flatbuffers_pr5586
+google_flatbuffers_pr5587
+google_flatbuffers_pr5598
+google_flatbuffers_pr5613
+google_flatbuffers_pr5616
+google_flatbuffers_pr5631
+google_flatbuffers_pr5634
+google_flatbuffers_pr5640
+google_flatbuffers_pr5669
+google_flatbuffers_pr5681
+google_flatbuffers_pr5697
+google_flatbuffers_pr5707
+google_flatbuffers_pr5721
+google_flatbuffers_pr5725
+google_flatbuffers_pr5740
+google_flatbuffers_pr5752
+google_flatbuffers_pr5785
+google_flatbuffers_pr5802
+google_flatbuffers_pr5827
+google_flatbuffers_pr5830
+google_flatbuffers_pr5835
+google_flatbuffers_pr5853
+google_flatbuffers_pr5921
+google_flatbuffers_pr5934
+google_flatbuffers_pr5938
+google_flatbuffers_pr5981
+google_flatbuffers_pr5991
+google_flatbuffers_pr5998
+google_flatbuffers_pr5999
+google_flatbuffers_pr6004
+google_flatbuffers_pr6009
+google_flatbuffers_pr6016
+google_flatbuffers_pr6029
+google_flatbuffers_pr6040
+google_flatbuffers_pr608
+google_flatbuffers_pr6095
+google_flatbuffers_pr6098
+google_flatbuffers_pr6105
+google_flatbuffers_pr6129
+google_flatbuffers_pr6135
+google_flatbuffers_pr6137
+google_flatbuffers_pr6142
+google_flatbuffers_pr6155
+google_flatbuffers_pr6156
+google_flatbuffers_pr6193
+google_flatbuffers_pr6206
+google_flatbuffers_pr6207
+google_flatbuffers_pr6210
+google_flatbuffers_pr6214
+google_flatbuffers_pr6217
+google_flatbuffers_pr6232
+google_flatbuffers_pr6235
+google_flatbuffers_pr6256
+google_flatbuffers_pr6257
+google_flatbuffers_pr6269
+google_flatbuffers_pr6308
+google_flatbuffers_pr6318
+google_flatbuffers_pr6328
+google_flatbuffers_pr6336
+google_flatbuffers_pr6354
+google_flatbuffers_pr6365
+google_flatbuffers_pr6373
+google_flatbuffers_pr6387
+google_flatbuffers_pr6388
+google_flatbuffers_pr6389
+google_flatbuffers_pr6392
+google_flatbuffers_pr6403
+google_flatbuffers_pr6417
+google_flatbuffers_pr6450
+google_flatbuffers_pr6452
+google_flatbuffers_pr6456
+google_flatbuffers_pr6539
+google_flatbuffers_pr6554
+google_flatbuffers_pr6564
+google_flatbuffers_pr6588
+google_flatbuffers_pr6592
+google_flatbuffers_pr6593
+google_flatbuffers_pr6606
+google_flatbuffers_pr6635
+google_flatbuffers_pr6651
+google_flatbuffers_pr6661
+google_flatbuffers_pr6662
+google_flatbuffers_pr6663
+google_flatbuffers_pr6716
+google_flatbuffers_pr6722
+google_flatbuffers_pr6723
+google_flatbuffers_pr6725
+google_flatbuffers_pr6729
+google_flatbuffers_pr6735
+google_flatbuffers_pr6736
+google_flatbuffers_pr6743
+google_flatbuffers_pr6755
+google_flatbuffers_pr6758
+google_flatbuffers_pr6769
+google_flatbuffers_pr6785
+google_flatbuffers_pr6802
+google_flatbuffers_pr6808
+google_flatbuffers_pr6815
+google_flatbuffers_pr6852
+google_flatbuffers_pr6866
+google_flatbuffers_pr6868
+google_flatbuffers_pr6879
+google_flatbuffers_pr6915
+google_flatbuffers_pr6920
+google_flatbuffers_pr6924
+google_importlab_pr10
+google_importlab_pr13
+google_importlab_pr17
+google_importlab_pr20
+google_importlab_pr23
+google_importlab_pr29
+google_importlab_pr30
+google_importlab_pr5
+google_importlab_pr54
+google_importlab_pr56
+google_importlab_pr7
+google_importlab_pr9
+google_mediapy_pr10
+google_mediapy_pr22
+google_mediapy_pr28
+google_mediapy_pr34
+google_mediapy_pr35
+google_mediapy_pr46
+google_mediapy_pr48
+google_mediapy_pr52
+google_mediapy_pr55
+google_mediapy_pr60
+google_pasta_pr10
+google_pasta_pr11
+google_pinject_pr49
+googleapis_proto-plus-python_pr107
+googleapis_proto-plus-python_pr110
+googleapis_proto-plus-python_pr112
+googleapis_proto-plus-python_pr118
+googleapis_proto-plus-python_pr129
+googleapis_proto-plus-python_pr140
+googleapis_proto-plus-python_pr154
+googleapis_proto-plus-python_pr164
+googleapis_proto-plus-python_pr178
+googleapis_proto-plus-python_pr180
+googleapis_proto-plus-python_pr202
+googleapis_proto-plus-python_pr211
+googleapis_proto-plus-python_pr213
+googleapis_proto-plus-python_pr215
+googleapis_proto-plus-python_pr226
+googleapis_proto-plus-python_pr227
+googleapis_proto-plus-python_pr232
+googleapis_proto-plus-python_pr248
+googleapis_proto-plus-python_pr252
+googleapis_proto-plus-python_pr255
+googleapis_proto-plus-python_pr267
+googleapis_proto-plus-python_pr280
+googleapis_proto-plus-python_pr295
+googleapis_proto-plus-python_pr301
+googleapis_proto-plus-python_pr302
+googleapis_proto-plus-python_pr327
+googleapis_proto-plus-python_pr334
+googleapis_proto-plus-python_pr336
+googleapis_proto-plus-python_pr348
+googleapis_proto-plus-python_pr35
+googleapis_proto-plus-python_pr384
+googleapis_proto-plus-python_pr39
+googleapis_proto-plus-python_pr40
+googleapis_proto-plus-python_pr433
+googleapis_proto-plus-python_pr477
+googleapis_proto-plus-python_pr57
+googleapis_proto-plus-python_pr61
+googleapis_proto-plus-python_pr73
+googleapis_proto-plus-python_pr90
+googleapis_proto-plus-python_pr92
+googleapis_python-datastore_pr104
+googleapis_python-datastore_pr115
+googleapis_python-datastore_pr120
+googleapis_python-datastore_pr123
+googleapis_python-datastore_pr136
+googleapis_python-datastore_pr141
+googleapis_python-datastore_pr143
+googleapis_python-datastore_pr165
+googleapis_python-datastore_pr19
+googleapis_python-datastore_pr190
+googleapis_python-datastore_pr239
+googleapis_python-datastore_pr242
+googleapis_python-datastore_pr248
+googleapis_python-db-dtypes-pandas_pr100
+googleapis_python-db-dtypes-pandas_pr102
+googleapis_python-db-dtypes-pandas_pr11
+googleapis_python-db-dtypes-pandas_pr20
+googleapis_python-db-dtypes-pandas_pr32
+googleapis_python-db-dtypes-pandas_pr39
+googleapis_python-db-dtypes-pandas_pr54
+googleapis_python-db-dtypes-pandas_pr60
+googleapis_python-db-dtypes-pandas_pr64
+googleapis_python-db-dtypes-pandas_pr8
+googleapis_python-db-dtypes-pandas_pr85
+googleapis_python-documentai-toolbox_pr10
+googleapis_python-documentai-toolbox_pr12
+googleapis_python-documentai-toolbox_pr14
+googleapis_python-documentai-toolbox_pr15
+googleapis_python-documentai-toolbox_pr17
+googleapis_python-documentai-toolbox_pr21
+googleapis_python-documentai-toolbox_pr23
+googleapis_python-documentai-toolbox_pr7
+googleapis_python-firestore_pr182
+googleapis_python-firestore_pr202
+googleapis_python-firestore_pr205
+googleapis_python-firestore_pr219
+googleapis_python-firestore_pr222
+googleapis_python-firestore_pr225
+googleapis_python-firestore_pr254
+googleapis_python-firestore_pr256
+googleapis_python-firestore_pr269
+googleapis_python-firestore_pr274
+googleapis_python-firestore_pr280
+googleapis_python-firestore_pr300
+googleapis_python-firestore_pr316
+googleapis_python-firestore_pr319
+googleapis_python-firestore_pr325
+googleapis_python-firestore_pr331
+googleapis_python-firestore_pr340
+googleapis_python-firestore_pr370
+googleapis_python-firestore_pr385
+googleapis_python-firestore_pr388
+googleapis_python-firestore_pr396
+googleapis_python-firestore_pr402
+googleapis_python-firestore_pr405
+googleapis_python-firestore_pr407
+googleapis_python-firestore_pr420
+googleapis_python-firestore_pr440
+googleapis_python-firestore_pr452
+googleapis_python-firestore_pr456
+googleapis_python-firestore_pr458
+googleapis_python-firestore_pr464
+googleapis_python-firestore_pr467
+googleapis_python-firestore_pr500
+googleapis_python-firestore_pr501
+googleapis_python-firestore_pr513
+googleapis_python-firestore_pr523
+googleapis_python-runtimeconfig_pr265
+googlefonts_ufo2ft_pr289
+googlefonts_ufo2ft_pr299
+googlefonts_ufo2ft_pr300
+googlefonts_ufo2ft_pr314
+googlefonts_ufo2ft_pr316
+googlefonts_ufo2ft_pr318
+googlefonts_ufo2ft_pr322
+googlefonts_ufo2ft_pr324
+googlefonts_ufo2ft_pr333
+googlefonts_ufo2ft_pr335
+googlefonts_ufo2ft_pr354
+googlefonts_ufo2ft_pr358
+googlefonts_ufo2ft_pr359
+googlefonts_ufo2ft_pr361
+googlefonts_ufo2ft_pr364
+googlefonts_ufo2ft_pr380
+googlefonts_ufo2ft_pr495
+googlefonts_ufo2ft_pr714
+googlefonts_ufo2ft_pr732
+googlefonts_ufo2ft_pr772
+googlefonts_ufo2ft_pr780
+googlefonts_ufo2ft_pr787
+googlefonts_ufo2ft_pr79
+googlefonts_ufo2ft_pr796
+googlefonts_ufo2ft_pr805
+googlefonts_ufo2ft_pr811
+googlefonts_ufo2ft_pr813
+googlefonts_ufo2ft_pr815
+googlefonts_ufo2ft_pr816
+googlefonts_ufo2ft_pr817
+googlefonts_ufo2ft_pr821
+googlefonts_ufo2ft_pr826
+googlefonts_ufo2ft_pr840
+googlefonts_ufo2ft_pr841
+googlefonts_ufo2ft_pr842
+googlefonts_ufo2ft_pr845
+googlefonts_ufo2ft_pr866
+googlefonts_ufo2ft_pr869
+googlefonts_ufo2ft_pr870
+googlefonts_ufo2ft_pr871
+googlefonts_ufo2ft_pr873
+googlefonts_ufo2ft_pr876
+googlefonts_ufo2ft_pr881
+googlefonts_ufo2ft_pr886
+googlefonts_ufo2ft_pr89
+googlefonts_ufo2ft_pr897
+googlefonts_ufo2ft_pr909
+googlefonts_ufo2ft_pr916
+googlefonts_ufo2ft_pr918
+googlefonts_ufo2ft_pr926
+googlefonts_ufo2ft_pr931
+googlefonts_ufo2ft_pr935
+googlefonts_ufo2ft_pr936
+googlefonts_ufo2ft_pr942
+googlefonts_ufo2ft_pr943
+goose3_goose3_pr118
+goose3_goose3_pr119
+goose3_goose3_pr126
+goose3_goose3_pr134
+goose3_goose3_pr137
+goose3_goose3_pr138
+goose3_goose3_pr142
+goose3_goose3_pr147
+goose3_goose3_pr149
+goose3_goose3_pr152
+goose3_goose3_pr154
+goose3_goose3_pr157
+goose3_goose3_pr159
+goose3_goose3_pr162
+goose3_goose3_pr163
+goose3_goose3_pr168
+goose3_goose3_pr171
+goose3_goose3_pr176
+goose3_goose3_pr180
+goose3_goose3_pr214
+goose3_goose3_pr24
+goose3_goose3_pr25
+goose3_goose3_pr35
+goose3_goose3_pr43
+goose3_goose3_pr46
+goose3_goose3_pr52
+goose3_goose3_pr54
+goose3_goose3_pr60
+goose3_goose3_pr64
+goose3_goose3_pr66
+goose3_goose3_pr73
+goose3_goose3_pr77
+goose3_goose3_pr80
+goose3_goose3_pr85
+goose3_goose3_pr89
+goose3_goose3_pr90
+goose3_goose3_pr93
+gorakhargosh_watchdog_pr1011
+gorakhargosh_watchdog_pr1014
+gorakhargosh_watchdog_pr1032
+gorakhargosh_watchdog_pr1033
+gorakhargosh_watchdog_pr1050
+gorakhargosh_watchdog_pr1051
+gorakhargosh_watchdog_pr1055
+gorakhargosh_watchdog_pr1057
+gorakhargosh_watchdog_pr1060
+gorakhargosh_watchdog_pr1084
+gorakhargosh_watchdog_pr1086
+gorakhargosh_watchdog_pr1088
+gorakhargosh_watchdog_pr1096
+gorakhargosh_watchdog_pr1101
+gorakhargosh_watchdog_pr1102
+gorakhargosh_watchdog_pr464
+gorakhargosh_watchdog_pr477
+gorakhargosh_watchdog_pr498
+gorakhargosh_watchdog_pr503
+gorakhargosh_watchdog_pr506
+gorakhargosh_watchdog_pr513
+gorakhargosh_watchdog_pr515
+gorakhargosh_watchdog_pr527
+gorakhargosh_watchdog_pr528
+gorakhargosh_watchdog_pr530
+gorakhargosh_watchdog_pr534
+gorakhargosh_watchdog_pr536
+gorakhargosh_watchdog_pr573
+gorakhargosh_watchdog_pr581
+gorakhargosh_watchdog_pr588
+gorakhargosh_watchdog_pr597
+gorakhargosh_watchdog_pr602
+gorakhargosh_watchdog_pr616
+gorakhargosh_watchdog_pr622
+gorakhargosh_watchdog_pr631
+gorakhargosh_watchdog_pr642
+gorakhargosh_watchdog_pr655
+gorakhargosh_watchdog_pr676
+gorakhargosh_watchdog_pr677
+gorakhargosh_watchdog_pr698
+gorakhargosh_watchdog_pr704
+gorakhargosh_watchdog_pr726
+gorakhargosh_watchdog_pr727
+gorakhargosh_watchdog_pr733
+gorakhargosh_watchdog_pr734
+gorakhargosh_watchdog_pr742
+gorakhargosh_watchdog_pr750
+gorakhargosh_watchdog_pr760
+gorakhargosh_watchdog_pr783
+gorakhargosh_watchdog_pr786
+gorakhargosh_watchdog_pr796
+gorakhargosh_watchdog_pr799
+gorakhargosh_watchdog_pr807
+gorakhargosh_watchdog_pr810
+gorakhargosh_watchdog_pr814
+gorakhargosh_watchdog_pr815
+gorakhargosh_watchdog_pr831
+gorakhargosh_watchdog_pr836
+gorakhargosh_watchdog_pr861
+gorakhargosh_watchdog_pr869
+gorakhargosh_watchdog_pr872
+gorakhargosh_watchdog_pr886
+gorakhargosh_watchdog_pr887
+gorakhargosh_watchdog_pr895
+gorakhargosh_watchdog_pr896
+gorakhargosh_watchdog_pr897
+gorakhargosh_watchdog_pr908
+gorakhargosh_watchdog_pr940
+gorakhargosh_watchdog_pr946
+gorakhargosh_watchdog_pr959
+gorakhargosh_watchdog_pr968
+gorakhargosh_watchdog_pr969
+gorakhargosh_watchdog_pr986
+gorakhargosh_watchdog_pr989
+gotcha_ipdb_pr193
+gotcha_ipdb_pr213
+gotcha_ipdb_pr263
+grafana-toolbox_grafana-client_pr27
+grafana-toolbox_grafana-client_pr28
+grafana-toolbox_grafana-client_pr34
+grafana-toolbox_grafana-client_pr7
+grafana-toolbox_grafana-client_pr9
+graphql-python_graphql-server-core_pr37
+graphql-python_graphql-server_pr35
+gristlabs_asttokens_pr114
+gristlabs_asttokens_pr116
+gristlabs_asttokens_pr155
+gristlabs_asttokens_pr156
+gristlabs_asttokens_pr167
+growthbook_growthbook-python_pr19
+growthbook_growthbook-python_pr22
+growthbook_growthbook-python_pr30
+growthbook_growthbook-python_pr40
+growthbook_growthbook-python_pr41
+growthbook_growthbook-python_pr55
+growthbook_growthbook-python_pr64
+growthbook_growthbook-python_pr66
+growthbook_growthbook-python_pr77
+gruebel_pycep_pr109
+gruebel_pycep_pr120
+gruebel_pycep_pr137
+gruebel_pycep_pr151
+gruebel_pycep_pr180
+gruebel_pycep_pr181
+gruebel_pycep_pr320
+gruebel_pycep_pr321
+gruebel_pycep_pr322
+gruebel_pycep_pr323
+gruebel_pycep_pr326
+gruebel_pycep_pr327
+gruebel_pycep_pr328
+gruebel_pycep_pr33
+gruebel_pycep_pr41
+gruebel_pycep_pr52
+gruebel_pycep_pr64
+gtaylor_python-colormath_pr37
+guillermo-navas-palencia_optbinning_pr101
+guillermo-navas-palencia_optbinning_pr18
+guillermo-navas-palencia_optbinning_pr23
+guillermo-navas-palencia_optbinning_pr28
+guillermo-navas-palencia_optbinning_pr34
+guillermo-navas-palencia_optbinning_pr42
+guillermo-navas-palencia_optbinning_pr44
+guillermo-navas-palencia_optbinning_pr5
+guillermo-navas-palencia_optbinning_pr95
+guillermo-navas-palencia_optbinning_pr97
+guillp_jwskate_pr13
+guillp_jwskate_pr16
+guillp_jwskate_pr17
+guillp_jwskate_pr19
+guillp_jwskate_pr2
+guillp_jwskate_pr21
+guillp_jwskate_pr22
+guillp_jwskate_pr26
+guillp_jwskate_pr27
+guillp_jwskate_pr3
+guillp_jwskate_pr4
+guillp_jwskate_pr43
+guillp_jwskate_pr45
+guysalt_python-inquirer3_pr61
+guysalt_python-inquirer3_pr67
+guysalt_python-inquirer3_pr94
+h2oai_authn-py_pr13
+h2oai_authn-py_pr4
+h2oai_authn-py_pr5
+h2oai_cloud-discovery-py_pr13
+h2oai_cloud-discovery-py_pr18
+h2oai_cloud-discovery-py_pr19
+h2oai_cloud-discovery-py_pr20
+h2oai_cloud-discovery-py_pr21
+h2oai_cloud-discovery-py_pr8
+h5io_h5io_pr58
+h5netcdf_h5netcdf_pr102
+h5netcdf_h5netcdf_pr104
+h5netcdf_h5netcdf_pr107
+h5netcdf_h5netcdf_pr108
+h5netcdf_h5netcdf_pr109
+h5netcdf_h5netcdf_pr112
+h5netcdf_h5netcdf_pr117
+h5netcdf_h5netcdf_pr121
+h5netcdf_h5netcdf_pr125
+h5netcdf_h5netcdf_pr126
+h5netcdf_h5netcdf_pr127
+h5netcdf_h5netcdf_pr129
+h5netcdf_h5netcdf_pr135
+h5netcdf_h5netcdf_pr140
+h5netcdf_h5netcdf_pr150
+h5netcdf_h5netcdf_pr151
+h5netcdf_h5netcdf_pr155
+h5netcdf_h5netcdf_pr166
+h5netcdf_h5netcdf_pr168
+h5netcdf_h5netcdf_pr181
+h5netcdf_h5netcdf_pr183
+h5netcdf_h5netcdf_pr186
+h5netcdf_h5netcdf_pr194
+h5netcdf_h5netcdf_pr213
+h5netcdf_h5netcdf_pr218
+h5netcdf_h5netcdf_pr220
+h5netcdf_h5netcdf_pr238
+h5netcdf_h5netcdf_pr252
+h5netcdf_h5netcdf_pr256
+h5netcdf_h5netcdf_pr265
+h5netcdf_h5netcdf_pr270
+h5netcdf_h5netcdf_pr275
+h5netcdf_h5netcdf_pr285
+h5netcdf_h5netcdf_pr286
+h5netcdf_h5netcdf_pr288
+h5netcdf_h5netcdf_pr294
+h5netcdf_h5netcdf_pr297
+h5netcdf_h5netcdf_pr85
+h5netcdf_h5netcdf_pr95
+h5netcdf_h5netcdf_pr99
+hackebrot_jinja2-time_pr3
+hadialqattan_pycln_pr100
+hadialqattan_pycln_pr101
+hadialqattan_pycln_pr102
+hadialqattan_pycln_pr103
+hadialqattan_pycln_pr110
+hadialqattan_pycln_pr118
+hadialqattan_pycln_pr120
+hadialqattan_pycln_pr121
+hadialqattan_pycln_pr137
+hadialqattan_pycln_pr143
+hadialqattan_pycln_pr144
+hadialqattan_pycln_pr145
+hadialqattan_pycln_pr147
+hadialqattan_pycln_pr153
+hadialqattan_pycln_pr155
+hadialqattan_pycln_pr156
+hadialqattan_pycln_pr162
+hadialqattan_pycln_pr175
+hadialqattan_pycln_pr178
+hadialqattan_pycln_pr189
+hadialqattan_pycln_pr190
+hadialqattan_pycln_pr197
+hadialqattan_pycln_pr200
+hadialqattan_pycln_pr211
+hadialqattan_pycln_pr220
+hadialqattan_pycln_pr224
+hadialqattan_pycln_pr250
+hadialqattan_pycln_pr277
+hadialqattan_pycln_pr86
+hadialqattan_pycln_pr87
+hadialqattan_pycln_pr88
+hadialqattan_pycln_pr92
+hadialqattan_pycln_pr95
+hadialqattan_pycln_pr97
+hadialqattan_pycln_pr98
+hajimes_mmh3_pr79
+hakancelikdev_unimport_pr102
+hakancelikdev_unimport_pr105
+hakancelikdev_unimport_pr107
+hakancelikdev_unimport_pr108
+hakancelikdev_unimport_pr111
+hakancelikdev_unimport_pr112
+hakancelikdev_unimport_pr119
+hakancelikdev_unimport_pr125
+hakancelikdev_unimport_pr128
+hakancelikdev_unimport_pr130
+hakancelikdev_unimport_pr136
+hakancelikdev_unimport_pr138
+hakancelikdev_unimport_pr142
+hakancelikdev_unimport_pr145
+hakancelikdev_unimport_pr147
+hakancelikdev_unimport_pr149
+hakancelikdev_unimport_pr155
+hakancelikdev_unimport_pr157
+hakancelikdev_unimport_pr158
+hakancelikdev_unimport_pr159
+hakancelikdev_unimport_pr161
+hakancelikdev_unimport_pr172
+hakancelikdev_unimport_pr181
+hakancelikdev_unimport_pr185
+hakancelikdev_unimport_pr189
+hakancelikdev_unimport_pr191
+hakancelikdev_unimport_pr193
+hakancelikdev_unimport_pr208
+hakancelikdev_unimport_pr230
+hakancelikdev_unimport_pr234
+hakancelikdev_unimport_pr24
+hakancelikdev_unimport_pr241
+hakancelikdev_unimport_pr266
+hakancelikdev_unimport_pr279
+hakancelikdev_unimport_pr289
+hakancelikdev_unimport_pr29
+hakancelikdev_unimport_pr31
+hakancelikdev_unimport_pr34
+hakancelikdev_unimport_pr50
+hakancelikdev_unimport_pr53
+hakancelikdev_unimport_pr54
+hakancelikdev_unimport_pr55
+hakancelikdev_unimport_pr60
+hakancelikdev_unimport_pr61
+hakancelikdev_unimport_pr62
+hakancelikdev_unimport_pr64
+hakancelikdev_unimport_pr71
+hakancelikdev_unimport_pr81
+hakancelikdev_unimport_pr83
+hakancelikdev_unimport_pr86
+hakancelikdev_unimport_pr95
+hamdanal_rich-argparse_pr122
+hamdanal_rich-argparse_pr123
+hamdanal_rich-argparse_pr124
+hamdanal_rich-argparse_pr131
+hamdanal_rich-argparse_pr135
+hamdanal_rich-argparse_pr14
+hamdanal_rich-argparse_pr142
+hamdanal_rich-argparse_pr149
+hamdanal_rich-argparse_pr153
+hamdanal_rich-argparse_pr17
+hamdanal_rich-argparse_pr20
+hamdanal_rich-argparse_pr21
+hamdanal_rich-argparse_pr23
+hamdanal_rich-argparse_pr37
+hamdanal_rich-argparse_pr38
+hamdanal_rich-argparse_pr43
+hamdanal_rich-argparse_pr45
+hamdanal_rich-argparse_pr50
+hamdanal_rich-argparse_pr57
+hamdanal_rich-argparse_pr68
+hamdanal_rich-argparse_pr74
+hamdanal_rich-argparse_pr75
+hamdanal_rich-argparse_pr90
+hamdanal_rich-argparse_pr92
+hamdanal_rich-argparse_pr97
+hamdanal_rich-argparse_pr98
+hammem_monarchmoney_pr102
+hammem_monarchmoney_pr120
+hammem_monarchmoney_pr83
+hammem_monarchmoney_pr84
+hammem_monarchmoney_pr85
+hammem_monarchmoney_pr92
+hammem_monarchmoney_pr93
+harlowja_fasteners_pr13
+harlowja_fasteners_pr21
+harlowja_fasteners_pr23
+harlowja_fasteners_pr3
+harlowja_fasteners_pr73
+heremaps_flexible-polyline_pr1
+heremaps_flexible-polyline_pr24
+heroku_salesforce-bulk_pr42
+heroku_salesforce-bulk_pr49
+heroku_salesforce-bulk_pr86
+hetznercloud_hcloud-python_pr104
+hetznercloud_hcloud-python_pr106
+hetznercloud_hcloud-python_pr116
+hetznercloud_hcloud-python_pr134
+hetznercloud_hcloud-python_pr135
+hetznercloud_hcloud-python_pr137
+hetznercloud_hcloud-python_pr140
+hetznercloud_hcloud-python_pr144
+hetznercloud_hcloud-python_pr160
+hetznercloud_hcloud-python_pr185
+hetznercloud_hcloud-python_pr192
+hetznercloud_hcloud-python_pr199
+hetznercloud_hcloud-python_pr208
+hetznercloud_hcloud-python_pr222
+hetznercloud_hcloud-python_pr227
+hetznercloud_hcloud-python_pr228
+hetznercloud_hcloud-python_pr231
+hetznercloud_hcloud-python_pr240
+hetznercloud_hcloud-python_pr243
+hetznercloud_hcloud-python_pr246
+hetznercloud_hcloud-python_pr251
+hetznercloud_hcloud-python_pr252
+hetznercloud_hcloud-python_pr253
+hetznercloud_hcloud-python_pr256
+hetznercloud_hcloud-python_pr272
+hetznercloud_hcloud-python_pr276
+hetznercloud_hcloud-python_pr279
+hetznercloud_hcloud-python_pr297
+hetznercloud_hcloud-python_pr300
+hetznercloud_hcloud-python_pr318
+hetznercloud_hcloud-python_pr320
+hetznercloud_hcloud-python_pr331
+hetznercloud_hcloud-python_pr363
+hetznercloud_hcloud-python_pr373
+hetznercloud_hcloud-python_pr376
+hetznercloud_hcloud-python_pr403
+hetznercloud_hcloud-python_pr404
+hetznercloud_hcloud-python_pr412
+hetznercloud_hcloud-python_pr416
+hetznercloud_hcloud-python_pr417
+hetznercloud_hcloud-python_pr423
+hetznercloud_hcloud-python_pr426
+hetznercloud_hcloud-python_pr430
+hetznercloud_hcloud-python_pr481
+hetznercloud_hcloud-python_pr488
+hetznercloud_hcloud-python_pr496
+hetznercloud_hcloud-python_pr504
+hetznercloud_hcloud-python_pr510
+hetznercloud_hcloud-python_pr511
+hetznercloud_hcloud-python_pr536
+hetznercloud_hcloud-python_pr542
+hetznercloud_hcloud-python_pr544
+hetznercloud_hcloud-python_pr558
+hetznercloud_hcloud-python_pr564
+hetznercloud_hcloud-python_pr568
+hetznercloud_hcloud-python_pr578
+hetznercloud_hcloud-python_pr580
+hetznercloud_hcloud-python_pr588
+hetznercloud_hcloud-python_pr590
+hetznercloud_hcloud-python_pr597
+hh-h_aiohttp-swagger3_pr15
+hh-h_aiohttp-swagger3_pr18
+hh-h_aiohttp-swagger3_pr92
+hhatto_autopep8_pr266
+hhatto_autopep8_pr267
+hhatto_autopep8_pr285
+hhatto_autopep8_pr288
+hhatto_autopep8_pr295
+hhatto_autopep8_pr308
+hhatto_autopep8_pr309
+hhatto_autopep8_pr310
+hhatto_autopep8_pr312
+hhatto_autopep8_pr313
+hhatto_autopep8_pr321
+hhatto_autopep8_pr336
+hhatto_autopep8_pr341
+hhatto_autopep8_pr350
+hhatto_autopep8_pr352
+hhatto_autopep8_pr354
+hhatto_autopep8_pr358
+hhatto_autopep8_pr371
+hhatto_autopep8_pr376
+hhatto_autopep8_pr386
+hhatto_autopep8_pr390
+hhatto_autopep8_pr397
+hhatto_autopep8_pr418
+hhatto_autopep8_pr420
+hhatto_autopep8_pr421
+hhatto_autopep8_pr423
+hhatto_autopep8_pr425
+hhatto_autopep8_pr437
+hhatto_autopep8_pr442
+hhatto_autopep8_pr450
+hhatto_autopep8_pr461
+hhatto_autopep8_pr464
+hhatto_autopep8_pr466
+hhatto_autopep8_pr491
+hhatto_autopep8_pr493
+hhatto_autopep8_pr494
+hhatto_autopep8_pr496
+hhatto_autopep8_pr498
+hhatto_autopep8_pr510
+hhatto_autopep8_pr511
+hhatto_autopep8_pr525
+hhatto_autopep8_pr526
+hhatto_autopep8_pr530
+hhatto_autopep8_pr532
+hhatto_autopep8_pr533
+hhatto_autopep8_pr537
+hhatto_autopep8_pr541
+hhatto_autopep8_pr546
+hhatto_autopep8_pr557
+hhatto_autopep8_pr580
+hhatto_autopep8_pr595
+hhatto_autopep8_pr597
+hhatto_autopep8_pr604
+hhatto_autopep8_pr608
+hhatto_autopep8_pr609
+hhatto_autopep8_pr618
+hhatto_autopep8_pr627
+hhatto_autopep8_pr642
+hhatto_autopep8_pr643
+hhatto_autopep8_pr650
+hhatto_autopep8_pr653
+hhatto_autopep8_pr663
+hhatto_autopep8_pr677
+hhatto_autopep8_pr748
+hhatto_autopep8_pr749
+hhatto_autopep8_pr750
+hhatto_autopep8_pr752
+hhatto_autopep8_pr758
+hhatto_autopep8_pr776
+hhatto_autopep8_pr787
+hightouchio_airflow-provider-hightouch_pr8
+hinthornw_dydantic_pr3
+holoviz-dev_pyct_pr76
+holoviz-dev_pyct_pr98
+holoviz_param_pr425
+holoviz_param_pr531
+holoviz_param_pr542
+holoviz_param_pr598
+holoviz_param_pr655
+holoviz_param_pr691
+holoviz_param_pr722
+holoviz_param_pr725
+holoviz_param_pr729
+holoviz_param_pr733
+holoviz_param_pr738
+holoviz_param_pr741
+holoviz_param_pr742
+holoviz_param_pr751
+holoviz_param_pr753
+holoviz_param_pr765
+holoviz_param_pr766
+holoviz_param_pr769
+holoviz_param_pr771
+holoviz_param_pr774
+holoviz_param_pr775
+holoviz_param_pr777
+holoviz_param_pr778
+holoviz_param_pr783
+holoviz_param_pr786
+holoviz_param_pr789
+holoviz_param_pr791
+holoviz_param_pr794
+holoviz_param_pr795
+holoviz_param_pr797
+holoviz_param_pr799
+holoviz_param_pr800
+holoviz_param_pr801
+holoviz_param_pr802
+holoviz_param_pr808
+holoviz_param_pr812
+holoviz_param_pr813
+holoviz_param_pr814
+holoviz_param_pr817
+holoviz_param_pr820
+holoviz_param_pr824
+holoviz_param_pr826
+holoviz_param_pr831
+holoviz_param_pr833
+holoviz_param_pr834
+holoviz_param_pr838
+holoviz_param_pr840
+holoviz_param_pr843
+holoviz_param_pr844
+holoviz_param_pr854
+holoviz_param_pr856
+holoviz_param_pr859
+holoviz_param_pr873
+holoviz_param_pr874
+holoviz_param_pr876
+holoviz_param_pr884
+holoviz_param_pr886
+holoviz_param_pr893
+holoviz_param_pr894
+holoviz_param_pr903
+holoviz_param_pr906
+holoviz_param_pr908
+holoviz_param_pr917
+holoviz_param_pr918
+holoviz_param_pr919
+holoviz_param_pr921
+holoviz_param_pr929
+holoviz_param_pr938
+holoviz_param_pr946
+holoviz_param_pr949
+holoviz_param_pr962
+home-assistant-libs_python-supervisor-client_pr152
+home-assistant-libs_python-supervisor-client_pr167
+home-assistant-libs_voluptuous-openapi_pr13
+home-assistant-libs_voluptuous-openapi_pr21
+home-assistant-libs_voluptuous-openapi_pr23
+home-assistant-libs_voluptuous-openapi_pr24
+home-assistant-libs_voluptuous-openapi_pr41
+home-assistant-libs_voluptuous-openapi_pr66
+home-assistant-libs_voluptuous-openapi_pr8
+home-assistant-libs_voluptuous-serialize_pr12
+home-assistant-libs_voluptuous-serialize_pr152
+home-assistant-libs_voluptuous-serialize_pr155
+home-assistant-libs_voluptuous-serialize_pr159
+honeybadger-io_honeybadger-python_pr163
+honeybadger-io_honeybadger-python_pr166
+honeybadger-io_honeybadger-python_pr170
+honeybadger-io_honeybadger-python_pr189
+honeybadger-io_honeybadger-python_pr196
+honeybadger-io_honeybadger-python_pr203
+honeybadger-io_honeybadger-python_pr207
+honeybadger-io_honeybadger-python_pr218
+honeybadger-io_honeybadger-python_pr225
+honeybadger-io_honeybadger-python_pr25
+honeybadger-io_honeybadger-python_pr28
+honeybadger-io_honeybadger-python_pr38
+honeybadger-io_honeybadger-python_pr50
+honeybadger-io_honeybadger-python_pr58
+honeybadger-io_honeybadger-python_pr63
+honeybadger-io_honeybadger-python_pr66
+honeybadger-io_honeybadger-python_pr67
+honeybadger-io_honeybadger-python_pr81
+honeycombio_libhoney-py_pr111
+honeycombio_libhoney-py_pr117
+honeycombio_libhoney-py_pr121
+honeycombio_libhoney-py_pr69
+honeycombio_libhoney-py_pr88
+honeycombio_libhoney-py_pr97
+horejsek_python-fastjsonschema_pr11
+horejsek_python-fastjsonschema_pr110
+horejsek_python-fastjsonschema_pr130
+horejsek_python-fastjsonschema_pr14
+horejsek_python-fastjsonschema_pr145
+horejsek_python-fastjsonschema_pr176
+horejsek_python-fastjsonschema_pr24
+horejsek_python-fastjsonschema_pr27
+horejsek_python-fastjsonschema_pr3
+horejsek_python-fastjsonschema_pr34
+horejsek_python-fastjsonschema_pr52
+horejsek_python-fastjsonschema_pr77
+horejsek_python-fastjsonschema_pr80
+horejsek_python-fastjsonschema_pr82
+houfu_redlines_pr19
+houfu_redlines_pr23
+houfu_redlines_pr28
+houfu_redlines_pr4
+houfu_redlines_pr63
+houfu_redlines_pr70
+houfu_redlines_pr72
+houfu_redlines_pr74
+hplt-project_sacremoses_pr14
+hplt-project_sacremoses_pr22
+hplt-project_sacremoses_pr29
+hplt-project_sacremoses_pr31
+hplt-project_sacremoses_pr39
+hplt-project_sacremoses_pr45
+hplt-project_sacremoses_pr47
+hplt-project_sacremoses_pr54
+hplt-project_sacremoses_pr56
+hplt-project_sacremoses_pr59
+hplt-project_sacremoses_pr63
+hplt-project_sacremoses_pr72
+hplt-project_sacremoses_pr9
+huggingface_kernels_pr167
+huggingface_kernels_pr178
+huggingface_setfit_pr1
+huggingface_setfit_pr12
+huggingface_setfit_pr14
+huggingface_setfit_pr17
+huggingface_setfit_pr18
+huggingface_setfit_pr23
+huggingface_setfit_pr25
+hugovk_pypistats_pr12
+hugovk_pypistats_pr13
+hugovk_pypistats_pr14
+hugovk_pypistats_pr15
+hugovk_pypistats_pr16
+hugovk_pypistats_pr18
+hugovk_pypistats_pr19
+hugovk_pypistats_pr2
+hugovk_pypistats_pr22
+hugovk_pypistats_pr23
+hugovk_pypistats_pr26
+hugovk_pypistats_pr27
+hugovk_pypistats_pr30
+hugovk_pypistats_pr38
+hugovk_pypistats_pr39
+hugovk_pypistats_pr41
+hugovk_pypistats_pr42
+hugovk_pypistats_pr46
+hugovk_pypistats_pr47
+hugovk_pypistats_pr5
+hugovk_pypistats_pr73
+hugovk_pypistats_pr79
+hugovk_pypistats_pr81
+hukkin_tomli-w_pr15
+hukkin_tomli-w_pr17
+hukkin_tomli-w_pr26
+hukkin_tomli-w_pr49
+hukkin_tomli-w_pr63
+hukkin_tomli-w_pr66
+hukkin_tomli-w_pr7
+hussein-awala_spark-on-k8s_pr1
+hussein-awala_spark-on-k8s_pr103
+hussein-awala_spark-on-k8s_pr109
+hussein-awala_spark-on-k8s_pr11
+hussein-awala_spark-on-k8s_pr117
+hussein-awala_spark-on-k8s_pr119
+hussein-awala_spark-on-k8s_pr12
+hussein-awala_spark-on-k8s_pr13
+hussein-awala_spark-on-k8s_pr133
+hussein-awala_spark-on-k8s_pr138
+hussein-awala_spark-on-k8s_pr17
+hussein-awala_spark-on-k8s_pr29
+hussein-awala_spark-on-k8s_pr36
+hussein-awala_spark-on-k8s_pr42
+hussein-awala_spark-on-k8s_pr57
+hussein-awala_spark-on-k8s_pr74
+hussein-awala_spark-on-k8s_pr75
+hussein-awala_spark-on-k8s_pr77
+hynek_environ-config_pr100
+hynek_environ-config_pr5
+hynek_environ-config_pr59
+hynek_environ-config_pr7
+hynek_environ-config_pr83
+hynek_pem_pr29
+hynek_pem_pr34
+hynek_pem_pr39
+hynek_pem_pr46
+hynek_pem_pr49
+hynek_pem_pr50
+hynek_prometheus-async_pr85
+hynek_svcs_pr139
+hynek_svcs_pr19
+hynek_svcs_pr4
+hynek_svcs_pr53
+hynek_svcs_pr83
+hynek_svcs_pr92
+i2mint_dol_pr57
+i2mint_i2_pr71
+ialbert_plac_pr51
+iamdual_ua-generator_pr2
+iamdual_ua-generator_pr28
+iamdual_ua-generator_pr29
+iamdual_ua-generator_pr4
+iamdual_ua-generator_pr41
+iamdual_ua-generator_pr5
+iamdual_ua-generator_pr52
+iamdual_ua-generator_pr8
+iamjackg_md2cf_pr42
+ianare_exif-py_pr225
+ianlini_flatten-dict_pr35
+ianlini_flatten-dict_pr44
+ianlini_flatten-dict_pr49
+ianlini_flatten-dict_pr55
+icgood_proxy-protocol_pr53
+ihmwg_python-ihm_pr109
+ihmwg_python-ihm_pr49
+ikalnytskyi_picobox_pr100
+ikalnytskyi_picobox_pr14
+ikalnytskyi_picobox_pr16
+ikalnytskyi_picobox_pr17
+ikalnytskyi_picobox_pr23
+ikalnytskyi_picobox_pr26
+ikalnytskyi_picobox_pr33
+ikalnytskyi_picobox_pr37
+ikalnytskyi_picobox_pr39
+ikalnytskyi_picobox_pr49
+ikalnytskyi_picobox_pr66
+ikalnytskyi_picobox_pr69
+ikalnytskyi_picobox_pr79
+ikalnytskyi_picobox_pr83
+ikalnytskyi_picobox_pr84
+ikalnytskyi_picobox_pr85
+ikalnytskyi_picobox_pr90
+ikalnytskyi_picobox_pr91
+ikalnytskyi_picobox_pr93
+ikalnytskyi_picobox_pr96
+ikalnytskyi_picobox_pr97
+ikalnytskyi_picobox_pr99
+ikegami-yukino_jaconv_pr15
+imageio_imageio_pr141
+imageio_imageio_pr149
+imageio_imageio_pr162
+imageio_imageio_pr45
+influxdb_influxdb-python_pr18
+influxdb_influxdb-python_pr265
+influxdb_influxdb-python_pr266
+influxdb_influxdb-python_pr267
+influxdb_influxdb-python_pr271
+influxdb_influxdb-python_pr276
+influxdb_influxdb-python_pr277
+influxdb_influxdb-python_pr279
+influxdb_influxdb-python_pr281
+influxdb_influxdb-python_pr287
+influxdb_influxdb-python_pr289
+influxdb_influxdb-python_pr294
+influxdb_influxdb-python_pr301
+influxdb_influxdb-python_pr304
+influxdb_influxdb-python_pr306
+influxdb_influxdb-python_pr31
+influxdb_influxdb-python_pr321
+influxdb_influxdb-python_pr33
+influxdb_influxdb-python_pr330
+influxdb_influxdb-python_pr331
+influxdb_influxdb-python_pr36
+influxdb_influxdb-python_pr38
+influxdb_influxdb-python_pr402
+influxdb_influxdb-python_pr409
+influxdb_influxdb-python_pr43
+influxdb_influxdb-python_pr439
+influxdb_influxdb-python_pr465
+influxdb_influxdb-python_pr477
+influxdb_influxdb-python_pr495
+influxdb_influxdb-python_pr503
+influxdb_influxdb-python_pr508
+influxdb_influxdb-python_pr511
+influxdb_influxdb-python_pr518
+influxdb_influxdb-python_pr534
+influxdb_influxdb-python_pr536
+influxdb_influxdb-python_pr537
+influxdb_influxdb-python_pr542
+influxdb_influxdb-python_pr556
+influxdb_influxdb-python_pr557
+influxdb_influxdb-python_pr584
+influxdb_influxdb-python_pr606
+influxdb_influxdb-python_pr617
+influxdb_influxdb-python_pr648
+influxdb_influxdb-python_pr664
+influxdb_influxdb-python_pr678
+influxdb_influxdb-python_pr681
+influxdb_influxdb-python_pr684
+influxdb_influxdb-python_pr69
+influxdb_influxdb-python_pr702
+influxdb_influxdb-python_pr710
+influxdb_influxdb-python_pr716
+influxdb_influxdb-python_pr719
+influxdb_influxdb-python_pr72
+influxdb_influxdb-python_pr723
+influxdb_influxdb-python_pr732
+influxdb_influxdb-python_pr746
+influxdb_influxdb-python_pr753
+influxdb_influxdb-python_pr756
+influxdb_influxdb-python_pr766
+influxdb_influxdb-python_pr772
+influxdb_influxdb-python_pr778
+influxdb_influxdb-python_pr790
+influxdb_influxdb-python_pr806
+influxdb_influxdb-python_pr807
+influxdb_influxdb-python_pr808
+influxdb_influxdb-python_pr810
+influxdb_influxdb-python_pr811
+influxdb_influxdb-python_pr812
+influxdb_influxdb-python_pr813
+influxdb_influxdb-python_pr816
+influxdb_influxdb-python_pr827
+influxdb_influxdb-python_pr84
+influxdb_influxdb-python_pr851
+influxdb_influxdb-python_pr890
+influxdb_influxdb-python_pr926
+infobloxopen_infoblox-client_pr102
+infobloxopen_infoblox-client_pr105
+infobloxopen_infoblox-client_pr12
+infobloxopen_infoblox-client_pr120
+infobloxopen_infoblox-client_pr126
+infobloxopen_infoblox-client_pr128
+infobloxopen_infoblox-client_pr129
+infobloxopen_infoblox-client_pr13
+infobloxopen_infoblox-client_pr131
+infobloxopen_infoblox-client_pr135
+infobloxopen_infoblox-client_pr138
+infobloxopen_infoblox-client_pr14
+infobloxopen_infoblox-client_pr140
+infobloxopen_infoblox-client_pr143
+infobloxopen_infoblox-client_pr148
+infobloxopen_infoblox-client_pr153
+infobloxopen_infoblox-client_pr162
+infobloxopen_infoblox-client_pr165
+infobloxopen_infoblox-client_pr167
+infobloxopen_infoblox-client_pr174
+infobloxopen_infoblox-client_pr19
+infobloxopen_infoblox-client_pr201
+infobloxopen_infoblox-client_pr212
+infobloxopen_infoblox-client_pr213
+infobloxopen_infoblox-client_pr214
+infobloxopen_infoblox-client_pr227
+infobloxopen_infoblox-client_pr232
+infobloxopen_infoblox-client_pr234
+infobloxopen_infoblox-client_pr238
+infobloxopen_infoblox-client_pr258
+infobloxopen_infoblox-client_pr26
+infobloxopen_infoblox-client_pr262
+infobloxopen_infoblox-client_pr27
+infobloxopen_infoblox-client_pr276
+infobloxopen_infoblox-client_pr278
+infobloxopen_infoblox-client_pr28
+infobloxopen_infoblox-client_pr287
+infobloxopen_infoblox-client_pr288
+infobloxopen_infoblox-client_pr289
+infobloxopen_infoblox-client_pr29
+infobloxopen_infoblox-client_pr292
+infobloxopen_infoblox-client_pr295
+infobloxopen_infoblox-client_pr3
+infobloxopen_infoblox-client_pr31
+infobloxopen_infoblox-client_pr318
+infobloxopen_infoblox-client_pr32
+infobloxopen_infoblox-client_pr330
+infobloxopen_infoblox-client_pr331
+infobloxopen_infoblox-client_pr338
+infobloxopen_infoblox-client_pr339
+infobloxopen_infoblox-client_pr34
+infobloxopen_infoblox-client_pr345
+infobloxopen_infoblox-client_pr368
+infobloxopen_infoblox-client_pr384
+infobloxopen_infoblox-client_pr387
+infobloxopen_infoblox-client_pr42
+infobloxopen_infoblox-client_pr51
+infobloxopen_infoblox-client_pr53
+infobloxopen_infoblox-client_pr54
+infobloxopen_infoblox-client_pr59
+infobloxopen_infoblox-client_pr6
+infobloxopen_infoblox-client_pr60
+infobloxopen_infoblox-client_pr61
+infobloxopen_infoblox-client_pr66
+infobloxopen_infoblox-client_pr8
+infobloxopen_infoblox-client_pr81
+infobloxopen_infoblox-client_pr86
+infobloxopen_infoblox-client_pr95
+infobloxopen_infoblox-client_pr97
+infobloxopen_infoblox-client_pr99
+ionelmc_python-manhole_pr3
+ioxiocom_pyjwt-key-fetcher_pr19
+ioxiocom_pyjwt-key-fetcher_pr21
+ipython_ipython_pr13483
+ipython_ipython_pr13501
+ipython_ipython_pr13528
+ipython_ipython_pr13535
+ipython_ipython_pr13559
+ipython_ipython_pr13560
+ipython_ipython_pr13566
+ipython_ipython_pr13588
+ipython_ipython_pr13600
+ipython_ipython_pr13603
+ipython_ipython_pr13625
+ipython_ipython_pr13671
+ipython_ipython_pr13675
+ipython_ipython_pr13680
+ipython_ipython_pr13701
+ipython_ipython_pr13706
+ipython_ipython_pr13708
+ipython_ipython_pr13713
+ipython_ipython_pr13719
+ipython_ipython_pr13743
+ipython_ipython_pr13745
+ipython_ipython_pr13768
+ipython_ipython_pr13773
+ipython_ipython_pr13788
+ipython_ipython_pr13817
+ipython_ipython_pr13825
+ipython_ipython_pr13852
+ipython_ipython_pr13861
+ipython_ipython_pr13863
+ipython_ipython_pr13888
+ipython_ipython_pr13889
+ipython_ipython_pr13903
+ipython_ipython_pr13914
+ipython_ipython_pr13925
+ipython_ipython_pr13932
+ipython_ipython_pr13940
+ipython_ipython_pr13957
+ipython_ipython_pr13962
+ipython_ipython_pr13964
+ipython_ipython_pr13968
+ipython_ipython_pr13975
+ipython_ipython_pr13990
+ipython_ipython_pr13991
+ipython_ipython_pr14026
+ipython_ipython_pr14029
+ipython_ipython_pr14033
+ipython_ipython_pr14039
+ipython_ipython_pr14052
+ipython_ipython_pr14056
+ipython_ipython_pr14076
+ipython_ipython_pr14080
+ipython_ipython_pr14100
+ipython_ipython_pr14108
+ipython_ipython_pr14119
+ipython_ipython_pr14133
+ipython_ipython_pr14139
+ipython_ipython_pr14146
+ipython_ipython_pr14153
+ipython_ipython_pr14185
+ipython_ipython_pr14189
+ipython_ipython_pr14198
+ipython_ipython_pr14219
+ipython_ipython_pr14223
+ipython_ipython_pr14228
+ipython_ipython_pr14231
+ipython_ipython_pr14241
+ipython_ipython_pr14254
+ipython_ipython_pr14256
+ipython_ipython_pr14274
+ipython_ipython_pr14284
+ipython_ipython_pr14287
+ipython_ipython_pr14291
+ipython_ipython_pr14305
+ipython_ipython_pr14312
+ipython_ipython_pr14324
+ipython_ipython_pr14342
+ipython_ipython_pr14356
+ipython_traitlets_pr10
+ipython_traitlets_pr100
+ipython_traitlets_pr107
+ipython_traitlets_pr109
+ipython_traitlets_pr114
+ipython_traitlets_pr119
+ipython_traitlets_pr121
+ipython_traitlets_pr125
+ipython_traitlets_pr127
+ipython_traitlets_pr129
+ipython_traitlets_pr137
+ipython_traitlets_pr14
+ipython_traitlets_pr140
+ipython_traitlets_pr149
+ipython_traitlets_pr152
+ipython_traitlets_pr155
+ipython_traitlets_pr156
+ipython_traitlets_pr168
+ipython_traitlets_pr175
+ipython_traitlets_pr177
+ipython_traitlets_pr185
+ipython_traitlets_pr186
+ipython_traitlets_pr21
+ipython_traitlets_pr22
+ipython_traitlets_pr250
+ipython_traitlets_pr262
+ipython_traitlets_pr264
+ipython_traitlets_pr269
+ipython_traitlets_pr27
+ipython_traitlets_pr274
+ipython_traitlets_pr282
+ipython_traitlets_pr289
+ipython_traitlets_pr293
+ipython_traitlets_pr306
+ipython_traitlets_pr31
+ipython_traitlets_pr322
+ipython_traitlets_pr33
+ipython_traitlets_pr332
+ipython_traitlets_pr333
+ipython_traitlets_pr339
+ipython_traitlets_pr34
+ipython_traitlets_pr340
+ipython_traitlets_pr341
+ipython_traitlets_pr35
+ipython_traitlets_pr353
+ipython_traitlets_pr355
+ipython_traitlets_pr360
+ipython_traitlets_pr362
+ipython_traitlets_pr365
+ipython_traitlets_pr376
+ipython_traitlets_pr377
+ipython_traitlets_pr38
+ipython_traitlets_pr380
+ipython_traitlets_pr384
+ipython_traitlets_pr385
+ipython_traitlets_pr39
+ipython_traitlets_pr393
+ipython_traitlets_pr394
+ipython_traitlets_pr40
+ipython_traitlets_pr402
+ipython_traitlets_pr404
+ipython_traitlets_pr407
+ipython_traitlets_pr413
+ipython_traitlets_pr415
+ipython_traitlets_pr416
+ipython_traitlets_pr42
+ipython_traitlets_pr426
+ipython_traitlets_pr43
+ipython_traitlets_pr430
+ipython_traitlets_pr436
+ipython_traitlets_pr437
+ipython_traitlets_pr438
+ipython_traitlets_pr44
+ipython_traitlets_pr45
+ipython_traitlets_pr458
+ipython_traitlets_pr482
+ipython_traitlets_pr501
+ipython_traitlets_pr509
+ipython_traitlets_pr51
+ipython_traitlets_pr515
+ipython_traitlets_pr517
+ipython_traitlets_pr522
+ipython_traitlets_pr525
+ipython_traitlets_pr53
+ipython_traitlets_pr535
+ipython_traitlets_pr558
+ipython_traitlets_pr56
+ipython_traitlets_pr574
+ipython_traitlets_pr582
+ipython_traitlets_pr600
+ipython_traitlets_pr611
+ipython_traitlets_pr613
+ipython_traitlets_pr615
+ipython_traitlets_pr616
+ipython_traitlets_pr619
+ipython_traitlets_pr629
+ipython_traitlets_pr630
+ipython_traitlets_pr632
+ipython_traitlets_pr67
+ipython_traitlets_pr670
+ipython_traitlets_pr673
+ipython_traitlets_pr68
+ipython_traitlets_pr698
+ipython_traitlets_pr72
+ipython_traitlets_pr73
+ipython_traitlets_pr77
+ipython_traitlets_pr79
+ipython_traitlets_pr88
+ipython_traitlets_pr91
+itamarst_crochet_pr114
+itamarst_crochet_pr116
+itamarst_crochet_pr30
+itamarst_crochet_pr54
+itamarst_crochet_pr83
+itamarst_eliot_pr118
+itamarst_eliot_pr127
+itamarst_eliot_pr139
+itamarst_eliot_pr145
+itamarst_eliot_pr148
+itamarst_eliot_pr154
+itamarst_eliot_pr156
+itamarst_eliot_pr174
+itamarst_eliot_pr175
+itamarst_eliot_pr182
+itamarst_eliot_pr189
+itamarst_eliot_pr195
+itamarst_eliot_pr198
+itamarst_eliot_pr200
+itamarst_eliot_pr323
+itamarst_eliot_pr348
+itamarst_eliot_pr352
+itamarst_eliot_pr356
+itamarst_eliot_pr36
+itamarst_eliot_pr360
+itamarst_eliot_pr37
+itamarst_eliot_pr379
+itamarst_eliot_pr380
+itamarst_eliot_pr381
+itamarst_eliot_pr390
+itamarst_eliot_pr397
+itamarst_eliot_pr40
+itamarst_eliot_pr414
+itamarst_eliot_pr421
+itamarst_eliot_pr43
+itamarst_eliot_pr430
+itamarst_eliot_pr431
+itamarst_eliot_pr46
+itamarst_eliot_pr473
+itamarst_eliot_pr513
+itamarst_eliot_pr70
+iterative_dvc-data_pr103
+iterative_dvc-data_pr104
+iterative_dvc-data_pr105
+iterative_dvc-data_pr115
+iterative_dvc-data_pr118
+iterative_dvc-data_pr120
+iterative_dvc-data_pr142
+iterative_dvc-data_pr164
+iterative_dvc-data_pr196
+iterative_dvc-data_pr206
+iterative_dvc-data_pr211
+iterative_dvc-data_pr214
+iterative_dvc-data_pr79
+iterative_dvc-data_pr80
+iterative_dvc-data_pr82
+iterative_dvc-data_pr95
+iterative_dvc-data_pr96
+iterative_dvc-objects_pr147
+iterative_dvc-objects_pr149
+iterative_dvc-objects_pr160
+iterative_dvc-objects_pr161
+iterative_dvc-objects_pr169
+iterative_dvc-objects_pr218
+iterative_dvc-objects_pr221
+iterative_dvc-objects_pr229
+iterative_dvc-objects_pr237
+iterative_dvc-objects_pr245
+iterative_dvc-objects_pr262
+iterative_dvc-objects_pr265
+iterative_dvc-objects_pr30
+iterative_dvc-render_pr107
+iterative_dvc-render_pr111
+iterative_dvc-render_pr113
+iterative_dvc-render_pr124
+iterative_dvc-render_pr125
+iterative_dvc-render_pr127
+iterative_dvc-render_pr129
+iterative_dvc-render_pr130
+iterative_dvc-render_pr131
+iterative_dvc-render_pr133
+iterative_dvc-render_pr134
+iterative_dvc-render_pr142
+iterative_dvc-render_pr145
+iterative_dvc-render_pr146
+iterative_dvc-render_pr150
+iterative_dvc-render_pr151
+iterative_dvc-render_pr24
+iterative_dvc-render_pr39
+iterative_dvc-render_pr40
+iterative_dvc-render_pr45
+iterative_dvc-render_pr69
+iterative_dvc-render_pr73
+iterative_dvc-render_pr81
+iterative_dvc-render_pr96
+iterative_dvc-render_pr99
+iterative_gto_pr101
+iterative_gto_pr106
+iterative_gto_pr109
+iterative_gto_pr110
+iterative_gto_pr117
+iterative_gto_pr118
+iterative_gto_pr120
+iterative_gto_pr128
+iterative_gto_pr148
+iterative_gto_pr153
+iterative_gto_pr160
+iterative_gto_pr161
+iterative_gto_pr162
+iterative_gto_pr163
+iterative_gto_pr165
+iterative_gto_pr166
+iterative_gto_pr168
+iterative_gto_pr174
+iterative_gto_pr183
+iterative_gto_pr187
+iterative_gto_pr201
+iterative_gto_pr205
+iterative_gto_pr213
+iterative_gto_pr219
+iterative_gto_pr221
+iterative_gto_pr238
+iterative_gto_pr244
+iterative_gto_pr249
+iterative_gto_pr257
+iterative_gto_pr269
+iterative_gto_pr276
+iterative_gto_pr281
+iterative_gto_pr292
+iterative_gto_pr295
+iterative_gto_pr299
+iterative_gto_pr309
+iterative_gto_pr310
+iterative_gto_pr315
+iterative_gto_pr316
+iterative_gto_pr319
+iterative_gto_pr324
+iterative_gto_pr346
+iterative_gto_pr352
+iterative_gto_pr353
+iterative_gto_pr356
+iterative_gto_pr372
+iterative_gto_pr382
+iterative_gto_pr413
+iterative_gto_pr417
+iterative_gto_pr420
+iterative_gto_pr425
+iterative_gto_pr94
+iterative_gto_pr96
+iterative_gto_pr99
+iterative_morefs_pr14
+iterative_scmrepo_pr10
+iterative_scmrepo_pr101
+iterative_scmrepo_pr138
+iterative_scmrepo_pr145
+iterative_scmrepo_pr149
+iterative_scmrepo_pr150
+iterative_scmrepo_pr155
+iterative_scmrepo_pr159
+iterative_scmrepo_pr169
+iterative_scmrepo_pr188
+iterative_scmrepo_pr191
+iterative_scmrepo_pr2
+iterative_scmrepo_pr209
+iterative_scmrepo_pr213
+iterative_scmrepo_pr214
+iterative_scmrepo_pr216
+iterative_scmrepo_pr219
+iterative_scmrepo_pr220
+iterative_scmrepo_pr222
+iterative_scmrepo_pr224
+iterative_scmrepo_pr226
+iterative_scmrepo_pr229
+iterative_scmrepo_pr231
+iterative_scmrepo_pr235
+iterative_scmrepo_pr24
+iterative_scmrepo_pr244
+iterative_scmrepo_pr246
+iterative_scmrepo_pr25
+iterative_scmrepo_pr255
+iterative_scmrepo_pr261
+iterative_scmrepo_pr268
+iterative_scmrepo_pr269
+iterative_scmrepo_pr279
+iterative_scmrepo_pr281
+iterative_scmrepo_pr282
+iterative_scmrepo_pr32
+iterative_scmrepo_pr39
+iterative_scmrepo_pr46
+iterative_scmrepo_pr51
+iterative_scmrepo_pr53
+iterative_scmrepo_pr55
+iterative_scmrepo_pr59
+iterative_scmrepo_pr62
+iterative_scmrepo_pr67
+iterative_scmrepo_pr69
+iterative_scmrepo_pr75
+iterative_scmrepo_pr84
+ivankorobkov_python-inject_pr20
+ivankorobkov_python-inject_pr22
+ivankorobkov_python-inject_pr24
+ivankorobkov_python-inject_pr26
+ivankorobkov_python-inject_pr37
+ivankorobkov_python-inject_pr43
+ivankorobkov_python-inject_pr54
+ivankorobkov_python-inject_pr6
+ivankorobkov_python-inject_pr60
+ivankorobkov_python-inject_pr71
+ivankorobkov_python-inject_pr8
+izimobil_django-rest-framework-datatables_pr112
+izimobil_django-rest-framework-datatables_pr149
+izimobil_django-rest-framework-datatables_pr91
+izimobil_django-rest-framework-datatables_pr94
+jacebrowning_yorm_pr41
+jackdewinter_pymarkdown_pr1020
+jackdewinter_pymarkdown_pr1025
+jackdewinter_pymarkdown_pr1040
+jackdewinter_pymarkdown_pr1042
+jackdewinter_pymarkdown_pr1050
+jackdewinter_pymarkdown_pr1094
+jackdewinter_pymarkdown_pr1100
+jackdewinter_pymarkdown_pr1104
+jackdewinter_pymarkdown_pr1105
+jackdewinter_pymarkdown_pr1128
+jackdewinter_pymarkdown_pr1129
+jackdewinter_pymarkdown_pr116
+jackdewinter_pymarkdown_pr1195
+jackdewinter_pymarkdown_pr1211
+jackdewinter_pymarkdown_pr1216
+jackdewinter_pymarkdown_pr1246
+jackdewinter_pymarkdown_pr1248
+jackdewinter_pymarkdown_pr1251
+jackdewinter_pymarkdown_pr1253
+jackdewinter_pymarkdown_pr1271
+jackdewinter_pymarkdown_pr1279
+jackdewinter_pymarkdown_pr1315
+jackdewinter_pymarkdown_pr1335
+jackdewinter_pymarkdown_pr1353
+jackdewinter_pymarkdown_pr1365
+jackdewinter_pymarkdown_pr1367
+jackdewinter_pymarkdown_pr139
+jackdewinter_pymarkdown_pr1412
+jackdewinter_pymarkdown_pr1413
+jackdewinter_pymarkdown_pr1414
+jackdewinter_pymarkdown_pr1434
+jackdewinter_pymarkdown_pr1440
+jackdewinter_pymarkdown_pr1456
+jackdewinter_pymarkdown_pr1457
+jackdewinter_pymarkdown_pr1465
+jackdewinter_pymarkdown_pr183
+jackdewinter_pymarkdown_pr279
+jackdewinter_pymarkdown_pr280
+jackdewinter_pymarkdown_pr281
+jackdewinter_pymarkdown_pr291
+jackdewinter_pymarkdown_pr384
+jackdewinter_pymarkdown_pr390
+jackdewinter_pymarkdown_pr391
+jackdewinter_pymarkdown_pr425
+jackdewinter_pymarkdown_pr426
+jackdewinter_pymarkdown_pr428
+jackdewinter_pymarkdown_pr433
+jackdewinter_pymarkdown_pr451
+jackdewinter_pymarkdown_pr455
+jackdewinter_pymarkdown_pr466
+jackdewinter_pymarkdown_pr477
+jackdewinter_pymarkdown_pr481
+jackdewinter_pymarkdown_pr487
+jackdewinter_pymarkdown_pr497
+jackdewinter_pymarkdown_pr511
+jackdewinter_pymarkdown_pr515
+jackdewinter_pymarkdown_pr518
+jackdewinter_pymarkdown_pr533
+jackdewinter_pymarkdown_pr559
+jackdewinter_pymarkdown_pr575
+jackdewinter_pymarkdown_pr595
+jackdewinter_pymarkdown_pr597
+jackdewinter_pymarkdown_pr636
+jackdewinter_pymarkdown_pr638
+jackdewinter_pymarkdown_pr645
+jackdewinter_pymarkdown_pr674
+jackdewinter_pymarkdown_pr75
+jackdewinter_pymarkdown_pr792
+jackdewinter_pymarkdown_pr794
+jackdewinter_pymarkdown_pr795
+jackdewinter_pymarkdown_pr80
+jackdewinter_pymarkdown_pr81
+jackdewinter_pymarkdown_pr844
+jackdewinter_pymarkdown_pr853
+jackdewinter_pymarkdown_pr862
+jackdewinter_pymarkdown_pr863
+jackdewinter_pymarkdown_pr864
+jackdewinter_pymarkdown_pr866
+jackdewinter_pymarkdown_pr868
+jackdewinter_pymarkdown_pr869
+jackdewinter_pymarkdown_pr872
+jackdewinter_pymarkdown_pr881
+jackdewinter_pymarkdown_pr884
+jackdewinter_pymarkdown_pr886
+jackdewinter_pymarkdown_pr890
+jackdewinter_pymarkdown_pr893
+jackdewinter_pymarkdown_pr900
+jackdewinter_pymarkdown_pr903
+jackdewinter_pymarkdown_pr915
+jackdewinter_pymarkdown_pr916
+jackdewinter_pymarkdown_pr917
+jackdewinter_pymarkdown_pr918
+jackdewinter_pymarkdown_pr919
+jackdewinter_pymarkdown_pr920
+jackdewinter_pymarkdown_pr921
+jackdewinter_pymarkdown_pr922
+jackdewinter_pymarkdown_pr923
+jackdewinter_pymarkdown_pr927
+jackdewinter_pymarkdown_pr932
+jackdewinter_pymarkdown_pr942
+jackdewinter_pymarkdown_pr967
+jackdewinter_pymarkdown_pr987
+jackdewinter_pymarkdown_pr996
+jacksmith15_json-ref-dict_pr1
+jacksmith15_json-ref-dict_pr13
+jacksmith15_json-ref-dict_pr16
+jacksmith15_json-ref-dict_pr18
+jacksmith15_json-ref-dict_pr2
+jacksmith15_json-ref-dict_pr4
+jacksmith15_json-ref-dict_pr6
+jacksmith15_json-ref-dict_pr9
+jackz314_eeglabio_pr11
+jacobschaer_python-doipclient_pr30
+jacobschaer_python-doipclient_pr7
+jacobschaer_python-doipclient_pr9
+jadchaar_sec-edgar-downloader_pr123
+jawah_h2_pr4
+jawah_urllib3.future_pr20
+jawah_urllib3.future_pr22
+jawah_urllib3.future_pr23
+jawah_urllib3.future_pr35
+jawah_urllib3.future_pr40
+jawah_urllib3.future_pr42
+jawah_urllib3.future_pr44
+jawah_urllib3.future_pr45
+jawah_urllib3.future_pr47
+jawah_urllib3.future_pr7
+jazzband_dj-database-url_pr100
+jazzband_dj-database-url_pr116
+jazzband_dj-database-url_pr145
+jazzband_dj-database-url_pr150
+jazzband_dj-database-url_pr181
+jazzband_dj-database-url_pr183
+jazzband_dj-database-url_pr185
+jazzband_dj-database-url_pr196
+jazzband_dj-database-url_pr199
+jazzband_dj-database-url_pr21
+jazzband_dj-database-url_pr215
+jazzband_dj-database-url_pr225
+jazzband_dj-database-url_pr231
+jazzband_dj-database-url_pr235
+jazzband_dj-database-url_pr243
+jazzband_dj-database-url_pr257
+jazzband_dj-database-url_pr29
+jazzband_dj-database-url_pr51
+jazzband_dj-database-url_pr59
+jazzband_dj-database-url_pr64
+jazzband_dj-database-url_pr69
+jazzband_dj-database-url_pr76
+jazzband_dj-database-url_pr78
+jazzband_dj-database-url_pr80
+jazzband_dj-database-url_pr86
+jazzband_django-analytical_pr126
+jazzband_django-analytical_pr130
+jazzband_django-analytical_pr164
+jazzband_django-axes_pr1033
+jazzband_django-axes_pr1069
+jazzband_django-axes_pr1138
+jazzband_django-axes_pr1198
+jazzband_django-axes_pr1305
+jazzband_django-axes_pr1306
+jazzband_django-axes_pr1330
+jazzband_django-axes_pr652
+jazzband_django-axes_pr670
+jazzband_django-axes_pr716
+jazzband_django-axes_pr738
+jazzband_django-axes_pr747
+jazzband_django-axes_pr765
+jazzband_django-axes_pr783
+jazzband_django-axes_pr785
+jazzband_django-axes_pr789
+jazzband_django-axes_pr862
+jazzband_django-axes_pr865
+jazzband_django-axes_pr870
+jazzband_django-axes_pr871
+jazzband_django-axes_pr922
+jazzband_django-fsm-log_pr143
+jazzband_django-fsm-log_pr169
+jazzband_django-fsm-log_pr212
+jazzband_django-fsm-log_pr58
+jazzband_django-redshift-backend_pr105
+jazzband_django-redshift-backend_pr155
+jazzband_django-redshift-backend_pr162
+jazzband_django-redshift-backend_pr163
+jazzband_django-redshift-backend_pr90
+jazzband_django-redshift-backend_pr93
+jazzband_django-smart-selects_pr273
+jazzband_django-smart-selects_pr291
+jazzband_django-smart-selects_pr297
+jazzband_docopt-ng_pr28
+jazzband_geojson_pr131
+jazzband_geojson_pr177
+jazzband_geojson_pr215
+jazzband_icalevents_pr133
+jazzband_icalevents_pr138
+jazzband_icalevents_pr139
+jazzband_icalevents_pr14
+jazzband_icalevents_pr140
+jazzband_icalevents_pr23
+jazzband_icalevents_pr27
+jazzband_icalevents_pr29
+jazzband_icalevents_pr30
+jazzband_icalevents_pr34
+jazzband_icalevents_pr49
+jazzband_icalevents_pr52
+jazzband_icalevents_pr57
+jazzband_icalevents_pr66
+jazzband_icalevents_pr75
+jazzband_icalevents_pr79
+jazzband_icalevents_pr80
+jazzband_icalevents_pr88
+jazzband_icalevents_pr91
+jazzband_icalevents_pr92
+jazzband_icalevents_pr95
+jazzband_icalevents_pr97
+jazzband_tablib_pr259
+jazzband_tablib_pr272
+jazzband_tablib_pr307
+jazzband_tablib_pr332
+jazzband_tablib_pr333
+jazzband_tablib_pr336
+jazzband_tablib_pr337
+jazzband_tablib_pr348
+jazzband_tablib_pr374
+jazzband_tablib_pr384
+jazzband_tablib_pr385
+jazzband_tablib_pr386
+jazzband_tablib_pr392
+jazzband_tablib_pr393
+jazzband_tablib_pr433
+jazzband_tablib_pr437
+jazzband_tablib_pr441
+jazzband_tablib_pr449
+jazzband_tablib_pr454
+jazzband_tablib_pr456
+jazzband_tablib_pr466
+jazzband_tablib_pr470
+jazzband_tablib_pr483
+jazzband_tablib_pr484
+jazzband_tablib_pr490
+jazzband_tablib_pr494
+jazzband_tablib_pr497
+jazzband_tablib_pr510
+jazzband_tablib_pr516
+jazzband_tablib_pr518
+jazzband_tablib_pr528
+jazzband_tablib_pr534
+jazzband_tablib_pr535
+jazzband_tablib_pr539
+jazzband_tablib_pr540
+jazzband_tablib_pr541
+jazzband_tablib_pr542
+jazzband_tablib_pr547
+jazzband_tablib_pr550
+jazzband_tablib_pr555
+jazzband_tablib_pr557
+jazzband_tablib_pr563
+jazzband_tablib_pr566
+jazzband_tablib_pr568
+jazzband_tablib_pr573
+jazzband_tablib_pr579
+jazzband_tablib_pr584
+jazzband_tablib_pr594
+jazzband_tablib_pr595
+jazzband_tablib_pr596
+jazzband_tablib_pr613
+jazzband_tablib_pr614
+jazzband_tablib_pr619
+jazzband_tablib_pr620
+jazzband_tablib_pr624
+jazzband_tablib_pr627
+jbkahn_flake8-debugger_pr13
+jbkahn_flake8-debugger_pr23
+jborean93_pypsexec_pr22
+jborean93_pypsrp_pr124
+jborean93_pypsrp_pr135
+jborean93_pypsrp_pr136
+jborean93_requests-credssp_pr24
+jborean93_smbprotocol_pr102
+jborean93_smbprotocol_pr125
+jborean93_smbprotocol_pr13
+jborean93_smbprotocol_pr138
+jborean93_smbprotocol_pr147
+jborean93_smbprotocol_pr149
+jborean93_smbprotocol_pr15
+jborean93_smbprotocol_pr151
+jborean93_smbprotocol_pr153
+jborean93_smbprotocol_pr184
+jborean93_smbprotocol_pr190
+jborean93_smbprotocol_pr2
+jborean93_smbprotocol_pr22
+jborean93_smbprotocol_pr224
+jborean93_smbprotocol_pr226
+jborean93_smbprotocol_pr227
+jborean93_smbprotocol_pr234
+jborean93_smbprotocol_pr245
+jborean93_smbprotocol_pr252
+jborean93_smbprotocol_pr264
+jborean93_smbprotocol_pr293
+jborean93_smbprotocol_pr317
+jborean93_smbprotocol_pr327
+jborean93_smbprotocol_pr39
+jborean93_smbprotocol_pr46
+jborean93_smbprotocol_pr49
+jborean93_smbprotocol_pr69
+jborean93_smbprotocol_pr76
+jborean93_smbprotocol_pr9
+jborean93_smbprotocol_pr93
+jborean93_smbprotocol_pr99
+jcmgray_autoray_pr15
+jerry-git_pytest-split_pr18
+jerry-git_pytest-split_pr29
+jerry-git_pytest-split_pr42
+jfhbrook_pyee_pr107
+jfhbrook_pyee_pr122
+jfhbrook_pyee_pr123
+jfhbrook_pyee_pr135
+jfhbrook_pyee_pr138
+jfhbrook_pyee_pr38
+jfhbrook_pyee_pr40
+jfhbrook_pyee_pr74
+jfhbrook_pyee_pr75
+jfhbrook_pyee_pr77
+jfhbrook_pyee_pr99
+jg-rp_liquid_pr109
+jg-rp_liquid_pr115
+jg-rp_liquid_pr121
+jg-rp_liquid_pr143
+jg-rp_liquid_pr149
+jg-rp_liquid_pr163
+jg-rp_liquid_pr165
+jg-rp_liquid_pr166
+jg-rp_liquid_pr167
+jg-rp_liquid_pr65
+jg-rp_liquid_pr75
+jg-rp_liquid_pr80
+jg-rp_liquid_pr88
+jg-rp_liquid_pr91
+jg-rp_liquid_pr99
+jg-rp_python-jsonpath_pr10
+jg-rp_python-jsonpath_pr13
+jg-rp_python-jsonpath_pr14
+jg-rp_python-jsonpath_pr15
+jg-rp_python-jsonpath_pr22
+jg-rp_python-jsonpath_pr28
+jg-rp_python-jsonpath_pr6
+jkimbo_graphql-sync-dataloaders_pr2
+jmccrohan_pysolarmanv5_pr38
+jmccrohan_pysolarmanv5_pr61
+jmccrohan_pysolarmanv5_pr65
+jmccrohan_pysolarmanv5_pr82
+jmccrohan_pysolarmanv5_pr84
+jmccrohan_pysolarmanv5_pr94
+joblib_joblib-spark_pr35
+joblib_joblib-spark_pr36
+joblib_joblib-spark_pr37
+joblib_joblib-spark_pr38
+joblib_joblib_pr1149
+joblib_joblib_pr1393
+joblib_joblib_pr444
+joblib_joblib_pr449
+joblib_joblib_pr541
+joblib_threadpoolctl_pr101
+joblib_threadpoolctl_pr102
+joblib_threadpoolctl_pr112
+joblib_threadpoolctl_pr114
+joblib_threadpoolctl_pr138
+joblib_threadpoolctl_pr160
+joblib_threadpoolctl_pr163
+joblib_threadpoolctl_pr169
+joblib_threadpoolctl_pr175
+joblib_threadpoolctl_pr185
+joblib_threadpoolctl_pr2
+joblib_threadpoolctl_pr29
+joblib_threadpoolctl_pr30
+joblib_threadpoolctl_pr32
+joblib_threadpoolctl_pr34
+joblib_threadpoolctl_pr42
+joblib_threadpoolctl_pr5
+joblib_threadpoolctl_pr52
+joblib_threadpoolctl_pr82
+jodal_biip_pr102
+jodal_biip_pr11
+jodal_biip_pr118
+jodal_biip_pr126
+jodal_biip_pr127
+jodal_biip_pr129
+jodal_biip_pr13
+jodal_biip_pr130
+jodal_biip_pr132
+jodal_biip_pr143
+jodal_biip_pr149
+jodal_biip_pr156
+jodal_biip_pr16
+jodal_biip_pr165
+jodal_biip_pr169
+jodal_biip_pr173
+jodal_biip_pr174
+jodal_biip_pr184
+jodal_biip_pr186
+jodal_biip_pr19
+jodal_biip_pr21
+jodal_biip_pr23
+jodal_biip_pr26
+jodal_biip_pr28
+jodal_biip_pr292
+jodal_biip_pr30
+jodal_biip_pr300
+jodal_biip_pr301
+jodal_biip_pr304
+jodal_biip_pr31
+jodal_biip_pr327
+jodal_biip_pr372
+jodal_biip_pr6
+jodal_biip_pr7
+jodal_biip_pr95
+jodal_biip_pr96
+jodal_biip_pr97
+jodal_biip_pr99
+jodal_pykka_pr193
+jodal_pykka_pr226
+jodal_pykka_pr229
+jodal_pykka_pr233
+joerick_pyinstrument_pr45
+joerick_pyinstrument_pr46
+joerick_pyinstrument_pr49
+johnnoone_json-spec_pr2
+johnnoone_json-spec_pr8
+joke2k_faker_pr1011
+joke2k_faker_pr1019
+joke2k_faker_pr1022
+joke2k_faker_pr1029
+joke2k_faker_pr1033
+joke2k_faker_pr1034
+joke2k_faker_pr1037
+joke2k_faker_pr1043
+joke2k_faker_pr1045
+joke2k_faker_pr1046
+joke2k_faker_pr1049
+joke2k_faker_pr1052
+joke2k_faker_pr1054
+joke2k_faker_pr1062
+joke2k_faker_pr1069
+joke2k_faker_pr1072
+joke2k_faker_pr1073
+joke2k_faker_pr1075
+joke2k_faker_pr1102
+joke2k_faker_pr1103
+joke2k_faker_pr1104
+joke2k_faker_pr1110
+joke2k_faker_pr1116
+joke2k_faker_pr1117
+joke2k_faker_pr1119
+joke2k_faker_pr1122
+joke2k_faker_pr1136
+joke2k_faker_pr1140
+joke2k_faker_pr1143
+joke2k_faker_pr1144
+joke2k_faker_pr1145
+joke2k_faker_pr1146
+joke2k_faker_pr1150
+joke2k_faker_pr1164
+joke2k_faker_pr1166
+joke2k_faker_pr1170
+joke2k_faker_pr589
+joke2k_faker_pr596
+joke2k_faker_pr600
+joke2k_faker_pr614
+joke2k_faker_pr615
+joke2k_faker_pr620
+joke2k_faker_pr962
+joke2k_faker_pr964
+joke2k_faker_pr965
+joke2k_faker_pr983
+joke2k_faker_pr985
+joke2k_faker_pr995
+jonathf_chaospy_pr173
+jonathf_chaospy_pr177
+jonathf_chaospy_pr186
+jonathf_chaospy_pr199
+jonathf_chaospy_pr201
+jonathf_chaospy_pr220
+jonathf_chaospy_pr221
+jonathf_chaospy_pr249
+jonathf_chaospy_pr259
+jonathf_chaospy_pr264
+jonathf_chaospy_pr271
+jonathf_chaospy_pr272
+jonathf_chaospy_pr273
+jonathf_chaospy_pr274
+jonathf_chaospy_pr275
+jonathf_chaospy_pr276
+jonathf_chaospy_pr283
+jonathf_chaospy_pr286
+jonathf_chaospy_pr288
+jonathf_chaospy_pr305
+jonathf_chaospy_pr310
+jonathf_chaospy_pr315
+jonathf_chaospy_pr322
+jonathf_chaospy_pr325
+jonathf_chaospy_pr330
+jonathf_chaospy_pr344
+jonathf_chaospy_pr351
+jonathf_chaospy_pr359
+jonathf_numpoly_pr15
+jonathf_numpoly_pr17
+jonathf_numpoly_pr19
+jonathf_numpoly_pr20
+jonathf_numpoly_pr21
+jonathf_numpoly_pr22
+jonathf_numpoly_pr23
+jonathf_numpoly_pr27
+jonathf_numpoly_pr29
+jonathf_numpoly_pr33
+jonathf_numpoly_pr34
+jonathf_numpoly_pr36
+jonathf_numpoly_pr37
+jonathf_numpoly_pr38
+jonathf_numpoly_pr42
+jonathf_numpoly_pr43
+jonathf_numpoly_pr44
+jonathf_numpoly_pr51
+jonathf_numpoly_pr52
+jonathf_numpoly_pr57
+jonathf_numpoly_pr63
+jonathf_numpoly_pr65
+jonathf_numpoly_pr66
+jonathf_numpoly_pr67
+jonathf_numpoly_pr7
+jonathf_numpoly_pr71
+jonathf_numpoly_pr72
+jonathf_numpoly_pr78
+jonathf_numpoly_pr79
+jonathf_numpoly_pr8
+jonathf_numpoly_pr9
+jonghwanhyeon_python-ffmpeg_pr25
+jonghwanhyeon_python-ffmpeg_pr44
+jongracecox_anybadge_pr19
+jongracecox_anybadge_pr26
+jongracecox_anybadge_pr37
+jongracecox_anybadge_pr38
+jongracecox_anybadge_pr39
+jongracecox_anybadge_pr40
+jongracecox_anybadge_pr50
+jongracecox_anybadge_pr59
+joseph-roitman_pytest-snapshot_pr10
+joseph-roitman_pytest-snapshot_pr13
+joseph-roitman_pytest-snapshot_pr30
+joseph-roitman_pytest-snapshot_pr32
+joseph-roitman_pytest-snapshot_pr34
+joseph-roitman_pytest-snapshot_pr36
+joseph-roitman_pytest-snapshot_pr55
+joseph-roitman_pytest-snapshot_pr56
+josheppinette_python-logfmter_pr55
+joshtemple_lkml_pr10
+joshtemple_lkml_pr68
+joshtemple_lkml_pr85
+joshtemple_lkml_pr97
+jpadilla_pyjwt_pr1001
+jpadilla_pyjwt_pr1005
+jpadilla_pyjwt_pr1041
+jpadilla_pyjwt_pr1045
+jpadilla_pyjwt_pr280
+jpadilla_pyjwt_pr454
+jpadilla_pyjwt_pr455
+jpadilla_pyjwt_pr457
+jpadilla_pyjwt_pr498
+jpadilla_pyjwt_pr513
+jpadilla_pyjwt_pr552
+jpadilla_pyjwt_pr557
+jpadilla_pyjwt_pr559
+jpadilla_pyjwt_pr563
+jpadilla_pyjwt_pr564
+jpadilla_pyjwt_pr578
+jpadilla_pyjwt_pr598
+jpadilla_pyjwt_pr608
+jpadilla_pyjwt_pr611
+jpadilla_pyjwt_pr623
+jpadilla_pyjwt_pr624
+jpadilla_pyjwt_pr629
+jpadilla_pyjwt_pr657
+jpadilla_pyjwt_pr668
+jpadilla_pyjwt_pr670
+jpadilla_pyjwt_pr673
+jpadilla_pyjwt_pr690
+jpadilla_pyjwt_pr694
+jpadilla_pyjwt_pr701
+jpadilla_pyjwt_pr702
+jpadilla_pyjwt_pr723
+jpadilla_pyjwt_pr725
+jpadilla_pyjwt_pr742
+jpadilla_pyjwt_pr747
+jpadilla_pyjwt_pr753
+jpadilla_pyjwt_pr762
+jpadilla_pyjwt_pr773
+jpadilla_pyjwt_pr775
+jpadilla_pyjwt_pr781
+jpadilla_pyjwt_pr782
+jpadilla_pyjwt_pr786
+jpadilla_pyjwt_pr794
+jpadilla_pyjwt_pr829
+jpadilla_pyjwt_pr830
+jpadilla_pyjwt_pr832
+jpadilla_pyjwt_pr843
+jpadilla_pyjwt_pr845
+jpadilla_pyjwt_pr846
+jpadilla_pyjwt_pr847
+jpadilla_pyjwt_pr875
+jpadilla_pyjwt_pr876
+jpadilla_pyjwt_pr881
+jpadilla_pyjwt_pr886
+jpadilla_pyjwt_pr891
+jpadilla_pyjwt_pr902
+jpadilla_pyjwt_pr913
+jpadilla_pyjwt_pr940
+jpadilla_pyjwt_pr963
+jpadilla_pyjwt_pr979
+jpadilla_pyjwt_pr985
+jrief_django-sass-processor_pr147
+jschneier_django-storages_pr1000
+jschneier_django-storages_pr1060
+jschneier_django-storages_pr1061
+jschneier_django-storages_pr1063
+jschneier_django-storages_pr1069
+jschneier_django-storages_pr1071
+jschneier_django-storages_pr1076
+jschneier_django-storages_pr1083
+jschneier_django-storages_pr1085
+jschneier_django-storages_pr1087
+jschneier_django-storages_pr1112
+jschneier_django-storages_pr1132
+jschneier_django-storages_pr1134
+jschneier_django-storages_pr1154
+jschneier_django-storages_pr1156
+jschneier_django-storages_pr1158
+jschneier_django-storages_pr1159
+jschneier_django-storages_pr1167
+jschneier_django-storages_pr1172
+jschneier_django-storages_pr1194
+jschneier_django-storages_pr1200
+jschneier_django-storages_pr1201
+jschneier_django-storages_pr1203
+jschneier_django-storages_pr1249
+jschneier_django-storages_pr1250
+jschneier_django-storages_pr1251
+jschneier_django-storages_pr1274
+jschneier_django-storages_pr1278
+jschneier_django-storages_pr1279
+jschneier_django-storages_pr1280
+jschneier_django-storages_pr1281
+jschneier_django-storages_pr320
+jschneier_django-storages_pr336
+jschneier_django-storages_pr339
+jschneier_django-storages_pr341
+jschneier_django-storages_pr342
+jschneier_django-storages_pr348
+jschneier_django-storages_pr349
+jschneier_django-storages_pr357
+jschneier_django-storages_pr358
+jschneier_django-storages_pr375
+jschneier_django-storages_pr379
+jschneier_django-storages_pr41
+jschneier_django-storages_pr45
+jschneier_django-storages_pr460
+jschneier_django-storages_pr464
+jschneier_django-storages_pr504
+jschneier_django-storages_pr505
+jschneier_django-storages_pr516
+jschneier_django-storages_pr520
+jschneier_django-storages_pr535
+jschneier_django-storages_pr551
+jschneier_django-storages_pr553
+jschneier_django-storages_pr60
+jschneier_django-storages_pr938
+jschneier_django-storages_pr980
+jschneier_django-storages_pr994
+jsh9_pydoclint_pr120
+jsh9_pydoclint_pr123
+jsh9_pydoclint_pr129
+jsh9_pydoclint_pr130
+jsh9_pydoclint_pr132
+jsh9_pydoclint_pr133
+jsh9_pydoclint_pr145
+jsh9_pydoclint_pr146
+jsh9_pydoclint_pr153
+jsh9_pydoclint_pr154
+jsh9_pydoclint_pr155
+jsh9_pydoclint_pr168
+jsh9_pydoclint_pr181
+jsh9_pydoclint_pr185
+jsh9_pydoclint_pr188
+jsh9_pydoclint_pr192
+jsh9_pydoclint_pr194
+jsh9_pydoclint_pr199
+jsh9_pydoclint_pr205
+jsh9_pydoclint_pr206
+jsh9_pydoclint_pr207
+jsh9_pydoclint_pr215
+jsh9_pydoclint_pr218
+jsh9_pydoclint_pr225
+jsh9_pydoclint_pr227
+jsh9_pydoclint_pr230
+jsh9_pydoclint_pr249
+jsh9_pydoclint_pr259
+jsh9_pydoclint_pr260
+jsh9_pydoclint_pr261
+jsh9_pydoclint_pr267
+jsh9_pydoclint_pr271
+jsh9_pydoclint_pr275
+jsh9_pydoclint_pr277
+jsh9_pydoclint_pr80
+jsh9_pydoclint_pr83
+jsh9_pydoclint_pr86
+jsh9_pydoclint_pr89
+jsh9_pydoclint_pr94
+jsonpickle_jsonpickle_pr400
+jsonpickle_jsonpickle_pr403
+jsonpickle_jsonpickle_pr418
+jsonpickle_jsonpickle_pr433
+jsonpickle_jsonpickle_pr434
+jsonpickle_jsonpickle_pr446
+jsonpickle_jsonpickle_pr455
+jsonpickle_jsonpickle_pr473
+jsonpickle_jsonpickle_pr494
+jsonpickle_jsonpickle_pr501
+jsonpickle_jsonpickle_pr514
+jsonpickle_jsonpickle_pr57
+jsonpickle_jsonpickle_pr58
+juftin_hatch-pip-compile_pr60
+jupyter-server_jupyter-scheduler_pr448
+jupyter-server_jupyter-scheduler_pr450
+jupyter-server_jupyter-scheduler_pr463
+jupyter-server_jupyter-scheduler_pr510
+jupyter-widgets_ipywidgets_pr1823
+jupyter-widgets_ipywidgets_pr2021
+jupyter-widgets_ipywidgets_pr2193
+jupyter-widgets_ipywidgets_pr2283
+jupyter-widgets_ipywidgets_pr2376
+jupyter-widgets_ipywidgets_pr2489
+jupyter-widgets_ipywidgets_pr2516
+jupyter-widgets_ipywidgets_pr2525
+jupyter-widgets_ipywidgets_pr2528
+jupyter-widgets_ipywidgets_pr2558
+jupyter-widgets_ipywidgets_pr2566
+jupyter-widgets_ipywidgets_pr2570
+jupyter-widgets_ipywidgets_pr2572
+jupyter-widgets_ipywidgets_pr2640
+jupyter-widgets_ipywidgets_pr2654
+jupyter-widgets_ipywidgets_pr2664
+jupyter-widgets_ipywidgets_pr2666
+jupyter-widgets_ipywidgets_pr2678
+jupyter-widgets_ipywidgets_pr2679
+jupyter-widgets_ipywidgets_pr2680
+jupyter-widgets_ipywidgets_pr2683
+jupyter-widgets_ipywidgets_pr2685
+jupyter-widgets_ipywidgets_pr2692
+jupyter-widgets_ipywidgets_pr2710
+jupyter-widgets_ipywidgets_pr2712
+jupyter-widgets_ipywidgets_pr2715
+jupyter-widgets_ipywidgets_pr2723
+jupyter-widgets_ipywidgets_pr2724
+jupyter-widgets_ipywidgets_pr2728
+jupyter-widgets_ipywidgets_pr2746
+jupyter-widgets_ipywidgets_pr2752
+jupyter-widgets_ipywidgets_pr2757
+jupyter-widgets_ipywidgets_pr2816
+jupyter-widgets_ipywidgets_pr2827
+jupyter-widgets_ipywidgets_pr2834
+jupyter-widgets_ipywidgets_pr3091
+jupyter-widgets_ipywidgets_pr3118
+jupyter-widgets_ipywidgets_pr3122
+jupyter-widgets_ipywidgets_pr3124
+jupyter-widgets_ipywidgets_pr3142
+jupyter-widgets_ipywidgets_pr3146
+jupyter-widgets_ipywidgets_pr3172
+jupyter-widgets_ipywidgets_pr3173
+jupyter-widgets_ipywidgets_pr3199
+jupyter-widgets_ipywidgets_pr3216
+jupyter-widgets_ipywidgets_pr3269
+jupyter-widgets_ipywidgets_pr3271
+jupyter-widgets_ipywidgets_pr3280
+jupyter-widgets_ipywidgets_pr3283
+jupyter-widgets_ipywidgets_pr3286
+jupyter-widgets_ipywidgets_pr3394
+jupyter-widgets_ipywidgets_pr3533
+jupyter-widgets_ipywidgets_pr3567
+jupyter-widgets_ipywidgets_pr3569
+jupyter-widgets_ipywidgets_pr3780
+jupyter-widgets_ipywidgets_pr3796
+jupyter-widgets_ipywidgets_pr3908
+jupyter_nbclassic_pr141
+jupyter_nbclassic_pr165
+jupyter_nbclassic_pr166
+jupyter_nbclassic_pr172
+jupyter_nbclassic_pr212
+jupyter_nbclassic_pr216
+jupyter_nbclassic_pr267
+jupyter_nbclassic_pr269
+jupyter_nbclassic_pr310
+jupyter_nbclassic_pr317
+jupyter_nbclassic_pr375
+jupyter_nbclassic_pr93
+jupyter_nbclient_pr37
+jupyter_nbclient_pr64
+jupyter_nbclient_pr77
+jupyterhub_oauthenticator_pr358
+jupyterhub_oauthenticator_pr363
+jupyterhub_oauthenticator_pr366
+jupyterhub_oauthenticator_pr386
+jupyterhub_oauthenticator_pr389
+jupyterhub_oauthenticator_pr393
+jupyterhub_oauthenticator_pr395
+jupyterhub_oauthenticator_pr404
+jupyterhub_oauthenticator_pr410
+jupyterhub_oauthenticator_pr415
+jupyterhub_oauthenticator_pr420
+jupyterhub_oauthenticator_pr437
+jupyterhub_oauthenticator_pr439
+jupyterhub_oauthenticator_pr441
+jupyterhub_oauthenticator_pr442
+jupyterhub_oauthenticator_pr449
+jupyterhub_oauthenticator_pr484
+jupyterhub_oauthenticator_pr517
+jupyterhub_oauthenticator_pr518
+jupyterhub_oauthenticator_pr526
+jupyterhub_oauthenticator_pr534
+jupyterhub_oauthenticator_pr537
+jupyterhub_oauthenticator_pr542
+jupyterhub_oauthenticator_pr575
+jupyterhub_oauthenticator_pr578
+justindujardin_pathy_pr108
+jwbargsten_pytest-archon_pr10
+jwbargsten_pytest-archon_pr11
+jwbargsten_pytest-archon_pr12
+jwbargsten_pytest-archon_pr16
+jwbargsten_pytest-archon_pr2
+jwbargsten_pytest-archon_pr20
+jwbargsten_pytest-archon_pr25
+jwbargsten_pytest-archon_pr28
+jwbargsten_pytest-archon_pr4
+jwbargsten_pytest-archon_pr8
+jwodder_click-loglevel_pr11
+jwodder_versioningit_pr118
+jwodder_versioningit_pr77
+jwodder_versioningit_pr79
+jxtech_wechatpy_pr100
+jxtech_wechatpy_pr103
+jxtech_wechatpy_pr106
+jxtech_wechatpy_pr139
+jxtech_wechatpy_pr144
+jxtech_wechatpy_pr145
+jxtech_wechatpy_pr156
+jxtech_wechatpy_pr162
+jxtech_wechatpy_pr165
+jxtech_wechatpy_pr166
+jxtech_wechatpy_pr167
+jxtech_wechatpy_pr170
+jxtech_wechatpy_pr194
+jxtech_wechatpy_pr195
+jxtech_wechatpy_pr199
+jxtech_wechatpy_pr211
+jxtech_wechatpy_pr216
+jxtech_wechatpy_pr217
+jxtech_wechatpy_pr228
+jxtech_wechatpy_pr238
+jxtech_wechatpy_pr240
+jxtech_wechatpy_pr241
+jxtech_wechatpy_pr247
+jxtech_wechatpy_pr248
+jxtech_wechatpy_pr249
+jxtech_wechatpy_pr255
+jxtech_wechatpy_pr270
+jxtech_wechatpy_pr279
+jxtech_wechatpy_pr288
+jxtech_wechatpy_pr296
+jxtech_wechatpy_pr300
+jxtech_wechatpy_pr301
+jxtech_wechatpy_pr306
+jxtech_wechatpy_pr315
+jxtech_wechatpy_pr318
+jxtech_wechatpy_pr325
+jxtech_wechatpy_pr328
+jxtech_wechatpy_pr333
+jxtech_wechatpy_pr345
+jxtech_wechatpy_pr346
+jxtech_wechatpy_pr349
+jxtech_wechatpy_pr364
+jxtech_wechatpy_pr365
+jxtech_wechatpy_pr373
+jxtech_wechatpy_pr376
+jxtech_wechatpy_pr381
+jxtech_wechatpy_pr397
+jxtech_wechatpy_pr403
+jxtech_wechatpy_pr404
+jxtech_wechatpy_pr408
+jxtech_wechatpy_pr412
+jxtech_wechatpy_pr413
+jxtech_wechatpy_pr419
+jxtech_wechatpy_pr422
+jxtech_wechatpy_pr429
+jxtech_wechatpy_pr447
+jxtech_wechatpy_pr45
+jxtech_wechatpy_pr450
+jxtech_wechatpy_pr456
+jxtech_wechatpy_pr463
+jxtech_wechatpy_pr470
+jxtech_wechatpy_pr487
+jxtech_wechatpy_pr499
+jxtech_wechatpy_pr503
+jxtech_wechatpy_pr508
+jxtech_wechatpy_pr509
+jxtech_wechatpy_pr518
+jxtech_wechatpy_pr521
+jxtech_wechatpy_pr523
+jxtech_wechatpy_pr526
+jxtech_wechatpy_pr527
+jxtech_wechatpy_pr535
+jxtech_wechatpy_pr537
+jxtech_wechatpy_pr550
+jxtech_wechatpy_pr560
+jxtech_wechatpy_pr569
+jxtech_wechatpy_pr579
+jxtech_wechatpy_pr581
+jxtech_wechatpy_pr66
+jxtech_wechatpy_pr69
+jxtech_wechatpy_pr74
+jxtech_wechatpy_pr75
+jxtech_wechatpy_pr81
+jxtech_wechatpy_pr86
+jxtech_wechatpy_pr87
+jxtech_wechatpy_pr91
+jxtech_wechatpy_pr94
+k2-fsa_sherpa-onnx_pr1003
+k2-fsa_sherpa-onnx_pr1009
+k2-fsa_sherpa-onnx_pr1010
+k2-fsa_sherpa-onnx_pr1020
+k2-fsa_sherpa-onnx_pr1029
+k2-fsa_sherpa-onnx_pr1036
+k2-fsa_sherpa-onnx_pr1046
+k2-fsa_sherpa-onnx_pr1049
+k2-fsa_sherpa-onnx_pr1052
+k2-fsa_sherpa-onnx_pr1055
+k2-fsa_sherpa-onnx_pr1072
+k2-fsa_sherpa-onnx_pr1079
+k2-fsa_sherpa-onnx_pr1092
+k2-fsa_sherpa-onnx_pr1105
+k2-fsa_sherpa-onnx_pr1113
+k2-fsa_sherpa-onnx_pr1114
+k2-fsa_sherpa-onnx_pr1120
+k2-fsa_sherpa-onnx_pr1124
+k2-fsa_sherpa-onnx_pr1126
+k2-fsa_sherpa-onnx_pr1129
+k2-fsa_sherpa-onnx_pr1132
+k2-fsa_sherpa-onnx_pr1134
+k2-fsa_sherpa-onnx_pr1141
+k2-fsa_sherpa-onnx_pr1144
+k2-fsa_sherpa-onnx_pr1148
+k2-fsa_sherpa-onnx_pr1151
+k2-fsa_sherpa-onnx_pr1154
+k2-fsa_sherpa-onnx_pr1156
+k2-fsa_sherpa-onnx_pr1159
+k2-fsa_sherpa-onnx_pr1162
+k2-fsa_sherpa-onnx_pr1164
+k2-fsa_sherpa-onnx_pr1180
+k2-fsa_sherpa-onnx_pr1182
+k2-fsa_sherpa-onnx_pr1191
+k2-fsa_sherpa-onnx_pr1194
+k2-fsa_sherpa-onnx_pr1203
+k2-fsa_sherpa-onnx_pr1223
+k2-fsa_sherpa-onnx_pr1226
+k2-fsa_sherpa-onnx_pr1230
+k2-fsa_sherpa-onnx_pr1243
+k2-fsa_sherpa-onnx_pr1247
+k2-fsa_sherpa-onnx_pr1270
+k2-fsa_sherpa-onnx_pr1271
+k2-fsa_sherpa-onnx_pr1276
+k2-fsa_sherpa-onnx_pr1277
+k2-fsa_sherpa-onnx_pr1286
+k2-fsa_sherpa-onnx_pr1287
+k2-fsa_sherpa-onnx_pr1291
+k2-fsa_sherpa-onnx_pr1293
+k2-fsa_sherpa-onnx_pr1294
+k2-fsa_sherpa-onnx_pr1307
+k2-fsa_sherpa-onnx_pr1324
+k2-fsa_sherpa-onnx_pr1355
+k2-fsa_sherpa-onnx_pr1358
+k2-fsa_sherpa-onnx_pr1381
+k2-fsa_sherpa-onnx_pr192
+k2-fsa_sherpa-onnx_pr193
+k2-fsa_sherpa-onnx_pr195
+k2-fsa_sherpa-onnx_pr201
+k2-fsa_sherpa-onnx_pr213
+k2-fsa_sherpa-onnx_pr216
+k2-fsa_sherpa-onnx_pr217
+k2-fsa_sherpa-onnx_pr220
+k2-fsa_sherpa-onnx_pr227
+k2-fsa_sherpa-onnx_pr229
+k2-fsa_sherpa-onnx_pr239
+k2-fsa_sherpa-onnx_pr247
+k2-fsa_sherpa-onnx_pr257
+k2-fsa_sherpa-onnx_pr264
+k2-fsa_sherpa-onnx_pr268
+k2-fsa_sherpa-onnx_pr269
+k2-fsa_sherpa-onnx_pr303
+k2-fsa_sherpa-onnx_pr304
+k2-fsa_sherpa-onnx_pr308
+k2-fsa_sherpa-onnx_pr318
+k2-fsa_sherpa-onnx_pr326
+k2-fsa_sherpa-onnx_pr331
+k2-fsa_sherpa-onnx_pr344
+k2-fsa_sherpa-onnx_pr353
+k2-fsa_sherpa-onnx_pr355
+k2-fsa_sherpa-onnx_pr356
+k2-fsa_sherpa-onnx_pr360
+k2-fsa_sherpa-onnx_pr362
+k2-fsa_sherpa-onnx_pr363
+k2-fsa_sherpa-onnx_pr365
+k2-fsa_sherpa-onnx_pr367
+k2-fsa_sherpa-onnx_pr383
+k2-fsa_sherpa-onnx_pr400
+k2-fsa_sherpa-onnx_pr401
+k2-fsa_sherpa-onnx_pr402
+k2-fsa_sherpa-onnx_pr403
+k2-fsa_sherpa-onnx_pr413
+k2-fsa_sherpa-onnx_pr428
+k2-fsa_sherpa-onnx_pr434
+k2-fsa_sherpa-onnx_pr450
+k2-fsa_sherpa-onnx_pr451
+k2-fsa_sherpa-onnx_pr452
+k2-fsa_sherpa-onnx_pr457
+k2-fsa_sherpa-onnx_pr462
+k2-fsa_sherpa-onnx_pr471
+k2-fsa_sherpa-onnx_pr473
+k2-fsa_sherpa-onnx_pr478
+k2-fsa_sherpa-onnx_pr482
+k2-fsa_sherpa-onnx_pr484
+k2-fsa_sherpa-onnx_pr485
+k2-fsa_sherpa-onnx_pr486
+k2-fsa_sherpa-onnx_pr494
+k2-fsa_sherpa-onnx_pr496
+k2-fsa_sherpa-onnx_pr505
+k2-fsa_sherpa-onnx_pr508
+k2-fsa_sherpa-onnx_pr509
+k2-fsa_sherpa-onnx_pr522
+k2-fsa_sherpa-onnx_pr530
+k2-fsa_sherpa-onnx_pr533
+k2-fsa_sherpa-onnx_pr542
+k2-fsa_sherpa-onnx_pr553
+k2-fsa_sherpa-onnx_pr557
+k2-fsa_sherpa-onnx_pr561
+k2-fsa_sherpa-onnx_pr568
+k2-fsa_sherpa-onnx_pr571
+k2-fsa_sherpa-onnx_pr577
+k2-fsa_sherpa-onnx_pr584
+k2-fsa_sherpa-onnx_pr586
+k2-fsa_sherpa-onnx_pr591
+k2-fsa_sherpa-onnx_pr593
+k2-fsa_sherpa-onnx_pr605
+k2-fsa_sherpa-onnx_pr609
+k2-fsa_sherpa-onnx_pr626
+k2-fsa_sherpa-onnx_pr635
+k2-fsa_sherpa-onnx_pr636
+k2-fsa_sherpa-onnx_pr637
+k2-fsa_sherpa-onnx_pr642
+k2-fsa_sherpa-onnx_pr643
+k2-fsa_sherpa-onnx_pr646
+k2-fsa_sherpa-onnx_pr676
+k2-fsa_sherpa-onnx_pr679
+k2-fsa_sherpa-onnx_pr688
+k2-fsa_sherpa-onnx_pr693
+k2-fsa_sherpa-onnx_pr696
+k2-fsa_sherpa-onnx_pr699
+k2-fsa_sherpa-onnx_pr707
+k2-fsa_sherpa-onnx_pr709
+k2-fsa_sherpa-onnx_pr710
+k2-fsa_sherpa-onnx_pr742
+k2-fsa_sherpa-onnx_pr747
+k2-fsa_sherpa-onnx_pr749
+k2-fsa_sherpa-onnx_pr802
+k2-fsa_sherpa-onnx_pr809
+k2-fsa_sherpa-onnx_pr810
+k2-fsa_sherpa-onnx_pr811
+k2-fsa_sherpa-onnx_pr812
+k2-fsa_sherpa-onnx_pr817
+k2-fsa_sherpa-onnx_pr818
+k2-fsa_sherpa-onnx_pr822
+k2-fsa_sherpa-onnx_pr836
+k2-fsa_sherpa-onnx_pr838
+k2-fsa_sherpa-onnx_pr841
+k2-fsa_sherpa-onnx_pr843
+k2-fsa_sherpa-onnx_pr844
+k2-fsa_sherpa-onnx_pr857
+k2-fsa_sherpa-onnx_pr861
+k2-fsa_sherpa-onnx_pr862
+k2-fsa_sherpa-onnx_pr876
+k2-fsa_sherpa-onnx_pr877
+k2-fsa_sherpa-onnx_pr894
+k2-fsa_sherpa-onnx_pr904
+k2-fsa_sherpa-onnx_pr907
+k2-fsa_sherpa-onnx_pr915
+k2-fsa_sherpa-onnx_pr928
+k2-fsa_sherpa-onnx_pr930
+k2-fsa_sherpa-onnx_pr932
+k2-fsa_sherpa-onnx_pr933
+k2-fsa_sherpa-onnx_pr945
+k2-fsa_sherpa-onnx_pr951
+k2-fsa_sherpa-onnx_pr961
+k2-fsa_sherpa-onnx_pr963
+k2-fsa_sherpa-onnx_pr978
+k2-fsa_sherpa-onnx_pr990
+k2-fsa_sherpa-onnx_pr991
+kaiko-ai_typedspark_pr133
+kaiko-ai_typedspark_pr136
+kaiko-ai_typedspark_pr139
+kaiko-ai_typedspark_pr146
+kaiko-ai_typedspark_pr172
+kaiko-ai_typedspark_pr184
+kaiko-ai_typedspark_pr212
+kaiko-ai_typedspark_pr216
+kaiko-ai_typedspark_pr224
+kaiko-ai_typedspark_pr315
+kaiko-ai_typedspark_pr355
+karask_python-bitcoin-utils_pr106
+karask_python-bitcoin-utils_pr113
+karask_python-bitcoin-utils_pr116
+karask_python-bitcoin-utils_pr127
+karask_python-bitcoin-utils_pr141
+karask_python-bitcoin-utils_pr157
+karask_python-bitcoin-utils_pr64
+karask_python-bitcoin-utils_pr74
+karask_python-bitcoin-utils_pr75
+karask_python-bitcoin-utils_pr77
+karask_python-bitcoin-utils_pr83
+karask_python-bitcoin-utils_pr85
+karpetrosyan_hishel_pr104
+karpetrosyan_hishel_pr111
+karpetrosyan_hishel_pr117
+karpetrosyan_hishel_pr119
+karpetrosyan_hishel_pr130
+karpetrosyan_hishel_pr138
+karpetrosyan_hishel_pr146
+karpetrosyan_hishel_pr147
+karpetrosyan_hishel_pr164
+karpetrosyan_hishel_pr169
+karpetrosyan_hishel_pr181
+karpetrosyan_hishel_pr182
+karpetrosyan_hishel_pr186
+karpetrosyan_hishel_pr204
+karpetrosyan_hishel_pr220
+karpetrosyan_hishel_pr240
+karpetrosyan_hishel_pr241
+karpetrosyan_hishel_pr242
+karpetrosyan_hishel_pr248
+karpetrosyan_hishel_pr251
+karpetrosyan_hishel_pr269
+karpetrosyan_hishel_pr273
+karpetrosyan_hishel_pr275
+karpetrosyan_hishel_pr28
+karpetrosyan_hishel_pr318
+karpetrosyan_hishel_pr320
+karpetrosyan_hishel_pr334
+karpetrosyan_hishel_pr336
+karpetrosyan_hishel_pr353
+karpetrosyan_hishel_pr42
+karpetrosyan_hishel_pr56
+karpetrosyan_hishel_pr7
+karpetrosyan_hishel_pr8
+karpetrosyan_hishel_pr83
+karpetrosyan_hishel_pr86
+karpetrosyan_hishel_pr90
+karpetrosyan_hishel_pr95
+keboola_python-component_pr20
+keboola_python-component_pr39
+keboola_python-component_pr4
+keboola_python-component_pr44
+keboola_python-component_pr47
+keboola_python-component_pr51
+keboola_python-component_pr60
+keboola_python-component_pr63
+keis_base58_pr43
+keis_base58_pr46
+keis_base58_pr50
+keis_base58_pr56
+keis_base58_pr58
+keis_base58_pr63
+keleshev_schema_pr127
+keleshev_schema_pr128
+keleshev_schema_pr141
+keleshev_schema_pr170
+keleshev_schema_pr174
+keleshev_schema_pr178
+keleshev_schema_pr181
+keleshev_schema_pr182
+keleshev_schema_pr184
+keleshev_schema_pr186
+keleshev_schema_pr206
+keleshev_schema_pr210
+keleshev_schema_pr212
+keleshev_schema_pr214
+keleshev_schema_pr217
+keleshev_schema_pr218
+keleshev_schema_pr220
+keleshev_schema_pr234
+keleshev_schema_pr244
+keleshev_schema_pr26
+keleshev_schema_pr268
+keleshev_schema_pr306
+keleshev_schema_pr319
+keleshev_schema_pr32
+keleshev_schema_pr332
+keleshev_schema_pr337
+keleshev_schema_pr52
+keleshev_schema_pr72
+keleshev_schema_pr85
+keleshev_schema_pr91
+keleshev_schema_pr97
+kelproject_pykube_pr103
+kelproject_pykube_pr115
+kelproject_pykube_pr128
+kelproject_pykube_pr15
+kelproject_pykube_pr17
+kelproject_pykube_pr21
+kelproject_pykube_pr26
+kelproject_pykube_pr46
+kelproject_pykube_pr67
+kelproject_pykube_pr68
+kelproject_pykube_pr78
+kelproject_pykube_pr83
+kelproject_pykube_pr89
+kelproject_pykube_pr92
+kelproject_pykube_pr93
+kelsin_mysql-mimic_pr11
+kelsin_mysql-mimic_pr13
+kelsin_mysql-mimic_pr15
+kelsin_mysql-mimic_pr4
+kelsin_mysql-mimic_pr69
+kenkundert_inform_pr3
+kensho-technologies_pyctcdecode_pr102
+kensho-technologies_pyctcdecode_pr106
+kensho-technologies_pyctcdecode_pr32
+kensho-technologies_pyctcdecode_pr35
+kensho-technologies_pyctcdecode_pr43
+kensho-technologies_pyctcdecode_pr52
+kensho-technologies_pyctcdecode_pr67
+kensho-technologies_pyctcdecode_pr68
+kensho-technologies_pyctcdecode_pr7
+kensho-technologies_pyctcdecode_pr78
+kiorky_croniter_pr163
+kiorky_croniter_pr169
+kiorky_croniter_pr170
+kiorky_croniter_pr177
+kiorky_croniter_pr181
+kiorky_croniter_pr43
+kiorky_croniter_pr71
+kiorky_croniter_pr78
+kiorky_croniter_pr81
+kiorky_croniter_pr82
+kipe_pycron_pr41
+kipe_pycron_pr5
+kivy_buildozer_pr1230
+kivy_buildozer_pr1435
+kivy_buildozer_pr1450
+kivy_buildozer_pr1525
+kivy_buildozer_pr1548
+kivy_buildozer_pr1575
+kivy_buildozer_pr1628
+kivy_buildozer_pr1639
+kivy_buildozer_pr1648
+kivy_buildozer_pr1667
+kivy_buildozer_pr1686
+kivy_buildozer_pr1689
+kivy_buildozer_pr1690
+kivy_buildozer_pr1692
+kivy_buildozer_pr1694
+kivy_buildozer_pr1888
+kivy_buildozer_pr1894
+kivy_buildozer_pr787
+kivy_buildozer_pr805
+kivy_buildozer_pr806
+kivy_buildozer_pr821
+kivy_buildozer_pr852
+kivy_buildozer_pr970
+kivy_plyer_pr410
+kivy_plyer_pr422
+kivy_plyer_pr423
+kivy_plyer_pr431
+kivy_plyer_pr438
+kivy_plyer_pr442
+kivy_plyer_pr455
+kivy_plyer_pr457
+kivy_plyer_pr473
+kivy_plyer_pr474
+kivy_plyer_pr476
+kivy_plyer_pr483
+kivy_plyer_pr488
+kivy_plyer_pr519
+kivy_plyer_pr542
+kivy_plyer_pr544
+kivy_plyer_pr590
+kivy_plyer_pr624
+kivy_plyer_pr630
+kivy_plyer_pr634
+kivy_plyer_pr639
+kivy_plyer_pr665
+kivy_plyer_pr669
+kivy_plyer_pr680
+kivy_plyer_pr712
+kivy_plyer_pr732
+kivy_plyer_pr742
+kivy_plyer_pr750
+kivy_plyer_pr756
+kivy_plyer_pr781
+kivy_plyer_pr813
+kivy_plyer_pr828
+kiwicom_structlog-sentry_pr74
+kjd_idna_pr111
+kjd_idna_pr112
+kjd_idna_pr120
+kjd_idna_pr145
+kjd_idna_pr153
+kjd_idna_pr154
+kjd_idna_pr24
+kjd_idna_pr33
+kjd_idna_pr41
+kodemore_kink_pr12
+kodemore_kink_pr14
+kodemore_kink_pr25
+kodemore_kink_pr26
+kodemore_kink_pr3
+kodemore_kink_pr54
+kodemore_kink_pr7
+kodemore_kink_pr71
+kolonialno_django-api-decorator_pr13
+kolonialno_django-api-decorator_pr18
+kolonialno_django-api-decorator_pr21
+kolonialno_django-api-decorator_pr27
+kolonialno_django-api-decorator_pr30
+kolonialno_django-api-decorator_pr33
+kolonialno_django-api-decorator_pr38
+kolonialno_django-api-decorator_pr41
+kolonialno_troncos_pr13
+kolonialno_troncos_pr5
+kolonialno_troncos_pr8
+kuimono_openapi-schema-pydantic_pr11
+kurtbrose_pyjks_pr18
+kurtbrose_pyjks_pr19
+kurtbrose_pyjks_pr22
+kurtbrose_pyjks_pr26
+kvesteri_sqlalchemy-continuum_pr370
+kyleking_mdformat-mkdocs_pr11
+kyleking_mdformat-mkdocs_pr26
+kyleking_mdformat-mkdocs_pr38
+kyleking_mdformat-mkdocs_pr41
+kyleking_mdformat-mkdocs_pr43
+kyleking_mdformat-mkdocs_pr52
+kyleking_mdformat-mkdocs_pr55
+kyleking_mdformat-mkdocs_pr62
+lancedb_lancedb_pr123
+lancedb_lancedb_pr174
+lancedb_lancedb_pr217
+lancedb_lancedb_pr232
+lancedb_lancedb_pr233
+lancedb_lancedb_pr241
+lancedb_lancedb_pr254
+lancedb_lancedb_pr26
+lancedb_lancedb_pr260
+lancedb_lancedb_pr274
+lancedb_lancedb_pr304
+lancedb_lancedb_pr316
+lancedb_lancedb_pr34
+lancedb_lancedb_pr35
+lancedb_lancedb_pr47
+landscapeio_requirements-detector_pr50
+landscapeio_requirements-detector_pr51
+langchain-ai_langchain-aws_pr5
+lasp_cdflib_pr106
+lasp_cdflib_pr140
+lasp_cdflib_pr144
+lasp_cdflib_pr156
+lasp_cdflib_pr159
+lasp_cdflib_pr162
+lasp_cdflib_pr187
+lasp_cdflib_pr199
+lasp_cdflib_pr200
+lasp_cdflib_pr201
+lasp_cdflib_pr203
+lasp_cdflib_pr205
+lasp_cdflib_pr206
+lasp_cdflib_pr209
+lasp_cdflib_pr217
+lasp_cdflib_pr227
+lasp_cdflib_pr251
+lasp_cdflib_pr252
+lasp_cdflib_pr253
+lasp_cdflib_pr255
+lasp_cdflib_pr256
+lasp_cdflib_pr257
+lasp_cdflib_pr284
+lasp_cdflib_pr287
+lasp_cdflib_pr38
+lasp_cdflib_pr46
+lasp_cdflib_pr49
+lasp_cdflib_pr51
+lasp_cdflib_pr54
+lasp_cdflib_pr57
+lasp_cdflib_pr79
+lasp_cdflib_pr97
+lasselindqvist_robotframework-imaplibrary2_pr17
+lasselindqvist_robotframework-imaplibrary2_pr32
+lasselindqvist_robotframework-imaplibrary2_pr33
+lasselindqvist_robotframework-imaplibrary2_pr35
+lasselindqvist_robotframework-imaplibrary2_pr38
+lasselindqvist_robotframework-imaplibrary2_pr40
+lepture_flask-oauthlib_pr202
+lepture_flask-oauthlib_pr290
+lepture_flask-oauthlib_pr340
+lepture_flask-oauthlib_pr358
+lepture_flask-oauthlib_pr385
+lepture_mistune_pr283
+lepture_mistune_pr295
+lepture_mistune_pr337
+lepture_mistune_pr375
+lepture_mistune_pr384
+lepture_mistune_pr395
+lesscpy_lesscpy_pr117
+lesscpy_lesscpy_pr118
+lextudio_pysmi_pr11
+linkml_prefixmaps_pr14
+linkml_prefixmaps_pr17
+linkml_prefixmaps_pr37
+linkml_prefixmaps_pr5
+liormizr_s3path_pr116
+liormizr_s3path_pr118
+liormizr_s3path_pr121
+liormizr_s3path_pr124
+liormizr_s3path_pr129
+liormizr_s3path_pr132
+liormizr_s3path_pr139
+liormizr_s3path_pr152
+liormizr_s3path_pr163
+liormizr_s3path_pr171
+liormizr_s3path_pr173
+liormizr_s3path_pr177
+liormizr_s3path_pr181
+liormizr_s3path_pr196
+liran-funaro_sphinx-markdown-builder_pr20
+litl_backoff_pr161
+litl_rauth_pr147
+lmas_opensimplex_pr31
+lmfit_asteval_pr85
+lmmentel_mendeleev_pr43
+lmmentel_mendeleev_pr53
+lmmentel_mendeleev_pr76
+loadsmart_django-jaiminho_pr18
+loadsmart_django-jaiminho_pr181
+loadsmart_django-jaiminho_pr19
+loadsmart_django-jaiminho_pr20
+loadsmart_django-jaiminho_pr23
+loadsmart_django-jaiminho_pr24
+loadsmart_django-jaiminho_pr27
+loadsmart_django-jaiminho_pr29
+loadsmart_django-jaiminho_pr30
+loadsmart_django-jaiminho_pr36
+loadsmart_django-jaiminho_pr38
+loadsmart_django-jaiminho_pr39
+loadsmart_django-jaiminho_pr40
+loadsmart_django-jaiminho_pr44
+loadsmart_django-jaiminho_pr7
+loadsmart_django-jaiminho_pr8
+loadsmart_django-jaiminho_pr82
+loadsmart_django-jaiminho_pr91
+loadsmart_django-jaiminho_pr99
+localstack_plux_pr10
+localstack_plux_pr17
+localstack_plux_pr18
+localstack_plux_pr19
+localstack_plux_pr20
+localstack_plux_pr21
+localstack_plux_pr22
+localstack_plux_pr24
+localstack_plux_pr28
+localstack_plux_pr33
+localstack_plux_pr5
+localstack_plux_pr7
+localstack_plux_pr9
+logandk_serverless-wsgi_pr100
+logandk_serverless-wsgi_pr101
+logandk_serverless-wsgi_pr146
+logandk_serverless-wsgi_pr149
+logandk_serverless-wsgi_pr167
+logandk_serverless-wsgi_pr189
+logandk_serverless-wsgi_pr193
+logandk_serverless-wsgi_pr195
+logandk_serverless-wsgi_pr199
+logandk_serverless-wsgi_pr222
+logandk_serverless-wsgi_pr224
+logandk_serverless-wsgi_pr23
+logandk_serverless-wsgi_pr232
+logandk_serverless-wsgi_pr248
+logandk_serverless-wsgi_pr25
+logandk_serverless-wsgi_pr273
+logandk_serverless-wsgi_pr28
+logandk_serverless-wsgi_pr61
+logandk_serverless-wsgi_pr87
+logdna_python_pr100
+logdna_python_pr104
+logdna_python_pr107
+logdna_python_pr75
+logdna_python_pr87
+logdna_python_pr93
+logdna_python_pr96
+lovesegfault_beautysh_pr36
+ludeeus_awesomeversion_pr107
+ludeeus_awesomeversion_pr122
+ludeeus_awesomeversion_pr123
+ludeeus_awesomeversion_pr133
+ludeeus_awesomeversion_pr149
+ludeeus_awesomeversion_pr150
+ludeeus_awesomeversion_pr156
+ludeeus_awesomeversion_pr159
+ludeeus_awesomeversion_pr162
+ludeeus_awesomeversion_pr165
+ludeeus_awesomeversion_pr170
+ludeeus_awesomeversion_pr173
+ludeeus_awesomeversion_pr174
+ludeeus_awesomeversion_pr184
+ludeeus_awesomeversion_pr185
+ludeeus_awesomeversion_pr195
+ludeeus_awesomeversion_pr219
+ludeeus_awesomeversion_pr224
+ludeeus_awesomeversion_pr233
+ludeeus_awesomeversion_pr264
+ludeeus_awesomeversion_pr28
+ludeeus_awesomeversion_pr290
+ludeeus_awesomeversion_pr302
+ludeeus_awesomeversion_pr304
+ludeeus_awesomeversion_pr33
+ludeeus_awesomeversion_pr335
+ludeeus_awesomeversion_pr35
+ludeeus_awesomeversion_pr36
+ludeeus_awesomeversion_pr37
+ludeeus_awesomeversion_pr38
+ludeeus_awesomeversion_pr389
+ludeeus_awesomeversion_pr41
+ludeeus_awesomeversion_pr42
+ludeeus_awesomeversion_pr421
+ludeeus_awesomeversion_pr423
+ludeeus_awesomeversion_pr44
+ludeeus_awesomeversion_pr46
+ludeeus_awesomeversion_pr47
+ludeeus_awesomeversion_pr50
+ludeeus_awesomeversion_pr69
+ludeeus_awesomeversion_pr76
+ludeeus_awesomeversion_pr78
+ludeeus_awesomeversion_pr92
+ludeeus_awesomeversion_pr95
+ludeeus_awesomeversion_pr97
+ludeeus_awesomeversion_pr98
+luolingchun_flask-openapi3_pr115
+luolingchun_flask-openapi3_pr130
+luolingchun_flask-openapi3_pr141
+luolingchun_flask-openapi3_pr149
+luolingchun_flask-openapi3_pr180
+luolingchun_flask-openapi3_pr184
+luolingchun_flask-openapi3_pr189
+luolingchun_flask-openapi3_pr197
+luolingchun_flask-openapi3_pr199
+luolingchun_flask-openapi3_pr201
+luolingchun_flask-openapi3_pr215
+luolingchun_flask-openapi3_pr221
+luolingchun_flask-openapi3_pr224
+luolingchun_flask-openapi3_pr227
+luolingchun_flask-openapi3_pr232
+luolingchun_flask-openapi3_pr241
+luolingchun_flask-openapi3_pr243
+luolingchun_flask-openapi3_pr37
+luolingchun_flask-openapi3_pr38
+luolingchun_flask-openapi3_pr49
+luolingchun_flask-openapi3_pr68
+luolingchun_flask-openapi3_pr75
+luolingchun_flask-openapi3_pr83
+luolingchun_flask-openapi3_pr84
+luolingchun_flask-openapi3_pr98
+m-burst_flake8-pytest-style_pr125
+m-burst_flake8-pytest-style_pr129
+m-burst_flake8-pytest-style_pr280
+m-burst_flake8-pytest-style_pr3
+m-burst_flake8-pytest-style_pr323
+m-burst_flake8-pytest-style_pr98
+m-burst_flake8-pytest-style_pr99
+madpah_requirements-parser_pr101
+madpah_requirements-parser_pr103
+madpah_requirements-parser_pr105
+madpah_requirements-parser_pr98
+madpah_serializable_pr138
+madpah_serializable_pr177
+madpah_serializable_pr178
+madpah_serializable_pr25
+madpah_serializable_pr26
+madpah_serializable_pr4
+madpah_serializable_pr47
+madpah_serializable_pr5
+madpah_serializable_pr90
+magmax_python-inquirer_pr123
+magmax_python-inquirer_pr154
+magmax_python-inquirer_pr167
+magmax_python-inquirer_pr227
+magmax_python-inquirer_pr232
+magmax_python-inquirer_pr256
+magmax_python-inquirer_pr259
+magmax_python-inquirer_pr275
+magmax_python-inquirer_pr526
+magmax_python-inquirer_pr587
+magmax_python-inquirer_pr687
+mahmoudimus_nose-timer_pr29
+mahmoudimus_nose-timer_pr30
+mahmoudimus_nose-timer_pr37
+mahmoudimus_nose-timer_pr39
+mahmoudimus_nose-timer_pr40
+mahmoudimus_nose-timer_pr42
+makinacorpus_django-safedelete_pr138
+makinacorpus_django-safedelete_pr144
+makinacorpus_django-safedelete_pr145
+makinacorpus_django-safedelete_pr147
+makinacorpus_django-safedelete_pr160
+makinacorpus_django-safedelete_pr179
+makinacorpus_django-safedelete_pr183
+makinacorpus_django-safedelete_pr197
+makinacorpus_django-safedelete_pr204
+makinacorpus_django-safedelete_pr209
+makinacorpus_django-safedelete_pr228
+makinacorpus_django-safedelete_pr236
+makinacorpus_django-safedelete_pr243
+malwarefrank_dnfile_pr29
+malwarefrank_dnfile_pr48
+malwarefrank_dnfile_pr50
+malwarefrank_dnfile_pr74
+malwarefrank_dnfile_pr86
+malwarefrank_dnfile_pr88
+manchenkoff_openapi3-parser_pr39
+manchenkoff_openapi3-parser_pr44
+manchenkoff_openapi3-parser_pr49
+manchenkoff_openapi3-parser_pr62
+manchenkoff_openapi3-parser_pr77
+manuzhang_mkdocs-htmlproofer-plugin_pr49
+manuzhang_mkdocs-htmlproofer-plugin_pr51
+manuzhang_mkdocs-htmlproofer-plugin_pr53
+manuzhang_mkdocs-htmlproofer-plugin_pr55
+manuzhang_mkdocs-htmlproofer-plugin_pr61
+manuzhang_mkdocs-htmlproofer-plugin_pr62
+manuzhang_mkdocs-htmlproofer-plugin_pr68
+manuzhang_mkdocs-htmlproofer-plugin_pr72
+manuzhang_mkdocs-htmlproofer-plugin_pr75
+manuzhang_mkdocs-htmlproofer-plugin_pr79
+manuzhang_mkdocs-htmlproofer-plugin_pr80
+manuzhang_mkdocs-htmlproofer-plugin_pr82
+manuzhang_mkdocs-htmlproofer-plugin_pr91
+mapado_haversine_pr20
+mapado_haversine_pr78
+mapbox_mapbox-sdk-py_pr101
+mapbox_mapbox-sdk-py_pr118
+mapbox_mapbox-sdk-py_pr126
+mapbox_mapbox-sdk-py_pr133
+mapbox_mapbox-sdk-py_pr135
+mapbox_mapbox-sdk-py_pr137
+mapbox_mapbox-sdk-py_pr139
+mapbox_mapbox-sdk-py_pr62
+mapbox_mapbox-sdk-py_pr67
+mapbox_mapbox-sdk-py_pr76
+mapbox_mapbox-sdk-py_pr83
+mapbox_mapbox-sdk-py_pr85
+mapbox_mapbox-sdk-py_pr86
+mapbox_mapbox-sdk-py_pr87
+mapbox_mapbox-sdk-py_pr91
+mapbox_mapbox-sdk-py_pr92
+mapbox_mapbox-sdk-py_pr96
+mapbox_mapbox-sdk-py_pr97
+mapbox_mercantile_pr101
+mapbox_mercantile_pr107
+mapbox_mercantile_pr111
+mapbox_mercantile_pr124
+mapbox_mercantile_pr128
+mapbox_mercantile_pr129
+mapbox_mercantile_pr130
+mapbox_mercantile_pr49
+mapbox_mercantile_pr51
+mapbox_mercantile_pr57
+mapbox_mercantile_pr60
+mapbox_mercantile_pr62
+mapbox_mercantile_pr65
+marcharper_python-ternary_pr145
+marcosschroh_dataclasses-avroschema_pr12
+marcosschroh_dataclasses-avroschema_pr16
+marcosschroh_dataclasses-avroschema_pr163
+marcosschroh_dataclasses-avroschema_pr170
+marcosschroh_dataclasses-avroschema_pr172
+marcosschroh_dataclasses-avroschema_pr176
+marcosschroh_dataclasses-avroschema_pr180
+marcosschroh_dataclasses-avroschema_pr181
+marcosschroh_dataclasses-avroschema_pr197
+marcosschroh_dataclasses-avroschema_pr2
+marcosschroh_dataclasses-avroschema_pr201
+marcosschroh_dataclasses-avroschema_pr205
+marcosschroh_dataclasses-avroschema_pr214
+marcosschroh_dataclasses-avroschema_pr215
+marcosschroh_dataclasses-avroschema_pr218
+marcosschroh_dataclasses-avroschema_pr227
+marcosschroh_dataclasses-avroschema_pr228
+marcosschroh_dataclasses-avroschema_pr230
+marcosschroh_dataclasses-avroschema_pr231
+marcosschroh_dataclasses-avroschema_pr235
+marcosschroh_dataclasses-avroschema_pr236
+marcosschroh_dataclasses-avroschema_pr237
+marcosschroh_dataclasses-avroschema_pr243
+marcosschroh_dataclasses-avroschema_pr244
+marcosschroh_dataclasses-avroschema_pr245
+marcosschroh_dataclasses-avroschema_pr247
+marcosschroh_dataclasses-avroschema_pr253
+marcosschroh_dataclasses-avroschema_pr255
+marcosschroh_dataclasses-avroschema_pr275
+marcosschroh_dataclasses-avroschema_pr282
+marcosschroh_dataclasses-avroschema_pr296
+marcosschroh_dataclasses-avroschema_pr3
+marcosschroh_dataclasses-avroschema_pr4
+marcosschroh_dataclasses-avroschema_pr481
+marcosschroh_dataclasses-avroschema_pr488
+marcosschroh_dataclasses-avroschema_pr5
+marcosschroh_dataclasses-avroschema_pr513
+marcosschroh_dataclasses-avroschema_pr528
+marcosschroh_dataclasses-avroschema_pr545
+marcosschroh_dataclasses-avroschema_pr569
+marcosschroh_dataclasses-avroschema_pr570
+marcosschroh_dataclasses-avroschema_pr571
+marcosschroh_dataclasses-avroschema_pr583
+marcosschroh_dataclasses-avroschema_pr599
+marcosschroh_dataclasses-avroschema_pr608
+marcosschroh_dataclasses-avroschema_pr63
+marcosschroh_dataclasses-avroschema_pr639
+marcosschroh_dataclasses-avroschema_pr643
+marcosschroh_dataclasses-avroschema_pr65
+marcosschroh_dataclasses-avroschema_pr654
+marcosschroh_dataclasses-avroschema_pr66
+marcosschroh_dataclasses-avroschema_pr68
+marcosschroh_dataclasses-avroschema_pr682
+marcosschroh_dataclasses-avroschema_pr690
+marcosschroh_dataclasses-avroschema_pr7
+marcosschroh_dataclasses-avroschema_pr723
+marcosschroh_dataclasses-avroschema_pr724
+marcosschroh_dataclasses-avroschema_pr744
+marcosschroh_dataclasses-avroschema_pr751
+marcosschroh_dataclasses-avroschema_pr770
+marcosschroh_dataclasses-avroschema_pr776
+marcosschroh_dataclasses-avroschema_pr777
+marcosschroh_dataclasses-avroschema_pr778
+marcosschroh_dataclasses-avroschema_pr780
+marcosschroh_dataclasses-avroschema_pr783
+marcosschroh_dataclasses-avroschema_pr795
+marcosschroh_dataclasses-avroschema_pr796
+marcosschroh_dataclasses-avroschema_pr810
+marcosschroh_dataclasses-avroschema_pr815
+marcosschroh_dataclasses-avroschema_pr817
+marcosschroh_dataclasses-avroschema_pr843
+marcosschroh_dataclasses-avroschema_pr853
+marcosschroh_dataclasses-avroschema_pr870
+marcosschroh_dataclasses-avroschema_pr891
+marcosschroh_dataclasses-avroschema_pr9
+marksparkza_jschon_pr47
+marksparkza_jschon_pr55
+marksparkza_jschon_pr80
+marshallward_f90nml_pr120
+marshallward_f90nml_pr123
+marshallward_f90nml_pr180
+marshallward_f90nml_pr70
+marshallward_f90nml_pr71
+marshmallow-code_marshmallow-oneofschema_pr111
+marshmallow-code_marshmallow-oneofschema_pr212
+marshmallow-code_marshmallow-oneofschema_pr5
+marshmallow-code_marshmallow-oneofschema_pr6
+martinblech_xmltodict_pr120
+martinblech_xmltodict_pr132
+martinblech_xmltodict_pr16
+martinblech_xmltodict_pr180
+martinblech_xmltodict_pr211
+martinblech_xmltodict_pr212
+martinblech_xmltodict_pr213
+martinblech_xmltodict_pr222
+martinblech_xmltodict_pr295
+martinblech_xmltodict_pr346
+martinblech_xmltodict_pr35
+martinblech_xmltodict_pr394
+martinblech_xmltodict_pr395
+martinblech_xmltodict_pr40
+martinblech_xmltodict_pr92
+masaccio_compact-json_pr11
+masaccio_compact-json_pr16
+masaccio_compact-json_pr22
+masaccio_compact-json_pr23
+masaccio_compact-json_pr6
+masaccio_compact-json_pr8
+masci_banks_pr11
+masci_banks_pr16
+masci_banks_pr20
+masci_banks_pr26
+masci_banks_pr30
+masci_banks_pr32
+masci_banks_pr33
+masci_banks_pr37
+masci_banks_pr38
+masci_banks_pr39
+masci_banks_pr41
+masci_banks_pr44
+masci_banks_pr47
+masci_banks_pr55
+masci_banks_pr57
+masci_banks_pr60
+masci_banks_pr8
+matan1008_pykdebugparser_pr10
+matan1008_pykdebugparser_pr12
+matan1008_pykdebugparser_pr17
+matan1008_pykdebugparser_pr5
+matan1008_pykdebugparser_pr6
+materialsproject_custodian_pr277
+materialsvirtuallab_monty_pr146
+materialsvirtuallab_monty_pr152
+materialsvirtuallab_monty_pr18
+materialsvirtuallab_monty_pr185
+materialsvirtuallab_monty_pr21
+materialsvirtuallab_monty_pr225
+materialsvirtuallab_monty_pr23
+materialsvirtuallab_monty_pr239
+materialsvirtuallab_monty_pr251
+materialsvirtuallab_monty_pr267
+materialsvirtuallab_monty_pr272
+materialsvirtuallab_monty_pr280
+materialsvirtuallab_monty_pr3
+materialsvirtuallab_monty_pr35
+materialsvirtuallab_monty_pr350
+materialsvirtuallab_monty_pr363
+materialsvirtuallab_monty_pr379
+materialsvirtuallab_monty_pr4
+materialsvirtuallab_monty_pr400
+materialsvirtuallab_monty_pr42
+materialsvirtuallab_monty_pr43
+materialsvirtuallab_monty_pr444
+materialsvirtuallab_monty_pr446
+materialsvirtuallab_monty_pr45
+materialsvirtuallab_monty_pr46
+materialsvirtuallab_monty_pr465
+materialsvirtuallab_monty_pr47
+materialsvirtuallab_monty_pr536
+materialsvirtuallab_monty_pr537
+materialsvirtuallab_monty_pr548
+materialsvirtuallab_monty_pr55
+materialsvirtuallab_monty_pr580
+materialsvirtuallab_monty_pr597
+materialsvirtuallab_monty_pr6
+materialsvirtuallab_monty_pr602
+materialsvirtuallab_monty_pr611
+materialsvirtuallab_monty_pr618
+materialsvirtuallab_monty_pr628
+materialsvirtuallab_monty_pr635
+materialsvirtuallab_monty_pr638
+materialsvirtuallab_monty_pr642
+materialsvirtuallab_monty_pr646
+materialsvirtuallab_monty_pr654
+materialsvirtuallab_monty_pr657
+materialsvirtuallab_monty_pr660
+materialsvirtuallab_monty_pr671
+materialsvirtuallab_monty_pr676
+materialsvirtuallab_monty_pr678
+materialsvirtuallab_monty_pr682
+materialsvirtuallab_monty_pr688
+materialsvirtuallab_monty_pr689
+materialsvirtuallab_monty_pr691
+materialsvirtuallab_monty_pr698
+materialsvirtuallab_monty_pr699
+materialsvirtuallab_monty_pr703
+materialsvirtuallab_monty_pr712
+materialsvirtuallab_monty_pr716
+materialsvirtuallab_monty_pr722
+materialsvirtuallab_monty_pr728
+materialsvirtuallab_monty_pr73
+materialsvirtuallab_monty_pr730
+materialsvirtuallab_monty_pr732
+materialsvirtuallab_monty_pr733
+materialsvirtuallab_monty_pr734
+materialsvirtuallab_monty_pr742
+materialsvirtuallab_monty_pr752
+materialsvirtuallab_monty_pr755
+materialsvirtuallab_monty_pr761
+matiasb_python-unidiff_pr100
+matiasb_python-unidiff_pr106
+matiasb_python-unidiff_pr11
+matiasb_python-unidiff_pr110
+matiasb_python-unidiff_pr28
+matiasb_python-unidiff_pr4
+matiasb_python-unidiff_pr45
+matiasb_python-unidiff_pr46
+matiasb_python-unidiff_pr5
+matiasb_python-unidiff_pr59
+matiasb_python-unidiff_pr66
+matiasb_python-unidiff_pr68
+matiasb_python-unidiff_pr70
+matiasb_python-unidiff_pr75
+matiasb_python-unidiff_pr79
+matiasb_python-unidiff_pr86
+matiasb_python-unidiff_pr90
+matiasb_python-unidiff_pr95
+matplotlib_cmocean_pr106
+matplotlib_cmocean_pr86
+matplotlib_cycler_pr100
+matplotlib_cycler_pr52
+matplotlib_cycler_pr72
+matrix-org_matrix-python-common_pr29
+matrix-org_matrix-python-sdk_pr101
+matrix-org_matrix-python-sdk_pr104
+matrix-org_matrix-python-sdk_pr105
+matrix-org_matrix-python-sdk_pr160
+matrix-org_matrix-python-sdk_pr162
+matrix-org_matrix-python-sdk_pr174
+matrix-org_matrix-python-sdk_pr212
+matrix-org_matrix-python-sdk_pr22
+matrix-org_matrix-python-sdk_pr229
+matrix-org_matrix-python-sdk_pr235
+matrix-org_matrix-python-sdk_pr249
+matrix-org_matrix-python-sdk_pr254
+matrix-org_matrix-python-sdk_pr260
+matrix-org_matrix-python-sdk_pr274
+matrix-org_matrix-python-sdk_pr28
+matrix-org_matrix-python-sdk_pr289
+matrix-org_matrix-python-sdk_pr321
+matrix-org_matrix-python-sdk_pr34
+matrix-org_matrix-python-sdk_pr39
+matrix-org_matrix-python-sdk_pr44
+matrix-org_matrix-python-sdk_pr53
+matrix-org_matrix-python-sdk_pr55
+matrix-org_matrix-python-sdk_pr58
+matrix-org_matrix-python-sdk_pr59
+matrix-org_matrix-python-sdk_pr62
+matrix-org_matrix-python-sdk_pr66
+matrix-org_matrix-python-sdk_pr77
+matrix-org_matrix-python-sdk_pr78
+matrix-org_matrix-python-sdk_pr81
+matrix-org_matrix-python-sdk_pr86
+matrix-org_matrix-python-sdk_pr89
+matrix-org_matrix-python-sdk_pr90
+matrix-org_matrix-python-sdk_pr95
+matrix-org_matrix-python-sdk_pr97
+matrix-org_matrix-python-sdk_pr98
+matrix-org_python-canonicaljson_pr34
+matrix-org_python-canonicaljson_pr49
+matrix-org_python-canonicaljson_pr9
+matthew-brett_delocate_pr167
+matthew-brett_delocate_pr183
+matthew-brett_delocate_pr186
+matthew-brett_delocate_pr187
+matthewdeanmartin_openmock_pr15
+matthewdeanmartin_openmock_pr23
+matthewdeanmartin_openmock_pr4
+matthewdeanmartin_openmock_pr7
+matthewwardrop_formulaic_pr100
+matthewwardrop_formulaic_pr101
+matthewwardrop_formulaic_pr103
+matthewwardrop_formulaic_pr11
+matthewwardrop_formulaic_pr110
+matthewwardrop_formulaic_pr111
+matthewwardrop_formulaic_pr113
+matthewwardrop_formulaic_pr117
+matthewwardrop_formulaic_pr123
+matthewwardrop_formulaic_pr139
+matthewwardrop_formulaic_pr141
+matthewwardrop_formulaic_pr145
+matthewwardrop_formulaic_pr147
+matthewwardrop_formulaic_pr15
+matthewwardrop_formulaic_pr154
+matthewwardrop_formulaic_pr155
+matthewwardrop_formulaic_pr16
+matthewwardrop_formulaic_pr166
+matthewwardrop_formulaic_pr167
+matthewwardrop_formulaic_pr197
+matthewwardrop_formulaic_pr200
+matthewwardrop_formulaic_pr201
+matthewwardrop_formulaic_pr203
+matthewwardrop_formulaic_pr204
+matthewwardrop_formulaic_pr205
+matthewwardrop_formulaic_pr207
+matthewwardrop_formulaic_pr208
+matthewwardrop_formulaic_pr209
+matthewwardrop_formulaic_pr21
+matthewwardrop_formulaic_pr214
+matthewwardrop_formulaic_pr216
+matthewwardrop_formulaic_pr218
+matthewwardrop_formulaic_pr22
+matthewwardrop_formulaic_pr220
+matthewwardrop_formulaic_pr221
+matthewwardrop_formulaic_pr222
+matthewwardrop_formulaic_pr223
+matthewwardrop_formulaic_pr225
+matthewwardrop_formulaic_pr234
+matthewwardrop_formulaic_pr236
+matthewwardrop_formulaic_pr27
+matthewwardrop_formulaic_pr41
+matthewwardrop_formulaic_pr43
+matthewwardrop_formulaic_pr44
+matthewwardrop_formulaic_pr6
+matthewwardrop_formulaic_pr63
+matthewwardrop_formulaic_pr70
+matthewwardrop_formulaic_pr72
+matthewwardrop_formulaic_pr83
+matthewwardrop_formulaic_pr86
+matthewwardrop_formulaic_pr99
+mattijn_topojson_pr100
+mattijn_topojson_pr105
+mattijn_topojson_pr107
+mattijn_topojson_pr108
+mattijn_topojson_pr112
+mattijn_topojson_pr114
+mattijn_topojson_pr128
+mattijn_topojson_pr129
+mattijn_topojson_pr130
+mattijn_topojson_pr139
+mattijn_topojson_pr141
+mattijn_topojson_pr150
+mattijn_topojson_pr154
+mattijn_topojson_pr157
+mattijn_topojson_pr158
+mattijn_topojson_pr165
+mattijn_topojson_pr166
+mattijn_topojson_pr168
+mattijn_topojson_pr175
+mattijn_topojson_pr179
+mattijn_topojson_pr182
+mattijn_topojson_pr185
+mattijn_topojson_pr192
+mattijn_topojson_pr196
+mattijn_topojson_pr202
+mattijn_topojson_pr204
+mattijn_topojson_pr210
+mattijn_topojson_pr211
+mattijn_topojson_pr228
+mattijn_topojson_pr23
+mattijn_topojson_pr25
+mattijn_topojson_pr26
+mattijn_topojson_pr31
+mattijn_topojson_pr32
+mattijn_topojson_pr33
+mattijn_topojson_pr34
+mattijn_topojson_pr35
+mattijn_topojson_pr36
+mattijn_topojson_pr38
+mattijn_topojson_pr42
+mattijn_topojson_pr43
+mattijn_topojson_pr51
+mattijn_topojson_pr52
+mattijn_topojson_pr71
+mattijn_topojson_pr72
+mattijn_topojson_pr78
+mattijn_topojson_pr80
+mattijn_topojson_pr83
+mattijn_topojson_pr86
+mattijn_topojson_pr87
+mattijn_topojson_pr92
+mattijn_topojson_pr93
+mattijn_topojson_pr95
+mattijn_topojson_pr97
+mattrobenolt_jinja2-cli_pr118
+mattrobenolt_jinja2-cli_pr28
+matyasrichter_fastapi-injector_pr25
+maurerle_eralchemy2_pr12
+maurerle_eralchemy2_pr20
+maurerle_eralchemy2_pr31
+maurerle_eralchemy2_pr34
+maurerle_eralchemy2_pr35
+maurerle_eralchemy2_pr40
+maxb2_typer-config_pr15
+maxb2_typer-config_pr17
+maxb2_typer-config_pr23
+maxb2_typer-config_pr6
+maxcountryman_flask-login_pr288
+maxcountryman_flask-login_pr291
+maxcountryman_flask-login_pr316
+maxcountryman_flask-login_pr330
+maxcountryman_flask-login_pr334
+maxcountryman_flask-login_pr359
+maxcountryman_flask-login_pr361
+maxcountryman_flask-login_pr370
+maxcountryman_flask-login_pr371
+maxcountryman_flask-login_pr378
+maxcountryman_flask-login_pr403
+maxcountryman_flask-login_pr410
+maxcountryman_flask-login_pr414
+maxcountryman_flask-login_pr464
+maxcountryman_flask-login_pr470
+maxcountryman_flask-login_pr472
+maxcountryman_flask-login_pr595
+maxfischer2781_asyncstdlib_pr100
+maxfischer2781_asyncstdlib_pr103
+maxfischer2781_asyncstdlib_pr108
+maxfischer2781_asyncstdlib_pr109
+maxfischer2781_asyncstdlib_pr115
+maxfischer2781_asyncstdlib_pr145
+maxfischer2781_asyncstdlib_pr150
+maxfischer2781_asyncstdlib_pr154
+maxfischer2781_asyncstdlib_pr16
+maxfischer2781_asyncstdlib_pr160
+maxfischer2781_asyncstdlib_pr171
+maxfischer2781_asyncstdlib_pr178
+maxfischer2781_asyncstdlib_pr19
+maxfischer2781_asyncstdlib_pr24
+maxfischer2781_asyncstdlib_pr25
+maxfischer2781_asyncstdlib_pr29
+maxfischer2781_asyncstdlib_pr34
+maxfischer2781_asyncstdlib_pr4
+maxfischer2781_asyncstdlib_pr44
+maxfischer2781_asyncstdlib_pr6
+maxfischer2781_asyncstdlib_pr60
+maxfischer2781_asyncstdlib_pr69
+maxfischer2781_asyncstdlib_pr72
+maxfischer2781_asyncstdlib_pr75
+maximkulkin_lollipop-jsonschema_pr11
+maximkulkin_lollipop-jsonschema_pr3
+maximtrp_scikit-posthocs_pr44
+maxpmaxp_pdfreader_pr13
+maxpmaxp_pdfreader_pr19
+maxpmaxp_pdfreader_pr24
+maxpmaxp_pdfreader_pr6
+maxpmaxp_pdfreader_pr7
+maxpmaxp_pdfreader_pr8
+mbr_tinyrpc_pr6
+mbr_tinyrpc_pr64
+mbr_tinyrpc_pr84
+mbr_tinyrpc_pr91
+mbr_tinyrpc_pr94
+mcu-tools_mcuboot_pr1007
+mcu-tools_mcuboot_pr1009
+mcu-tools_mcuboot_pr1015
+mcu-tools_mcuboot_pr1042
+mcu-tools_mcuboot_pr1053
+mcu-tools_mcuboot_pr1067
+mcu-tools_mcuboot_pr1071
+mcu-tools_mcuboot_pr1073
+mcu-tools_mcuboot_pr1080
+mcu-tools_mcuboot_pr1081
+mcu-tools_mcuboot_pr1101
+mcu-tools_mcuboot_pr1115
+mcu-tools_mcuboot_pr1137
+mcu-tools_mcuboot_pr1149
+mcu-tools_mcuboot_pr1155
+mcu-tools_mcuboot_pr1162
+mcu-tools_mcuboot_pr1163
+mcu-tools_mcuboot_pr1175
+mcu-tools_mcuboot_pr1184
+mcu-tools_mcuboot_pr1186
+mcu-tools_mcuboot_pr1190
+mcu-tools_mcuboot_pr1199
+mcu-tools_mcuboot_pr1206
+mcu-tools_mcuboot_pr1207
+mcu-tools_mcuboot_pr1208
+mcu-tools_mcuboot_pr1221
+mcu-tools_mcuboot_pr1222
+mcu-tools_mcuboot_pr1235
+mcu-tools_mcuboot_pr1237
+mcu-tools_mcuboot_pr1246
+mcu-tools_mcuboot_pr1249
+mcu-tools_mcuboot_pr1252
+mcu-tools_mcuboot_pr1254
+mcu-tools_mcuboot_pr1255
+mcu-tools_mcuboot_pr1261
+mcu-tools_mcuboot_pr1280
+mcu-tools_mcuboot_pr1284
+mcu-tools_mcuboot_pr1289
+mcu-tools_mcuboot_pr1298
+mcu-tools_mcuboot_pr1299
+mcu-tools_mcuboot_pr1311
+mcu-tools_mcuboot_pr1322
+mcu-tools_mcuboot_pr1325
+mcu-tools_mcuboot_pr1326
+mcu-tools_mcuboot_pr1327
+mcu-tools_mcuboot_pr1329
+mcu-tools_mcuboot_pr1333
+mcu-tools_mcuboot_pr1335
+mcu-tools_mcuboot_pr1336
+mcu-tools_mcuboot_pr1341
+mcu-tools_mcuboot_pr1346
+mcu-tools_mcuboot_pr1349
+mcu-tools_mcuboot_pr1352
+mcu-tools_mcuboot_pr1359
+mcu-tools_mcuboot_pr1362
+mcu-tools_mcuboot_pr1363
+mcu-tools_mcuboot_pr1379
+mcu-tools_mcuboot_pr1382
+mcu-tools_mcuboot_pr1388
+mcu-tools_mcuboot_pr1412
+mcu-tools_mcuboot_pr1416
+mcu-tools_mcuboot_pr1419
+mcu-tools_mcuboot_pr1424
+mcu-tools_mcuboot_pr1431
+mcu-tools_mcuboot_pr1434
+mcu-tools_mcuboot_pr1435
+mcu-tools_mcuboot_pr1451
+mcu-tools_mcuboot_pr1455
+mcu-tools_mcuboot_pr1458
+mcu-tools_mcuboot_pr1461
+mcu-tools_mcuboot_pr1483
+mcu-tools_mcuboot_pr1484
+mcu-tools_mcuboot_pr1505
+mcu-tools_mcuboot_pr1507
+mcu-tools_mcuboot_pr1509
+mcu-tools_mcuboot_pr1522
+mcu-tools_mcuboot_pr1533
+mcu-tools_mcuboot_pr1536
+mcu-tools_mcuboot_pr1546
+mcu-tools_mcuboot_pr1564
+mcu-tools_mcuboot_pr1570
+mcu-tools_mcuboot_pr1571
+mcu-tools_mcuboot_pr1589
+mcu-tools_mcuboot_pr1597
+mcu-tools_mcuboot_pr1600
+mcu-tools_mcuboot_pr1601
+mcu-tools_mcuboot_pr1610
+mcu-tools_mcuboot_pr1614
+mcu-tools_mcuboot_pr1626
+mcu-tools_mcuboot_pr1629
+mcu-tools_mcuboot_pr1633
+mcu-tools_mcuboot_pr1636
+mcu-tools_mcuboot_pr1640
+mcu-tools_mcuboot_pr1644
+mcu-tools_mcuboot_pr1649
+mcu-tools_mcuboot_pr1651
+mcu-tools_mcuboot_pr1682
+mcu-tools_mcuboot_pr1684
+mcu-tools_mcuboot_pr1751
+mcu-tools_mcuboot_pr1756
+mcu-tools_mcuboot_pr1763
+mcu-tools_mcuboot_pr195
+mcu-tools_mcuboot_pr197
+mcu-tools_mcuboot_pr244
+mcu-tools_mcuboot_pr251
+mcu-tools_mcuboot_pr254
+mcu-tools_mcuboot_pr259
+mcu-tools_mcuboot_pr275
+mcu-tools_mcuboot_pr281
+mcu-tools_mcuboot_pr293
+mcu-tools_mcuboot_pr300
+mcu-tools_mcuboot_pr301
+mcu-tools_mcuboot_pr311
+mcu-tools_mcuboot_pr315
+mcu-tools_mcuboot_pr322
+mcu-tools_mcuboot_pr323
+mcu-tools_mcuboot_pr327
+mcu-tools_mcuboot_pr345
+mcu-tools_mcuboot_pr359
+mcu-tools_mcuboot_pr360
+mcu-tools_mcuboot_pr377
+mcu-tools_mcuboot_pr381
+mcu-tools_mcuboot_pr404
+mcu-tools_mcuboot_pr405
+mcu-tools_mcuboot_pr407
+mcu-tools_mcuboot_pr414
+mcu-tools_mcuboot_pr425
+mcu-tools_mcuboot_pr437
+mcu-tools_mcuboot_pr440
+mcu-tools_mcuboot_pr443
+mcu-tools_mcuboot_pr460
+mcu-tools_mcuboot_pr467
+mcu-tools_mcuboot_pr475
+mcu-tools_mcuboot_pr514
+mcu-tools_mcuboot_pr517
+mcu-tools_mcuboot_pr524
+mcu-tools_mcuboot_pr532
+mcu-tools_mcuboot_pr540
+mcu-tools_mcuboot_pr554
+mcu-tools_mcuboot_pr585
+mcu-tools_mcuboot_pr589
+mcu-tools_mcuboot_pr592
+mcu-tools_mcuboot_pr593
+mcu-tools_mcuboot_pr604
+mcu-tools_mcuboot_pr608
+mcu-tools_mcuboot_pr610
+mcu-tools_mcuboot_pr613
+mcu-tools_mcuboot_pr617
+mcu-tools_mcuboot_pr704
+mcu-tools_mcuboot_pr718
+mcu-tools_mcuboot_pr719
+mcu-tools_mcuboot_pr729
+mcu-tools_mcuboot_pr734
+mcu-tools_mcuboot_pr741
+mcu-tools_mcuboot_pr744
+mcu-tools_mcuboot_pr749
+mcu-tools_mcuboot_pr757
+mcu-tools_mcuboot_pr760
+mcu-tools_mcuboot_pr764
+mcu-tools_mcuboot_pr767
+mcu-tools_mcuboot_pr776
+mcu-tools_mcuboot_pr780
+mcu-tools_mcuboot_pr781
+mcu-tools_mcuboot_pr784
+mcu-tools_mcuboot_pr787
+mcu-tools_mcuboot_pr818
+mcu-tools_mcuboot_pr825
+mcu-tools_mcuboot_pr840
+mcu-tools_mcuboot_pr854
+mcu-tools_mcuboot_pr865
+mcu-tools_mcuboot_pr882
+mcu-tools_mcuboot_pr884
+mcu-tools_mcuboot_pr894
+mcu-tools_mcuboot_pr899
+mcu-tools_mcuboot_pr901
+mcu-tools_mcuboot_pr904
+mcu-tools_mcuboot_pr910
+mcu-tools_mcuboot_pr931
+mcu-tools_mcuboot_pr935
+mcu-tools_mcuboot_pr939
+mcu-tools_mcuboot_pr947
+mdapena_pyventus_pr9
+mdomke_schwifty_pr136
+mdomke_schwifty_pr154
+mdomke_schwifty_pr162
+mdomke_schwifty_pr165
+mdomke_schwifty_pr166
+mdomke_schwifty_pr191
+mdomke_schwifty_pr195
+mdomke_schwifty_pr201
+mdomke_schwifty_pr209
+mdomke_schwifty_pr218
+mdomke_schwifty_pr252
+mdomke_schwifty_pr26
+mdomke_schwifty_pr40
+mdomke_schwifty_pr44
+mdomke_schwifty_pr45
+mdomke_schwifty_pr47
+mdomke_schwifty_pr50
+mdomke_schwifty_pr51
+mdomke_schwifty_pr60
+mdomke_schwifty_pr80
+mdomke_schwifty_pr85
+mdowds_mock-firestore_pr11
+mdowds_mock-firestore_pr13
+mdowds_mock-firestore_pr14
+mdowds_mock-firestore_pr19
+mdowds_mock-firestore_pr23
+mdowds_mock-firestore_pr30
+mdowds_mock-firestore_pr32
+mdowds_mock-firestore_pr34
+mdowds_mock-firestore_pr36
+mdowds_mock-firestore_pr37
+mdowds_mock-firestore_pr44
+mdowds_mock-firestore_pr49
+mdowds_mock-firestore_pr56
+mdowds_mock-firestore_pr6
+meadsteve_lagom_pr100
+meadsteve_lagom_pr111
+meadsteve_lagom_pr113
+meadsteve_lagom_pr115
+meadsteve_lagom_pr127
+meadsteve_lagom_pr132
+meadsteve_lagom_pr136
+meadsteve_lagom_pr148
+meadsteve_lagom_pr152
+meadsteve_lagom_pr162
+meadsteve_lagom_pr167
+meadsteve_lagom_pr170
+meadsteve_lagom_pr177
+meadsteve_lagom_pr181
+meadsteve_lagom_pr196
+meadsteve_lagom_pr20
+meadsteve_lagom_pr211
+meadsteve_lagom_pr23
+meadsteve_lagom_pr231
+meadsteve_lagom_pr235
+meadsteve_lagom_pr244
+meadsteve_lagom_pr266
+meadsteve_lagom_pr267
+meadsteve_lagom_pr269
+meadsteve_lagom_pr33
+meadsteve_lagom_pr34
+meadsteve_lagom_pr37
+meadsteve_lagom_pr6
+meadsteve_lagom_pr83
+meadsteve_lagom_pr88
+meadsteve_lagom_pr90
+meadsteve_lagom_pr92
+medialab_ipysigma_pr199
+mediawiki-utilities_python-mwxml_pr13
+meeb_whoisit_pr18
+meeb_whoisit_pr2
+meeb_whoisit_pr33
+meeb_whoisit_pr38
+meeb_whoisit_pr6
+meeb_whoisit_pr7
+meeb_whoisit_pr8
+meerk40t_svgelements_pr100
+meerk40t_svgelements_pr106
+meerk40t_svgelements_pr108
+meerk40t_svgelements_pr110
+meerk40t_svgelements_pr113
+meerk40t_svgelements_pr117
+meerk40t_svgelements_pr123
+meerk40t_svgelements_pr131
+meerk40t_svgelements_pr132
+meerk40t_svgelements_pr134
+meerk40t_svgelements_pr151
+meerk40t_svgelements_pr158
+meerk40t_svgelements_pr160
+meerk40t_svgelements_pr165
+meerk40t_svgelements_pr166
+meerk40t_svgelements_pr168
+meerk40t_svgelements_pr176
+meerk40t_svgelements_pr183
+meerk40t_svgelements_pr184
+meerk40t_svgelements_pr187
+meerk40t_svgelements_pr189
+meerk40t_svgelements_pr193
+meerk40t_svgelements_pr195
+meerk40t_svgelements_pr198
+meerk40t_svgelements_pr209
+meerk40t_svgelements_pr216
+meerk40t_svgelements_pr218
+meerk40t_svgelements_pr22
+meerk40t_svgelements_pr221
+meerk40t_svgelements_pr229
+meerk40t_svgelements_pr230
+meerk40t_svgelements_pr231
+meerk40t_svgelements_pr233
+meerk40t_svgelements_pr240
+meerk40t_svgelements_pr26
+meerk40t_svgelements_pr28
+meerk40t_svgelements_pr29
+meerk40t_svgelements_pr30
+meerk40t_svgelements_pr42
+meerk40t_svgelements_pr46
+meerk40t_svgelements_pr48
+meerk40t_svgelements_pr61
+meerk40t_svgelements_pr69
+meerk40t_svgelements_pr71
+meerk40t_svgelements_pr88
+meerk40t_svgelements_pr93
+meerk40t_svgelements_pr96
+meerk40t_svgelements_pr98
+megalus_django-google-sso_pr25
+megalus_django-google-sso_pr32
+megalus_django-google-sso_pr53
+megvii-research_megfile_pr350
+megvii-research_megfile_pr352
+megvii-research_megfile_pr353
+megvii-research_megfile_pr359
+megvii-research_megfile_pr361
+megvii-research_megfile_pr367
+megvii-research_megfile_pr370
+megvii-research_megfile_pr371
+megvii-research_megfile_pr377
+megvii-research_megfile_pr378
+megvii-research_megfile_pr379
+megvii-research_megfile_pr381
+megvii-research_megfile_pr383
+megvii-research_megfile_pr400
+megvii-research_megfile_pr406
+megvii-research_megfile_pr407
+megvii-research_megfile_pr416
+megvii-research_megfile_pr420
+megvii-research_megfile_pr423
+megvii-research_megfile_pr426
+megvii-research_megfile_pr432
+megvii-research_megfile_pr442
+megvii-research_megfile_pr444
+megvii-research_megfile_pr446
+megvii-research_megfile_pr447
+megvii-research_megfile_pr449
+megvii-research_megfile_pr451
+megvii-research_megfile_pr453
+megvii-research_megfile_pr458
+megvii-research_megfile_pr464
+megvii-research_megfile_pr466
+megvii-research_megfile_pr471
+megvii-research_megfile_pr472
+megvii-research_megfile_pr474
+megvii-research_megfile_pr475
+megvii-research_megfile_pr491
+megvii-research_megfile_pr501
+megvii-research_megfile_pr504
+megvii-research_megfile_pr507
+megvii-research_megfile_pr509
+megvii-research_megfile_pr516
+megvii-research_megfile_pr519
+megvii-research_megfile_pr522
+megvii-research_megfile_pr523
+megvii-research_megfile_pr531
+megvii-research_megfile_pr536
+megvii-research_megfile_pr538
+megvii-research_megfile_pr539
+megvii-research_megfile_pr543
+megvii-research_megfile_pr544
+megvii-research_megfile_pr548
+megvii-research_megfile_pr552
+megvii-research_megfile_pr558
+mehcode_python-xmlsec_pr100
+mehcode_python-xmlsec_pr132
+mehcode_python-xmlsec_pr148
+mehcode_python-xmlsec_pr212
+mehcode_python-xmlsec_pr291
+mehcode_python-xmlsec_pr293
+mehcode_python-xmlsec_pr303
+mehcode_python-xmlsec_pr304
+mehcode_python-xmlsec_pr306
+mehcode_python-xmlsec_pr313
+mehcode_python-xmlsec_pr353
+mehcode_python-xmlsec_pr354
+mehcode_python-xmlsec_pr67
+mehcode_python-xmlsec_pr68
+mehcode_python-xmlsec_pr69
+meltano_sdk_pr2526
+meltano_sdk_pr2603
+mercedes-benz_odxtools_pr10
+mercedes-benz_odxtools_pr104
+mercedes-benz_odxtools_pr108
+mercedes-benz_odxtools_pr109
+mercedes-benz_odxtools_pr111
+mercedes-benz_odxtools_pr113
+mercedes-benz_odxtools_pr116
+mercedes-benz_odxtools_pr117
+mercedes-benz_odxtools_pr118
+mercedes-benz_odxtools_pr126
+mercedes-benz_odxtools_pr13
+mercedes-benz_odxtools_pr131
+mercedes-benz_odxtools_pr133
+mercedes-benz_odxtools_pr134
+mercedes-benz_odxtools_pr135
+mercedes-benz_odxtools_pr136
+mercedes-benz_odxtools_pr14
+mercedes-benz_odxtools_pr141
+mercedes-benz_odxtools_pr145
+mercedes-benz_odxtools_pr147
+mercedes-benz_odxtools_pr148
+mercedes-benz_odxtools_pr159
+mercedes-benz_odxtools_pr161
+mercedes-benz_odxtools_pr162
+mercedes-benz_odxtools_pr163
+mercedes-benz_odxtools_pr164
+mercedes-benz_odxtools_pr165
+mercedes-benz_odxtools_pr168
+mercedes-benz_odxtools_pr17
+mercedes-benz_odxtools_pr170
+mercedes-benz_odxtools_pr171
+mercedes-benz_odxtools_pr173
+mercedes-benz_odxtools_pr176
+mercedes-benz_odxtools_pr177
+mercedes-benz_odxtools_pr19
+mercedes-benz_odxtools_pr21
+mercedes-benz_odxtools_pr22
+mercedes-benz_odxtools_pr28
+mercedes-benz_odxtools_pr30
+mercedes-benz_odxtools_pr38
+mercedes-benz_odxtools_pr44
+mercedes-benz_odxtools_pr45
+mercedes-benz_odxtools_pr50
+mercedes-benz_odxtools_pr52
+mercedes-benz_odxtools_pr54
+mercedes-benz_odxtools_pr55
+mercedes-benz_odxtools_pr59
+mercedes-benz_odxtools_pr64
+mercedes-benz_odxtools_pr65
+mercedes-benz_odxtools_pr66
+mercedes-benz_odxtools_pr68
+mercedes-benz_odxtools_pr71
+mercedes-benz_odxtools_pr77
+mercedes-benz_odxtools_pr78
+mercedes-benz_odxtools_pr79
+mercedes-benz_odxtools_pr8
+mercedes-benz_odxtools_pr86
+mercedes-benz_odxtools_pr87
+mercedes-benz_odxtools_pr90
+mercedes-benz_odxtools_pr93
+mercedes-benz_odxtools_pr94
+mesonbuild_meson-python_pr110
+mesonbuild_meson-python_pr126
+mesonbuild_meson-python_pr130
+mesonbuild_meson-python_pr134
+mesonbuild_meson-python_pr143
+mesonbuild_meson-python_pr144
+mesonbuild_meson-python_pr145
+mesonbuild_meson-python_pr161
+mesonbuild_meson-python_pr163
+mesonbuild_meson-python_pr167
+mesonbuild_meson-python_pr175
+mesonbuild_meson-python_pr177
+mesonbuild_meson-python_pr185
+mesonbuild_meson-python_pr209
+mesonbuild_meson-python_pr21
+mesonbuild_meson-python_pr214
+mesonbuild_meson-python_pr215
+mesonbuild_meson-python_pr219
+mesonbuild_meson-python_pr22
+mesonbuild_meson-python_pr227
+mesonbuild_meson-python_pr231
+mesonbuild_meson-python_pr241
+mesonbuild_meson-python_pr251
+mesonbuild_meson-python_pr255
+mesonbuild_meson-python_pr288
+mesonbuild_meson-python_pr304
+mesonbuild_meson-python_pr336
+mesonbuild_meson-python_pr345
+mesonbuild_meson-python_pr364
+mesonbuild_meson-python_pr377
+mesonbuild_meson-python_pr407
+mesonbuild_meson-python_pr455
+mesonbuild_meson-python_pr467
+mesonbuild_meson-python_pr472
+mesonbuild_meson-python_pr483
+mesonbuild_meson-python_pr486
+mesonbuild_meson-python_pr489
+mesonbuild_meson-python_pr491
+mesonbuild_meson-python_pr494
+mesonbuild_meson-python_pr520
+mesonbuild_meson-python_pr569
+mesonbuild_meson-python_pr594
+mesonbuild_meson-python_pr613
+mesonbuild_meson-python_pr626
+mesonbuild_meson-python_pr627
+mesonbuild_meson-python_pr631
+mesonbuild_meson-python_pr665
+mesonbuild_meson-python_pr702
+mesonbuild_meson-python_pr71
+mesonbuild_meson-python_pr72
+mesonbuild_meson-python_pr731
+mesonbuild_meson-python_pr745
+mesonbuild_meson-python_pr96
+meteostat_meteostat-python_pr207
+meteostat_meteostat-python_pr51
+meteostat_meteostat-python_pr66
+mewwts_addict_pr102
+mewwts_addict_pr128
+mewwts_addict_pr18
+mewwts_addict_pr30
+mewwts_addict_pr35
+mewwts_addict_pr71
+mewwts_addict_pr76
+mfogel_django-timezone-field_pr123
+mfogel_django-timezone-field_pr137
+mgeier_sphinx-last-updated-by-git_pr23
+mgeier_sphinx-last-updated-by-git_pr25
+mhe_pynrrd_pr125
+mhe_pynrrd_pr128
+mhe_pynrrd_pr165
+mhe_pynrrd_pr32
+mhe_pynrrd_pr35
+mhe_pynrrd_pr38
+mhe_pynrrd_pr40
+mhe_pynrrd_pr47
+mhe_pynrrd_pr54
+mhe_pynrrd_pr57
+mhe_pynrrd_pr59
+mhe_pynrrd_pr65
+mhe_pynrrd_pr68
+mhe_pynrrd_pr69
+mhe_pynrrd_pr74
+mhe_pynrrd_pr77
+mhe_pynrrd_pr79
+mhe_pynrrd_pr80
+mhe_pynrrd_pr85
+mhe_pynrrd_pr90
+mhostetter_galois_pr101
+mhostetter_galois_pr105
+mhostetter_galois_pr108
+mhostetter_galois_pr109
+mhostetter_galois_pr114
+mhostetter_galois_pr115
+mhostetter_galois_pr129
+mhostetter_galois_pr132
+mhostetter_galois_pr63
+mhostetter_galois_pr92
+mhostetter_galois_pr94
+mhostetter_galois_pr99
+microsoft_fabric-cicd_pr108
+microsoft_fabric-cicd_pr109
+microsoft_fabric-cicd_pr119
+microsoft_fabric-cicd_pr139
+microsoft_fabric-cicd_pr161
+microsoft_fabric-cicd_pr181
+microsoft_fabric-cicd_pr188
+microsoft_fabric-cicd_pr195
+microsoft_fabric-cicd_pr196
+microsoft_fabric-cicd_pr197
+microsoft_fabric-cicd_pr208
+microsoft_fabric-cicd_pr210
+microsoft_fabric-cicd_pr219
+microsoft_fabric-cicd_pr225
+microsoft_fabric-cicd_pr243
+microsoft_fabric-cicd_pr247
+microsoft_fabric-cicd_pr256
+microsoft_fabric-cicd_pr258
+microsoft_fabric-cicd_pr262
+microsoft_fabric-cicd_pr268
+microsoft_fabric-cicd_pr275
+microsoft_fabric-cicd_pr280
+microsoft_fabric-cicd_pr296
+microsoft_fabric-cicd_pr308
+microsoft_fabric-cicd_pr312
+microsoft_fabric-cicd_pr316
+microsoft_fabric-cicd_pr353
+microsoft_fabric-cicd_pr386
+microsoft_fabric-cicd_pr394
+microsoft_fabric-cicd_pr395
+microsoft_fabric-cicd_pr401
+microsoft_fabric-cicd_pr413
+microsoft_fabric-cicd_pr424
+microsoft_fabric-cicd_pr426
+microsoft_fabric-cicd_pr430
+microsoft_fabric-cicd_pr435
+microsoft_fabric-cicd_pr443
+microsoft_fabric-cicd_pr451
+microsoft_fabric-cicd_pr465
+microsoft_fabric-cicd_pr478
+microsoft_fabric-cicd_pr483
+microsoft_fabric-cicd_pr500
+microsoft_fabric-cicd_pr505
+microsoft_fabric-cicd_pr510
+microsoft_fabric-cicd_pr521
+microsoft_fabric-cicd_pr527
+microsoft_fabric-cicd_pr530
+microsoft_fabric-cicd_pr532
+microsoft_fabric-cicd_pr546
+microsoft_fabric-cicd_pr550
+microsoft_fabric-cicd_pr570
+microsoft_fabric-cicd_pr571
+microsoft_fabric-cicd_pr578
+microsoft_fabric-cicd_pr589
+microsoft_fabric-cicd_pr603
+microsoft_fabric-cicd_pr613
+microsoft_fabric-cicd_pr621
+microsoft_fabric-cicd_pr632
+microsoft_fabric-cicd_pr93
+microsoft_fabric-cicd_pr97
+microsoft_knack_pr108
+microsoft_knack_pr111
+microsoft_knack_pr115
+microsoft_knack_pr124
+microsoft_knack_pr125
+microsoft_knack_pr145
+microsoft_knack_pr146
+microsoft_knack_pr148
+microsoft_knack_pr153
+microsoft_knack_pr159
+microsoft_knack_pr161
+microsoft_knack_pr167
+microsoft_knack_pr176
+microsoft_knack_pr177
+microsoft_knack_pr181
+microsoft_knack_pr199
+microsoft_knack_pr201
+microsoft_knack_pr209
+microsoft_knack_pr213
+microsoft_knack_pr216
+microsoft_knack_pr217
+microsoft_knack_pr220
+microsoft_knack_pr221
+microsoft_knack_pr223
+microsoft_knack_pr227
+microsoft_knack_pr88
+microsoft_knack_pr96
+microsoft_lsprotocol_pr106
+microsoft_lsprotocol_pr107
+microsoft_lsprotocol_pr118
+microsoft_lsprotocol_pr121
+microsoft_lsprotocol_pr135
+microsoft_lsprotocol_pr146
+microsoft_lsprotocol_pr165
+microsoft_lsprotocol_pr166
+microsoft_lsprotocol_pr185
+microsoft_lsprotocol_pr211
+microsoft_lsprotocol_pr213
+microsoft_lsprotocol_pr219
+microsoft_lsprotocol_pr222
+microsoft_lsprotocol_pr224
+microsoft_lsprotocol_pr226
+microsoft_lsprotocol_pr229
+microsoft_lsprotocol_pr230
+microsoft_lsprotocol_pr239
+microsoft_lsprotocol_pr260
+microsoft_lsprotocol_pr271
+microsoft_lsprotocol_pr273
+microsoft_lsprotocol_pr275
+microsoft_lsprotocol_pr285
+microsoft_lsprotocol_pr286
+microsoft_lsprotocol_pr311
+microsoft_lsprotocol_pr328
+microsoft_lsprotocol_pr359
+microsoft_lsprotocol_pr368
+microsoft_lsprotocol_pr401
+microsoft_lsprotocol_pr415
+microsoft_lsprotocol_pr416
+microsoft_lsprotocol_pr433
+microsoft_lsprotocol_pr59
+microsoft_lsprotocol_pr70
+microsoft_lsprotocol_pr75
+microsoft_lsprotocol_pr87
+microsoft_lsprotocol_pr88
+microsoft_lsprotocol_pr98
+microsoft_sarif-tools_pr15
+microsoft_sarif-tools_pr16
+microsoft_sarif-tools_pr23
+microsoft_sarif-tools_pr24
+microsoft_sarif-tools_pr34
+microsoft_sarif-tools_pr52
+microsoft_sarif-tools_pr59
+microsoft_sarif-tools_pr62
+microsoft_sarif-tools_pr69
+microsoft_sarif-tools_pr70
+microsoft_sarif-tools_pr74
+microsoft_sarif-tools_pr81
+microsoftgraph_msgraph-sdk-python-core_pr626
+microsoftgraph_msgraph-sdk-python-core_pr689
+microsoftgraph_msgraph-sdk-python-core_pr773
+microsoftgraph_msgraph-sdk-python-core_pr804
+microsoftgraph_msgraph-sdk-python-core_pr821
+microsoftgraph_msgraph-sdk-python-core_pr848
+mido_mido_pr117
+mido_mido_pr161
+mido_mido_pr201
+mido_mido_pr202
+mido_mido_pr255
+mido_mido_pr264
+mido_mido_pr281
+mido_mido_pr299
+mido_mido_pr408
+mido_mido_pr449
+mido_mido_pr454
+mido_mido_pr455
+mido_mido_pr465
+mido_mido_pr470
+mido_mido_pr474
+mido_mido_pr565
+mido_mido_pr571
+mido_mido_pr624
+midstar_pycstruct_pr18
+midstar_pycstruct_pr24
+midstar_pycstruct_pr28
+midstar_pycstruct_pr41
+miguelgrinberg_flask-httpauth_pr126
+miguelgrinberg_flask-httpauth_pr74
+miguelgrinberg_flask-migrate_pr523
+miguelgrinberg_python-engineio_pr108
+miguelgrinberg_python-engineio_pr175
+miguelgrinberg_python-engineio_pr286
+miketheman_pytest-socket_pr227
+mill1000_midea-msmart_pr117
+mill1000_midea-msmart_pr132
+mill1000_midea-msmart_pr144
+mill1000_midea-msmart_pr157
+mill1000_midea-msmart_pr163
+mill1000_midea-msmart_pr165
+mill1000_midea-msmart_pr169
+mill1000_midea-msmart_pr172
+mill1000_midea-msmart_pr185
+mill1000_midea-msmart_pr187
+mill1000_midea-msmart_pr188
+mill1000_midea-msmart_pr228
+mill1000_midea-msmart_pr230
+mill1000_midea-msmart_pr240
+mindee_mindee-api-python_pr100
+mindee_mindee-api-python_pr45
+mindee_mindee-api-python_pr48
+mindee_mindee-api-python_pr49
+mindee_mindee-api-python_pr57
+mindee_mindee-api-python_pr61
+mindee_mindee-api-python_pr63
+mindee_mindee-api-python_pr67
+mindee_mindee-api-python_pr69
+mindee_mindee-api-python_pr70
+mindee_mindee-api-python_pr72
+mindee_mindee-api-python_pr88
+mindee_mindee-api-python_pr93
+mindee_mindee-api-python_pr97
+mindee_mindee-api-python_pr98
+mindee_mindee-api-python_pr99
+mirumee_ariadne-codegen_pr106
+mirumee_ariadne-codegen_pr109
+mirumee_ariadne-codegen_pr110
+mirumee_ariadne-codegen_pr112
+mirumee_ariadne-codegen_pr116
+mirumee_ariadne-codegen_pr126
+mirumee_ariadne-codegen_pr128
+mirumee_ariadne-codegen_pr129
+mirumee_ariadne-codegen_pr133
+mirumee_ariadne-codegen_pr143
+mirumee_ariadne-codegen_pr147
+mirumee_ariadne-codegen_pr148
+mirumee_ariadne-codegen_pr154
+mirumee_ariadne-codegen_pr158
+mirumee_ariadne-codegen_pr159
+mirumee_ariadne-codegen_pr164
+mirumee_ariadne-codegen_pr166
+mirumee_ariadne-codegen_pr169
+mirumee_ariadne-codegen_pr188
+mirumee_ariadne-codegen_pr189
+mirumee_ariadne-codegen_pr195
+mirumee_ariadne-codegen_pr196
+mirumee_ariadne-codegen_pr203
+mirumee_ariadne-codegen_pr205
+mirumee_ariadne-codegen_pr206
+mirumee_ariadne-codegen_pr207
+mirumee_ariadne-codegen_pr218
+mirumee_ariadne-codegen_pr221
+mirumee_ariadne-codegen_pr222
+mirumee_ariadne-codegen_pr224
+mirumee_ariadne-codegen_pr227
+mirumee_ariadne-codegen_pr229
+mirumee_ariadne-codegen_pr232
+mirumee_ariadne-codegen_pr242
+mirumee_ariadne-codegen_pr243
+mirumee_ariadne-codegen_pr244
+mirumee_ariadne-codegen_pr245
+mirumee_ariadne-codegen_pr246
+mirumee_ariadne-codegen_pr248
+mirumee_ariadne-codegen_pr255
+mirumee_ariadne-codegen_pr264
+mirumee_ariadne-codegen_pr267
+mirumee_ariadne-codegen_pr278
+mirumee_ariadne-codegen_pr281
+mirumee_ariadne-codegen_pr292
+mirumee_ariadne-codegen_pr304
+mirumee_ariadne-codegen_pr307
+mirumee_ariadne-codegen_pr35
+mirumee_ariadne-codegen_pr357
+mirumee_ariadne-codegen_pr36
+mirumee_ariadne-codegen_pr362
+mirumee_ariadne-codegen_pr363
+mirumee_ariadne-codegen_pr369
+mirumee_ariadne-codegen_pr379
+mirumee_ariadne-codegen_pr38
+mirumee_ariadne-codegen_pr380
+mirumee_ariadne-codegen_pr381
+mirumee_ariadne-codegen_pr39
+mirumee_ariadne-codegen_pr47
+mirumee_ariadne-codegen_pr48
+mirumee_ariadne-codegen_pr50
+mirumee_ariadne-codegen_pr52
+mirumee_ariadne-codegen_pr53
+mirumee_ariadne-codegen_pr54
+mirumee_ariadne-codegen_pr55
+mirumee_ariadne-codegen_pr56
+mirumee_ariadne-codegen_pr58
+mirumee_ariadne-codegen_pr8
+mirumee_google-i18n-address_pr35
+miso-belica_sumy_pr169
+miso-belica_sumy_pr189
+miso-belica_sumy_pr203
+mit-ll-responsible-ai_hydra-zen_pr104
+mit-ll-responsible-ai_hydra-zen_pr110
+mit-ll-responsible-ai_hydra-zen_pr112
+mit-ll-responsible-ai_hydra-zen_pr116
+mit-ll-responsible-ai_hydra-zen_pr118
+mit-ll-responsible-ai_hydra-zen_pr119
+mit-ll-responsible-ai_hydra-zen_pr122
+mit-ll-responsible-ai_hydra-zen_pr125
+mit-ll-responsible-ai_hydra-zen_pr131
+mit-ll-responsible-ai_hydra-zen_pr134
+mit-ll-responsible-ai_hydra-zen_pr156
+mit-ll-responsible-ai_hydra-zen_pr162
+mit-ll-responsible-ai_hydra-zen_pr172
+mit-ll-responsible-ai_hydra-zen_pr177
+mit-ll-responsible-ai_hydra-zen_pr55
+mit-ll-responsible-ai_hydra-zen_pr57
+mit-ll-responsible-ai_hydra-zen_pr60
+mit-ll-responsible-ai_hydra-zen_pr83
+mit-ll-responsible-ai_hydra-zen_pr84
+mit-ll-responsible-ai_hydra-zen_pr87
+mit-ll-responsible-ai_hydra-zen_pr90
+mivek_python-metar-taf-parser_pr17
+mivek_python-metar-taf-parser_pr18
+mivek_python-metar-taf-parser_pr49
+mivek_python-metar-taf-parser_pr5
+mivek_python-metar-taf-parser_pr51
+mivek_python-metar-taf-parser_pr57
+mivek_python-metar-taf-parser_pr7
+mivek_python-metar-taf-parser_pr73
+miyakogi_m2r_pr16
+mkdocs_mkdocs-click_pr25
+mkdocs_mkdocs-click_pr29
+mkdocs_mkdocs-click_pr36
+mkdocs_mkdocs-click_pr45
+mkdocs_mkdocs-click_pr52
+mkdocs_mkdocs-click_pr60
+mkdocs_mkdocs-click_pr79
+mkdocs_mkdocs-click_pr82
+mkdocs_mkdocs-click_pr84
+mkdocs_mkdocs-click_pr90
+mkorpela_overrides_pr39
+mkorpela_overrides_pr50
+mkorpela_overrides_pr57
+mkorpela_overrides_pr59
+mkorpela_overrides_pr69
+mkorpela_overrides_pr70
+mkorpela_overrides_pr76
+mkorpela_overrides_pr81
+mkorpela_overrides_pr82
+mkorpela_pabot_pr317
+mkorpela_pabot_pr413
+mkorpela_pabot_pr496
+mkorpela_pabot_pr520
+mkorpela_pabot_pr607
+mkorpela_pabot_pr651
+ml31415_numpy-groupies_pr59
+ml31415_numpy-groupies_pr61
+mlenzen_collections-extended_pr143
+mlenzen_collections-extended_pr149
+mlenzen_collections-extended_pr152
+mlenzen_collections-extended_pr170
+mmaitre314_picklescan_pr10
+mmaitre314_picklescan_pr12
+mmaitre314_picklescan_pr19
+mmaitre314_picklescan_pr21
+mmaitre314_picklescan_pr3
+mmaitre314_picklescan_pr40
+mmaitre314_picklescan_pr9
+mmore500_alifedata-phyloinformatics-convert_pr24
+mmore500_alifedata-phyloinformatics-convert_pr3
+mmore500_alifedata-phyloinformatics-convert_pr5
+mmore500_alifedata-phyloinformatics-convert_pr6
+moble_quaternion_pr150
+moble_quaternion_pr157
+moble_quaternion_pr179
+moble_quaternion_pr182
+moble_quaternion_pr197
+moble_quaternion_pr223
+moble_quaternion_pr224
+mondeja_mkdocs-include-markdown-plugin_pr107
+mondeja_mkdocs-include-markdown-plugin_pr112
+mondeja_mkdocs-include-markdown-plugin_pr115
+mondeja_mkdocs-include-markdown-plugin_pr2
+mondeja_mkdocs-include-markdown-plugin_pr46
+mondeja_mkdocs-include-markdown-plugin_pr48
+mondeja_mkdocs-include-markdown-plugin_pr51
+mondeja_mkdocs-include-markdown-plugin_pr56
+mondeja_mkdocs-include-markdown-plugin_pr72
+mondeja_mkdocs-include-markdown-plugin_pr79
+mondeja_mkdocs-include-markdown-plugin_pr81
+mondeja_mkdocs-include-markdown-plugin_pr89
+mondeja_mkdocs-include-markdown-plugin_pr91
+mondeja_mkdocs-include-markdown-plugin_pr93
+mondeja_mkdocs-include-markdown-plugin_pr95
+mongodb_mongo-python-driver_pr1243
+mongodb_mongo-python-driver_pr1246
+mongodb_mongo-python-driver_pr1252
+mongodb_mongo-python-driver_pr1261
+mongodb_mongo-python-driver_pr1263
+mongodb_mongo-python-driver_pr1270
+mongodb_mongo-python-driver_pr1273
+mongodb_mongo-python-driver_pr1275
+mongodb_mongo-python-driver_pr1277
+mongodb_mongo-python-driver_pr1285
+mongodb_mongo-python-driver_pr1287
+mongodb_mongo-python-driver_pr1295
+mongodb_mongo-python-driver_pr1296
+mongodb_mongo-python-driver_pr1313
+mongodb_mongo-python-driver_pr1315
+mongodb_mongo-python-driver_pr1320
+mongodb_mongo-python-driver_pr1324
+mongodb_mongo-python-driver_pr1328
+mongodb_mongo-python-driver_pr1337
+mongodb_mongo-python-driver_pr1338
+mongodb_mongo-python-driver_pr1339
+mongodb_mongo-python-driver_pr1346
+mongodb_mongo-python-driver_pr1351
+mongodb_mongo-python-driver_pr1368
+mongodb_mongo-python-driver_pr1370
+mongodb_mongo-python-driver_pr1371
+mongodb_mongo-python-driver_pr1389
+mongodb_mongo-python-driver_pr1395
+mongodb_mongo-python-driver_pr1402
+mongodb_mongo-python-driver_pr1409
+mongodb_mongo-python-driver_pr1418
+mongodb_mongo-python-driver_pr1444
+mongodb_mongo-python-driver_pr1473
+mongodb_mongo-python-driver_pr1481
+mongodb_mongo-python-driver_pr1491
+mongodb_mongo-python-driver_pr1495
+mongodb_mongo-python-driver_pr1510
+mongodb_mongo-python-driver_pr1512
+mongodb_mongo-python-driver_pr1526
+mongodb_mongo-python-driver_pr1537
+mongodb_mongo-python-driver_pr1544
+mongodb_mongo-python-driver_pr1556
+mongodb_mongo-python-driver_pr1573
+mongodb_mongo-python-driver_pr1579
+mongodb_mongo-python-driver_pr1584
+mongodb_mongo-python-driver_pr1600
+mongodb_mongo-python-driver_pr1616
+mongodb_mongo-python-driver_pr1644
+mongodb_mongo-python-driver_pr1645
+mongodb_mongo-python-driver_pr1646
+mongodb_mongo-python-driver_pr1659
+mongodb_mongo-python-driver_pr658
+mongodb_mongo-python-driver_pr659
+mongodb_mongo-python-driver_pr660
+mongodb_mongo-python-driver_pr663
+mongodb_mongo-python-driver_pr664
+mongodb_mongo-python-driver_pr676
+mongodb_mongo-python-driver_pr679
+mongodb_mongo-python-driver_pr683
+mongodb_mongo-python-driver_pr688
+mongodb_mongo-python-driver_pr694
+mongodb_mongo-python-driver_pr695
+mongodb_mongo-python-driver_pr697
+mongodb_mongo-python-driver_pr698
+mongodb_mongo-python-driver_pr699
+mongodb_mongo-python-driver_pr706
+mongodb_mongo-python-driver_pr711
+mongodb_mongo-python-driver_pr718
+mongodb_mongo-python-driver_pr721
+mongodb_mongo-python-driver_pr722
+mongodb_mongo-python-driver_pr723
+mongodb_mongo-python-driver_pr724
+mongodb_mongo-python-driver_pr725
+mongodb_mongo-python-driver_pr728
+mongodb_mongo-python-driver_pr729
+mongodb_mongo-python-driver_pr730
+mongodb_mongo-python-driver_pr731
+mongodb_mongo-python-driver_pr738
+mongodb_mongo-python-driver_pr739
+mongodb_mongo-python-driver_pr742
+mongodb_mongo-python-driver_pr747
+mongodb_mongo-python-driver_pr749
+mongodb_mongo-python-driver_pr752
+mongodb_mongo-python-driver_pr754
+mongodb_mongo-python-driver_pr755
+mongodb_mongo-python-driver_pr760
+mongodb_mongo-python-driver_pr761
+mongodb_mongo-python-driver_pr767
+mongodb_pymongo-auth-aws_pr10
+mongodb_pymongo-auth-aws_pr7
+mongodb_pymongo-auth-aws_pr9
+more-itertools_more-itertools_pr1000
+more-itertools_more-itertools_pr1002
+more-itertools_more-itertools_pr1004
+more-itertools_more-itertools_pr1018
+more-itertools_more-itertools_pr1028
+more-itertools_more-itertools_pr103
+more-itertools_more-itertools_pr1040
+more-itertools_more-itertools_pr1048
+more-itertools_more-itertools_pr105
+more-itertools_more-itertools_pr1056
+more-itertools_more-itertools_pr1058
+more-itertools_more-itertools_pr1068
+more-itertools_more-itertools_pr107
+more-itertools_more-itertools_pr1077
+more-itertools_more-itertools_pr1078
+more-itertools_more-itertools_pr108
+more-itertools_more-itertools_pr1081
+more-itertools_more-itertools_pr1082
+more-itertools_more-itertools_pr1085
+more-itertools_more-itertools_pr1095
+more-itertools_more-itertools_pr1097
+more-itertools_more-itertools_pr1099
+more-itertools_more-itertools_pr110
+more-itertools_more-itertools_pr1101
+more-itertools_more-itertools_pr1107
+more-itertools_more-itertools_pr113
+more-itertools_more-itertools_pr118
+more-itertools_more-itertools_pr127
+more-itertools_more-itertools_pr128
+more-itertools_more-itertools_pr137
+more-itertools_more-itertools_pr140
+more-itertools_more-itertools_pr145
+more-itertools_more-itertools_pr146
+more-itertools_more-itertools_pr148
+more-itertools_more-itertools_pr152
+more-itertools_more-itertools_pr165
+more-itertools_more-itertools_pr167
+more-itertools_more-itertools_pr169
+more-itertools_more-itertools_pr170
+more-itertools_more-itertools_pr171
+more-itertools_more-itertools_pr172
+more-itertools_more-itertools_pr173
+more-itertools_more-itertools_pr174
+more-itertools_more-itertools_pr176
+more-itertools_more-itertools_pr177
+more-itertools_more-itertools_pr178
+more-itertools_more-itertools_pr184
+more-itertools_more-itertools_pr186
+more-itertools_more-itertools_pr187
+more-itertools_more-itertools_pr209
+more-itertools_more-itertools_pr212
+more-itertools_more-itertools_pr213
+more-itertools_more-itertools_pr221
+more-itertools_more-itertools_pr229
+more-itertools_more-itertools_pr240
+more-itertools_more-itertools_pr247
+more-itertools_more-itertools_pr249
+more-itertools_more-itertools_pr258
+more-itertools_more-itertools_pr274
+more-itertools_more-itertools_pr276
+more-itertools_more-itertools_pr278
+more-itertools_more-itertools_pr279
+more-itertools_more-itertools_pr284
+more-itertools_more-itertools_pr285
+more-itertools_more-itertools_pr290
+more-itertools_more-itertools_pr292
+more-itertools_more-itertools_pr294
+more-itertools_more-itertools_pr298
+more-itertools_more-itertools_pr301
+more-itertools_more-itertools_pr305
+more-itertools_more-itertools_pr306
+more-itertools_more-itertools_pr309
+more-itertools_more-itertools_pr310
+more-itertools_more-itertools_pr313
+more-itertools_more-itertools_pr325
+more-itertools_more-itertools_pr326
+more-itertools_more-itertools_pr346
+more-itertools_more-itertools_pr356
+more-itertools_more-itertools_pr362
+more-itertools_more-itertools_pr363
+more-itertools_more-itertools_pr365
+more-itertools_more-itertools_pr368
+more-itertools_more-itertools_pr373
+more-itertools_more-itertools_pr374
+more-itertools_more-itertools_pr382
+more-itertools_more-itertools_pr391
+more-itertools_more-itertools_pr392
+more-itertools_more-itertools_pr407
+more-itertools_more-itertools_pr411
+more-itertools_more-itertools_pr412
+more-itertools_more-itertools_pr415
+more-itertools_more-itertools_pr422
+more-itertools_more-itertools_pr423
+more-itertools_more-itertools_pr429
+more-itertools_more-itertools_pr432
+more-itertools_more-itertools_pr434
+more-itertools_more-itertools_pr436
+more-itertools_more-itertools_pr440
+more-itertools_more-itertools_pr444
+more-itertools_more-itertools_pr454
+more-itertools_more-itertools_pr455
+more-itertools_more-itertools_pr463
+more-itertools_more-itertools_pr471
+more-itertools_more-itertools_pr473
+more-itertools_more-itertools_pr475
+more-itertools_more-itertools_pr484
+more-itertools_more-itertools_pr486
+more-itertools_more-itertools_pr490
+more-itertools_more-itertools_pr496
+more-itertools_more-itertools_pr497
+more-itertools_more-itertools_pr498
+more-itertools_more-itertools_pr503
+more-itertools_more-itertools_pr509
+more-itertools_more-itertools_pr511
+more-itertools_more-itertools_pr531
+more-itertools_more-itertools_pr533
+more-itertools_more-itertools_pr537
+more-itertools_more-itertools_pr539
+more-itertools_more-itertools_pr542
+more-itertools_more-itertools_pr545
+more-itertools_more-itertools_pr557
+more-itertools_more-itertools_pr560
+more-itertools_more-itertools_pr565
+more-itertools_more-itertools_pr566
+more-itertools_more-itertools_pr570
+more-itertools_more-itertools_pr572
+more-itertools_more-itertools_pr573
+more-itertools_more-itertools_pr587
+more-itertools_more-itertools_pr599
+more-itertools_more-itertools_pr606
+more-itertools_more-itertools_pr627
+more-itertools_more-itertools_pr63
+more-itertools_more-itertools_pr630
+more-itertools_more-itertools_pr641
+more-itertools_more-itertools_pr642
+more-itertools_more-itertools_pr643
+more-itertools_more-itertools_pr645
+more-itertools_more-itertools_pr646
+more-itertools_more-itertools_pr647
+more-itertools_more-itertools_pr653
+more-itertools_more-itertools_pr659
+more-itertools_more-itertools_pr674
+more-itertools_more-itertools_pr676
+more-itertools_more-itertools_pr686
+more-itertools_more-itertools_pr689
+more-itertools_more-itertools_pr694
+more-itertools_more-itertools_pr70
+more-itertools_more-itertools_pr703
+more-itertools_more-itertools_pr704
+more-itertools_more-itertools_pr706
+more-itertools_more-itertools_pr708
+more-itertools_more-itertools_pr71
+more-itertools_more-itertools_pr714
+more-itertools_more-itertools_pr723
+more-itertools_more-itertools_pr734
+more-itertools_more-itertools_pr736
+more-itertools_more-itertools_pr74
+more-itertools_more-itertools_pr742
+more-itertools_more-itertools_pr743
+more-itertools_more-itertools_pr753
+more-itertools_more-itertools_pr755
+more-itertools_more-itertools_pr756
+more-itertools_more-itertools_pr757
+more-itertools_more-itertools_pr76
+more-itertools_more-itertools_pr765
+more-itertools_more-itertools_pr777
+more-itertools_more-itertools_pr78
+more-itertools_more-itertools_pr783
+more-itertools_more-itertools_pr784
+more-itertools_more-itertools_pr785
+more-itertools_more-itertools_pr79
+more-itertools_more-itertools_pr791
+more-itertools_more-itertools_pr793
+more-itertools_more-itertools_pr796
+more-itertools_more-itertools_pr81
+more-itertools_more-itertools_pr825
+more-itertools_more-itertools_pr828
+more-itertools_more-itertools_pr829
+more-itertools_more-itertools_pr834
+more-itertools_more-itertools_pr841
+more-itertools_more-itertools_pr845
+more-itertools_more-itertools_pr847
+more-itertools_more-itertools_pr850
+more-itertools_more-itertools_pr855
+more-itertools_more-itertools_pr873
+more-itertools_more-itertools_pr874
+more-itertools_more-itertools_pr875
+more-itertools_more-itertools_pr877
+more-itertools_more-itertools_pr892
+more-itertools_more-itertools_pr903
+more-itertools_more-itertools_pr913
+more-itertools_more-itertools_pr917
+more-itertools_more-itertools_pr926
+more-itertools_more-itertools_pr93
+more-itertools_more-itertools_pr938
+more-itertools_more-itertools_pr94
+more-itertools_more-itertools_pr940
+more-itertools_more-itertools_pr95
+more-itertools_more-itertools_pr951
+more-itertools_more-itertools_pr952
+more-itertools_more-itertools_pr954
+more-itertools_more-itertools_pr960
+more-itertools_more-itertools_pr961
+more-itertools_more-itertools_pr963
+more-itertools_more-itertools_pr964
+more-itertools_more-itertools_pr97
+more-itertools_more-itertools_pr98
+more-itertools_more-itertools_pr985
+more-itertools_more-itertools_pr988
+more-itertools_more-itertools_pr999
+mozilla_django-csp_pr213
+mozilla_django-csp_pr237
+mozilla_django-csp_pr251
+mozilla_django-csp_pr257
+mozilla_django-csp_pr258
+msiemens_tinydb_pr11
+msiemens_tinydb_pr114
+msiemens_tinydb_pr12
+msiemens_tinydb_pr139
+msiemens_tinydb_pr145
+msiemens_tinydb_pr15
+msiemens_tinydb_pr16
+msiemens_tinydb_pr184
+msiemens_tinydb_pr187
+msiemens_tinydb_pr188
+msiemens_tinydb_pr19
+msiemens_tinydb_pr202
+msiemens_tinydb_pr216
+msiemens_tinydb_pr229
+msiemens_tinydb_pr231
+msiemens_tinydb_pr238
+msiemens_tinydb_pr256
+msiemens_tinydb_pr279
+msiemens_tinydb_pr33
+msiemens_tinydb_pr38
+msiemens_tinydb_pr39
+msiemens_tinydb_pr395
+msiemens_tinydb_pr41
+msiemens_tinydb_pr424
+msiemens_tinydb_pr43
+msiemens_tinydb_pr46
+msiemens_tinydb_pr504
+msiemens_tinydb_pr573
+msiemens_tinydb_pr61
+mtkennerly_dunamai_pr38
+mtkennerly_dunamai_pr44
+mtth_hdfs_pr192
+mtth_hdfs_pr210
+multani_structlog-gcp_pr10
+multani_structlog-gcp_pr14
+multani_structlog-gcp_pr38
+multani_structlog-gcp_pr42
+multani_structlog-gcp_pr5
+multani_structlog-gcp_pr98
+mvcisback_py-aiger_pr102
+mwclient_mwclient_pr108
+mwclient_mwclient_pr143
+mwclient_mwclient_pr163
+mwclient_mwclient_pr173
+mwclient_mwclient_pr232
+mwclient_mwclient_pr242
+mwclient_mwclient_pr264
+mwclient_mwclient_pr286
+mwclient_mwclient_pr288
+mwclient_mwclient_pr291
+mwclient_mwclient_pr293
+mwclient_mwclient_pr308
+mwclient_mwclient_pr316
+mwclient_mwclient_pr327
+mwclient_mwclient_pr335
+mwclient_mwclient_pr339
+mwclient_mwclient_pr343
+mwclient_mwclient_pr345
+mwclient_mwclient_pr352
+mwclient_mwclient_pr356
+mwclient_mwclient_pr365
+mwclient_mwclient_pr370
+myusuf3_delorean_pr2
+myusuf3_delorean_pr62
+myusuf3_delorean_pr69
+namespace-ee_django-datadog-logger_pr40
+napari_napari-plugin-engine_pr2
+napari_napari-plugin-engine_pr3
+napari_napari-plugin-engine_pr32
+napari_napari-plugin-engine_pr6
+nayaverdier_dyntastic_pr5
+ncclient_ncclient_pr200
+ncclient_ncclient_pr242
+ncclient_ncclient_pr259
+ncclient_ncclient_pr283
+ncclient_ncclient_pr296
+ncclient_ncclient_pr299
+ncclient_ncclient_pr301
+ncclient_ncclient_pr309
+ncclient_ncclient_pr314
+ncclient_ncclient_pr319
+ncclient_ncclient_pr324
+ncclient_ncclient_pr328
+ncclient_ncclient_pr330
+ncclient_ncclient_pr350
+ncclient_ncclient_pr354
+ncclient_ncclient_pr358
+ncclient_ncclient_pr363
+ncclient_ncclient_pr392
+ncclient_ncclient_pr397
+ncclient_ncclient_pr404
+ncclient_ncclient_pr405
+ncclient_ncclient_pr407
+ncclient_ncclient_pr409
+ncclient_ncclient_pr412
+ncclient_ncclient_pr418
+ncclient_ncclient_pr420
+ncclient_ncclient_pr430
+ncclient_ncclient_pr434
+ncclient_ncclient_pr435
+ncclient_ncclient_pr446
+ncclient_ncclient_pr460
+ncclient_ncclient_pr485
+ncclient_ncclient_pr491
+ncclient_ncclient_pr510
+ncclient_ncclient_pr517
+ncclient_ncclient_pr528
+ncclient_ncclient_pr555
+ncclient_ncclient_pr556
+ncclient_ncclient_pr568
+ncclient_ncclient_pr570
+ncclient_ncclient_pr574
+ncclient_ncclient_pr576
+ncclient_ncclient_pr591
+ncclient_ncclient_pr600
+ncclient_ncclient_pr605
+ncclient_ncclient_pr607
+ncclient_ncclient_pr609
+ncclient_ncclient_pr628
+ncclient_ncclient_pr639
+ncclient_ncclient_pr645
+ncclient_ncclient_pr69
+nedbat_cog_pr4
+neovim_python-client_pr384
+neovim_python-client_pr399
+neovim_python-client_pr405
+neovim_python-client_pr413
+neovim_python-client_pr414
+neovim_python-client_pr469
+neovim_python-client_pr506
+neovim_python-client_pr534
+neovim_python-client_pr535
+neovim_python-client_pr540
+neovim_python-client_pr546
+nephila_giturlparse_pr110
+nerdocs_pydifact_pr14
+nerdocs_pydifact_pr33
+nerdocs_pydifact_pr35
+nerdocs_pydifact_pr48
+nerdocs_pydifact_pr51
+nerdocs_pydifact_pr60
+nerdocs_pydifact_pr61
+nerdocs_pydifact_pr77
+nerdocs_pydifact_pr80
+newville_pyshortcuts_pr18
+nhairs_python-json-logger_pr26
+nhairs_python-json-logger_pr39
+nhairs_python-json-logger_pr52
+nicklambourne_slackblocks_pr108
+nicklambourne_slackblocks_pr113
+nicklambourne_slackblocks_pr32
+nicklambourne_slackblocks_pr38
+nicklambourne_slackblocks_pr41
+nicklambourne_slackblocks_pr43
+nicklambourne_slackblocks_pr49
+nicklambourne_slackblocks_pr69
+nickstenning_honcho_pr149
+nicodv_kmodes_pr194
+nipreps_acres_pr13
+nipy_nitime_pr199
+nipy_nitime_pr200
+nipy_nitransforms_pr17
+nipy_nitransforms_pr24
+nipy_nitransforms_pr27
+no-plagiarism_pymorphy3_pr27
+noahmorrison_chevron_pr94
+nomonosound_numpy-minmax_pr21
+nomonosound_numpy-minmax_pr23
+nschloe_matplotx_pr11
+nschloe_matplotx_pr22
+nschloe_pytest-codeblocks_pr1
+nschloe_pytest-codeblocks_pr2
+nschloe_pytest-codeblocks_pr20
+nschloe_pytest-codeblocks_pr25
+nschloe_pytest-codeblocks_pr40
+nschloe_pytest-codeblocks_pr9
+nuclio_nuclio-jupyter_pr23
+nuclio_nuclio-jupyter_pr25
+nuclio_nuclio-jupyter_pr28
+nuclio_nuclio-jupyter_pr29
+nuclio_nuclio-jupyter_pr37
+nuclio_nuclio-jupyter_pr40
+nuclio_nuclio-jupyter_pr42
+nuclio_nuclio-jupyter_pr44
+numpy_numpy-financial_pr22
+numpy_numpy-financial_pr43
+numpy_numpy-financial_pr47
+numpy_numpy-financial_pr49
+numpy_numpy-financial_pr54
+numpy_numpy-financial_pr62
+numpy_numpy-financial_pr81
+nylas_nylas-python_pr100
+nylas_nylas-python_pr101
+nylas_nylas-python_pr102
+nylas_nylas-python_pr103
+nylas_nylas-python_pr106
+nylas_nylas-python_pr111
+nylas_nylas-python_pr112
+nylas_nylas-python_pr114
+nylas_nylas-python_pr123
+nylas_nylas-python_pr124
+nylas_nylas-python_pr131
+nylas_nylas-python_pr134
+nylas_nylas-python_pr137
+nylas_nylas-python_pr141
+nylas_nylas-python_pr146
+nylas_nylas-python_pr147
+nylas_nylas-python_pr152
+nylas_nylas-python_pr153
+nylas_nylas-python_pr154
+nylas_nylas-python_pr155
+nylas_nylas-python_pr156
+nylas_nylas-python_pr157
+nylas_nylas-python_pr158
+nylas_nylas-python_pr162
+nylas_nylas-python_pr163
+nylas_nylas-python_pr166
+nylas_nylas-python_pr167
+nylas_nylas-python_pr168
+nylas_nylas-python_pr171
+nylas_nylas-python_pr173
+nylas_nylas-python_pr177
+nylas_nylas-python_pr180
+nylas_nylas-python_pr183
+nylas_nylas-python_pr186
+nylas_nylas-python_pr190
+nylas_nylas-python_pr195
+nylas_nylas-python_pr197
+nylas_nylas-python_pr201
+nylas_nylas-python_pr203
+nylas_nylas-python_pr207
+nylas_nylas-python_pr208
+nylas_nylas-python_pr213
+nylas_nylas-python_pr215
+nylas_nylas-python_pr217
+nylas_nylas-python_pr225
+nylas_nylas-python_pr228
+nylas_nylas-python_pr229
+nylas_nylas-python_pr233
+nylas_nylas-python_pr236
+nylas_nylas-python_pr243
+nylas_nylas-python_pr342
+nylas_nylas-python_pr348
+nylas_nylas-python_pr350
+nylas_nylas-python_pr352
+nylas_nylas-python_pr357
+nylas_nylas-python_pr360
+nylas_nylas-python_pr361
+nylas_nylas-python_pr362
+nylas_nylas-python_pr363
+nylas_nylas-python_pr371
+nylas_nylas-python_pr372
+nylas_nylas-python_pr383
+nylas_nylas-python_pr385
+nylas_nylas-python_pr386
+nylas_nylas-python_pr397
+nylas_nylas-python_pr399
+nylas_nylas-python_pr404
+nylas_nylas-python_pr407
+nylas_nylas-python_pr411
+nylas_nylas-python_pr414
+nylas_nylas-python_pr419
+nylas_nylas-python_pr422
+nylas_nylas-python_pr423
+nylas_nylas-python_pr425
+nylas_nylas-python_pr426
+nylas_nylas-python_pr432
+nylas_nylas-python_pr434
+nylas_nylas-python_pr436
+nylas_nylas-python_pr439
+nylas_nylas-python_pr440
+nylas_nylas-python_pr444
+nylas_nylas-python_pr46
+nylas_nylas-python_pr52
+nylas_nylas-python_pr55
+nylas_nylas-python_pr80
+nylas_nylas-python_pr96
+nylas_nylas-python_pr97
+nylas_nylas-python_pr98
+nylas_nylas-python_pr99
+oasis-open_cti-pattern-validator_pr10
+oasis-open_cti-pattern-validator_pr11
+oasis-open_cti-pattern-validator_pr12
+oasis-open_cti-pattern-validator_pr33
+oasis-open_cti-pattern-validator_pr64
+oasis-open_cti-pattern-validator_pr65
+oasis-open_cti-pattern-validator_pr75
+oasis-open_cti-pattern-validator_pr81
+oasis-open_cti-python-stix2_pr400
+oasis-open_cti-python-stix2_pr401
+oasis-open_cti-python-stix2_pr404
+oasis-open_cti-python-stix2_pr407
+oasis-open_cti-python-stix2_pr431
+oasis-open_cti-python-stix2_pr436
+oasis-open_cti-python-stix2_pr438
+oasis-open_cti-python-stix2_pr439
+oasis-open_cti-python-stix2_pr445
+oasis-open_cti-python-stix2_pr449
+oasis-open_cti-python-stix2_pr454
+oasis-open_cti-python-stix2_pr456
+oasis-open_cti-python-stix2_pr467
+oasis-open_cti-python-stix2_pr470
+oasis-open_cti-python-stix2_pr481
+oasis-open_cti-python-stix2_pr482
+oasis-open_cti-python-stix2_pr483
+oasis-open_cti-python-stix2_pr491
+oasis-open_cti-python-stix2_pr513
+oasis-open_cti-python-stix2_pr521
+oasis-open_cti-python-stix2_pr605
+oasis-open_cti-python-stix2_pr607
+oasis-open_cti-taxii-client_pr11
+oasis-open_cti-taxii-client_pr18
+oasis-open_cti-taxii-client_pr44
+oasis-open_cti-taxii-client_pr47
+oasis-open_cti-taxii-client_pr54
+oasis-open_cti-taxii-client_pr56
+oasis-open_cti-taxii-client_pr79
+oasis-open_cti-taxii-client_pr85
+oasis-open_cti-taxii-client_pr94
+oauthlib_oauthlib_pr103
+oauthlib_oauthlib_pr112
+oauthlib_oauthlib_pr124
+oauthlib_oauthlib_pr129
+oauthlib_oauthlib_pr143
+oauthlib_oauthlib_pr166
+oauthlib_oauthlib_pr170
+oauthlib_oauthlib_pr189
+oauthlib_oauthlib_pr199
+oauthlib_oauthlib_pr201
+oauthlib_oauthlib_pr206
+oauthlib_oauthlib_pr208
+oauthlib_oauthlib_pr214
+oauthlib_oauthlib_pr216
+oauthlib_oauthlib_pr224
+oauthlib_oauthlib_pr231
+oauthlib_oauthlib_pr239
+oauthlib_oauthlib_pr314
+oauthlib_oauthlib_pr316
+oauthlib_oauthlib_pr323
+oauthlib_oauthlib_pr336
+oauthlib_oauthlib_pr339
+oauthlib_oauthlib_pr351
+oauthlib_oauthlib_pr354
+oauthlib_oauthlib_pr355
+oauthlib_oauthlib_pr358
+oauthlib_oauthlib_pr362
+oauthlib_oauthlib_pr381
+oauthlib_oauthlib_pr396
+oauthlib_oauthlib_pr416
+oauthlib_oauthlib_pr417
+oauthlib_oauthlib_pr453
+oauthlib_oauthlib_pr455
+oauthlib_oauthlib_pr456
+oauthlib_oauthlib_pr458
+oauthlib_oauthlib_pr462
+oauthlib_oauthlib_pr463
+oauthlib_oauthlib_pr464
+oauthlib_oauthlib_pr465
+oauthlib_oauthlib_pr466
+oauthlib_oauthlib_pr481
+oauthlib_oauthlib_pr484
+oauthlib_oauthlib_pr488
+oauthlib_oauthlib_pr508
+oauthlib_oauthlib_pr533
+oauthlib_oauthlib_pr542
+oauthlib_oauthlib_pr546
+oauthlib_oauthlib_pr593
+oauthlib_oauthlib_pr60
+oauthlib_oauthlib_pr614
+oauthlib_oauthlib_pr617
+oauthlib_oauthlib_pr623
+oauthlib_oauthlib_pr625
+oauthlib_oauthlib_pr630
+oauthlib_oauthlib_pr64
+oauthlib_oauthlib_pr645
+oauthlib_oauthlib_pr65
+oauthlib_oauthlib_pr653
+oauthlib_oauthlib_pr656
+oauthlib_oauthlib_pr658
+oauthlib_oauthlib_pr66
+oauthlib_oauthlib_pr660
+oauthlib_oauthlib_pr663
+oauthlib_oauthlib_pr668
+oauthlib_oauthlib_pr669
+oauthlib_oauthlib_pr671
+oauthlib_oauthlib_pr674
+oauthlib_oauthlib_pr675
+oauthlib_oauthlib_pr677
+oauthlib_oauthlib_pr680
+oauthlib_oauthlib_pr69
+oauthlib_oauthlib_pr691
+oauthlib_oauthlib_pr703
+oauthlib_oauthlib_pr716
+oauthlib_oauthlib_pr720
+oauthlib_oauthlib_pr729
+oauthlib_oauthlib_pr731
+oauthlib_oauthlib_pr747
+oauthlib_oauthlib_pr752
+oauthlib_oauthlib_pr753
+oauthlib_oauthlib_pr760
+oauthlib_oauthlib_pr771
+oauthlib_oauthlib_pr783
+oauthlib_oauthlib_pr786
+oauthlib_oauthlib_pr787
+oauthlib_oauthlib_pr790
+oauthlib_oauthlib_pr791
+oauthlib_oauthlib_pr795
+oauthlib_oauthlib_pr806
+oauthlib_oauthlib_pr818
+oauthlib_oauthlib_pr828
+oauthlib_oauthlib_pr838
+oauthlib_oauthlib_pr853
+oauthlib_oauthlib_pr855
+oauthlib_oauthlib_pr87
+oauthlib_oauthlib_pr93
+octoenergy_tentaclio_pr109
+octoenergy_tentaclio_pr110
+octoenergy_tentaclio_pr111
+octoenergy_tentaclio_pr115
+octoenergy_tentaclio_pr121
+octoenergy_tentaclio_pr124
+octoenergy_tentaclio_pr126
+octoenergy_tentaclio_pr130
+octoenergy_tentaclio_pr132
+octoenergy_tentaclio_pr138
+octoenergy_tentaclio_pr141
+octoenergy_tentaclio_pr153
+octoenergy_tentaclio_pr164
+octoenergy_tentaclio_pr188
+octoenergy_tentaclio_pr196
+octoenergy_tentaclio_pr201
+octoenergy_tentaclio_pr203
+octoenergy_tentaclio_pr213
+octoenergy_tentaclio_pr215
+octoenergy_tentaclio_pr226
+ofek_coincurve_pr156
+ofek_coincurve_pr160
+ofek_coincurve_pr161
+ofek_coincurve_pr162
+ofek_coincurve_pr182
+ofek_coincurve_pr188
+ofek_hatch-vcs_pr24
+ofek_hatch-vcs_pr53
+ofek_hatch-vcs_pr6
+oittaa_uuid6-python_pr16
+oittaa_uuid6-python_pr211
+okken_pytest-check_pr10
+okken_pytest-check_pr66
+okken_pytest-check_pr69
+okken_pytest-check_pr77
+okken_pytest-check_pr81
+okken_pytest-check_pr86
+okta_okta-jwt-verifier-python_pr12
+okta_okta-jwt-verifier-python_pr25
+okta_okta-jwt-verifier-python_pr32
+okta_okta-jwt-verifier-python_pr8
+okta_okta-jwt-verifier-python_pr9
+olofk_fusesoc_pr364
+olofk_fusesoc_pr431
+olofk_fusesoc_pr457
+olofk_fusesoc_pr566
+olofk_fusesoc_pr568
+olofk_fusesoc_pr583
+olofk_fusesoc_pr636
+olofk_fusesoc_pr640
+olofk_fusesoc_pr645
+olofk_fusesoc_pr647
+olofk_fusesoc_pr668
+olofk_fusesoc_pr704
+olofk_fusesoc_pr706
+olofk_fusesoc_pr711
+olofk_fusesoc_pr720
+olofk_fusesoc_pr722
+olofk_fusesoc_pr724
+olofk_fusesoc_pr726
+olofk_fusesoc_pr737
+olzhasar_pytest-watcher_pr12
+olzhasar_pytest-watcher_pr14
+olzhasar_pytest-watcher_pr17
+olzhasar_pytest-watcher_pr9
+omni-us_jsonargparse_pr145
+omni-us_jsonargparse_pr162
+omni-us_jsonargparse_pr164
+omni-us_jsonargparse_pr177
+omni-us_jsonargparse_pr182
+omni-us_jsonargparse_pr186
+omni-us_jsonargparse_pr190
+omni-us_jsonargparse_pr191
+omni-us_jsonargparse_pr194
+omni-us_jsonargparse_pr197
+omni-us_jsonargparse_pr198
+omni-us_jsonargparse_pr199
+omni-us_jsonargparse_pr202
+omni-us_jsonargparse_pr210
+omni-us_jsonargparse_pr211
+omni-us_jsonargparse_pr214
+omni-us_jsonargparse_pr215
+omni-us_jsonargparse_pr216
+omni-us_jsonargparse_pr218
+omni-us_jsonargparse_pr220
+omni-us_jsonargparse_pr222
+omni-us_jsonargparse_pr223
+omni-us_jsonargparse_pr225
+omni-us_jsonargparse_pr233
+omni-us_jsonargparse_pr239
+omni-us_jsonargparse_pr240
+omni-us_jsonargparse_pr248
+omni-us_jsonargparse_pr253
+omni-us_jsonargparse_pr264
+omni-us_jsonargparse_pr266
+omni-us_jsonargparse_pr267
+omni-us_jsonargparse_pr268
+omni-us_jsonargparse_pr270
+omni-us_jsonargparse_pr272
+omni-us_jsonargparse_pr273
+omni-us_jsonargparse_pr274
+omni-us_jsonargparse_pr282
+omni-us_jsonargparse_pr285
+omni-us_jsonargparse_pr288
+omni-us_jsonargparse_pr291
+omni-us_jsonargparse_pr296
+omni-us_jsonargparse_pr302
+omni-us_jsonargparse_pr310
+omni-us_jsonargparse_pr314
+omni-us_jsonargparse_pr318
+omni-us_jsonargparse_pr323
+omni-us_jsonargparse_pr326
+omni-us_jsonargparse_pr340
+omni-us_jsonargparse_pr344
+omni-us_jsonargparse_pr346
+omni-us_jsonargparse_pr351
+omni-us_jsonargparse_pr363
+omni-us_jsonargparse_pr364
+omni-us_jsonargparse_pr369
+omni-us_jsonargparse_pr370
+omni-us_jsonargparse_pr381
+omni-us_jsonargparse_pr386
+omni-us_jsonargparse_pr390
+omni-us_jsonargparse_pr399
+omni-us_jsonargparse_pr401
+omni-us_jsonargparse_pr402
+omni-us_jsonargparse_pr403
+omni-us_jsonargparse_pr405
+omni-us_jsonargparse_pr406
+omni-us_jsonargparse_pr412
+omni-us_jsonargparse_pr416
+omni-us_jsonargparse_pr422
+omni-us_jsonargparse_pr432
+omni-us_jsonargparse_pr434
+omni-us_jsonargparse_pr435
+omni-us_jsonargparse_pr444
+omni-us_jsonargparse_pr445
+omni-us_jsonargparse_pr458
+omni-us_jsonargparse_pr468
+omni-us_jsonargparse_pr475
+omni-us_jsonargparse_pr476
+omni-us_jsonargparse_pr480
+omni-us_jsonargparse_pr485
+omni-us_jsonargparse_pr486
+omni-us_jsonargparse_pr502
+omni-us_jsonargparse_pr506
+omni-us_jsonargparse_pr508
+omni-us_jsonargparse_pr513
+omni-us_jsonargparse_pr518
+omni-us_jsonargparse_pr522
+omni-us_jsonargparse_pr527
+omni-us_jsonargparse_pr530
+omni-us_jsonargparse_pr535
+omni-us_jsonargparse_pr548
+omni-us_jsonargparse_pr549
+omni-us_jsonargparse_pr551
+omni-us_jsonargparse_pr560
+omni-us_jsonargparse_pr564
+omni-us_jsonargparse_pr568
+omni-us_jsonargparse_pr599
+omni-us_jsonargparse_pr601
+omni-us_jsonargparse_pr608
+omni-us_jsonargparse_pr625
+omni-us_jsonargparse_pr628
+omni-us_jsonargparse_pr630
+omni-us_jsonargparse_pr633
+omni-us_jsonargparse_pr637
+omni-us_jsonargparse_pr638
+omni-us_jsonargparse_pr643
+omni-us_jsonargparse_pr644
+omni-us_jsonargparse_pr650
+omni-us_jsonargparse_pr652
+omni-us_jsonargparse_pr660
+omni-us_jsonargparse_pr661
+omni-us_jsonargparse_pr662
+omni-us_jsonargparse_pr667
+omni-us_jsonargparse_pr668
+omni-us_jsonargparse_pr681
+omni-us_jsonargparse_pr694
+omni-us_jsonargparse_pr697
+omni-us_jsonargparse_pr698
+omni-us_jsonargparse_pr707
+omni-us_jsonargparse_pr709
+omni-us_jsonargparse_pr711
+omni-us_jsonargparse_pr717
+omni-us_jsonargparse_pr718
+omni-us_jsonargparse_pr720
+omni-us_jsonargparse_pr724
+omni-us_jsonargparse_pr736
+omni-us_jsonargparse_pr743
+omni-us_jsonargparse_pr746
+omni-us_jsonargparse_pr754
+omni-us_jsonargparse_pr756
+omni-us_jsonargparse_pr760
+omni-us_jsonargparse_pr763
+omni-us_jsonargparse_pr765
+omni-us_jsonargparse_pr770
+omni-us_jsonargparse_pr771
+omni-us_jsonargparse_pr775
+omni-us_jsonargparse_pr781
+omni-us_jsonargparse_pr783
+omni-us_jsonargparse_pr787
+omni-us_jsonargparse_pr795
+omni-us_jsonargparse_pr796
+omni-us_jsonargparse_pr810
+omni-us_jsonargparse_pr814
+omni-us_jsonargparse_pr815
+omnilib_sphinx-mdinclude_pr68
+onnx_tensorflow-onnx_pr1000
+onnx_tensorflow-onnx_pr1020
+onnx_tensorflow-onnx_pr1042
+onnx_tensorflow-onnx_pr1054
+onnx_tensorflow-onnx_pr1074
+onnx_tensorflow-onnx_pr1077
+onnx_tensorflow-onnx_pr1090
+onnx_tensorflow-onnx_pr1102
+onnx_tensorflow-onnx_pr1103
+onnx_tensorflow-onnx_pr1107
+onnx_tensorflow-onnx_pr1124
+onnx_tensorflow-onnx_pr1146
+onnx_tensorflow-onnx_pr1151
+onnx_tensorflow-onnx_pr1161
+onnx_tensorflow-onnx_pr1168
+onnx_tensorflow-onnx_pr1174
+onnx_tensorflow-onnx_pr1176
+onnx_tensorflow-onnx_pr1183
+onnx_tensorflow-onnx_pr1199
+onnx_tensorflow-onnx_pr1202
+onnx_tensorflow-onnx_pr1206
+onnx_tensorflow-onnx_pr1218
+onnx_tensorflow-onnx_pr1238
+onnx_tensorflow-onnx_pr1262
+onnx_tensorflow-onnx_pr1263
+onnx_tensorflow-onnx_pr1288
+onnx_tensorflow-onnx_pr1289
+onnx_tensorflow-onnx_pr1292
+onnx_tensorflow-onnx_pr1297
+onnx_tensorflow-onnx_pr1299
+onnx_tensorflow-onnx_pr1313
+onnx_tensorflow-onnx_pr1314
+onnx_tensorflow-onnx_pr1315
+onnx_tensorflow-onnx_pr1316
+onnx_tensorflow-onnx_pr1318
+onnx_tensorflow-onnx_pr1319
+onnx_tensorflow-onnx_pr1321
+onnx_tensorflow-onnx_pr1330
+onnx_tensorflow-onnx_pr1332
+onnx_tensorflow-onnx_pr1333
+onnx_tensorflow-onnx_pr1335
+onnx_tensorflow-onnx_pr1338
+onnx_tensorflow-onnx_pr1339
+onnx_tensorflow-onnx_pr1340
+onnx_tensorflow-onnx_pr1342
+onnx_tensorflow-onnx_pr1343
+onnx_tensorflow-onnx_pr1346
+onnx_tensorflow-onnx_pr1347
+onnx_tensorflow-onnx_pr1350
+onnx_tensorflow-onnx_pr1351
+onnx_tensorflow-onnx_pr1354
+onnx_tensorflow-onnx_pr1355
+onnx_tensorflow-onnx_pr1363
+onnx_tensorflow-onnx_pr1365
+onnx_tensorflow-onnx_pr1366
+onnx_tensorflow-onnx_pr1369
+onnx_tensorflow-onnx_pr1370
+onnx_tensorflow-onnx_pr1372
+onnx_tensorflow-onnx_pr1373
+onnx_tensorflow-onnx_pr1374
+onnx_tensorflow-onnx_pr1380
+onnx_tensorflow-onnx_pr1383
+onnx_tensorflow-onnx_pr1384
+onnx_tensorflow-onnx_pr1401
+onnx_tensorflow-onnx_pr1406
+onnx_tensorflow-onnx_pr1409
+onnx_tensorflow-onnx_pr1411
+onnx_tensorflow-onnx_pr1414
+onnx_tensorflow-onnx_pr1419
+onnx_tensorflow-onnx_pr832
+onnx_tensorflow-onnx_pr839
+onnx_tensorflow-onnx_pr850
+onnx_tensorflow-onnx_pr867
+onnx_tensorflow-onnx_pr871
+onnx_tensorflow-onnx_pr879
+onnx_tensorflow-onnx_pr880
+onnx_tensorflow-onnx_pr882
+onnx_tensorflow-onnx_pr949
+onnx_tensorflow-onnx_pr968
+onnx_tensorflow-onnx_pr974
+open-feature_python-sdk_pr103
+open-feature_python-sdk_pr134
+open-feature_python-sdk_pr136
+open-feature_python-sdk_pr139
+open-feature_python-sdk_pr141
+open-feature_python-sdk_pr142
+open-feature_python-sdk_pr172
+open-feature_python-sdk_pr213
+open-feature_python-sdk_pr215
+open-feature_python-sdk_pr216
+open-feature_python-sdk_pr233
+open-feature_python-sdk_pr257
+open-feature_python-sdk_pr26
+open-feature_python-sdk_pr261
+open-feature_python-sdk_pr27
+open-feature_python-sdk_pr278
+open-feature_python-sdk_pr285
+open-feature_python-sdk_pr291
+open-feature_python-sdk_pr306
+open-feature_python-sdk_pr309
+open-feature_python-sdk_pr314
+open-feature_python-sdk_pr324
+open-feature_python-sdk_pr329
+open-feature_python-sdk_pr38
+open-feature_python-sdk_pr389
+open-feature_python-sdk_pr395
+open-feature_python-sdk_pr415
+open-feature_python-sdk_pr423
+open-feature_python-sdk_pr425
+open-feature_python-sdk_pr43
+open-feature_python-sdk_pr44
+open-feature_python-sdk_pr442
+open-feature_python-sdk_pr446
+open-feature_python-sdk_pr451
+open-feature_python-sdk_pr474
+open-feature_python-sdk_pr5
+open-feature_python-sdk_pr504
+open-feature_python-sdk_pr523
+open-feature_python-sdk_pr533
+open-feature_python-sdk_pr535
+open-feature_python-sdk_pr537
+open-feature_python-sdk_pr538
+open-feature_python-sdk_pr6
+open-feature_python-sdk_pr64
+open-feature_python-sdk_pr66
+open-meteo_python-requests_pr95
+opencobra_optlang_pr259
+opencobra_optlang_pr269
+openedx_api-doc-tools_pr28
+openedx_api-doc-tools_pr53
+openedx_codejail_pr105
+openedx_codejail_pr106
+openedx_codejail_pr141
+openedx_codejail_pr151
+openedx_codejail_pr167
+openedx_codejail_pr201
+openedx_codejail_pr207
+openedx_codejail_pr99
+openedx_django-user-tasks_pr148
+openedx_django-user-tasks_pr151
+openedx_django-user-tasks_pr304
+openedx_django-user-tasks_pr323
+openedx_edx-celeryutils_pr101
+openedx_edx-celeryutils_pr45
+openedx_edx-django-utils_pr10
+openedx_edx-django-utils_pr11
+openedx_edx-django-utils_pr118
+openedx_edx-django-utils_pr12
+openedx_edx-django-utils_pr137
+openedx_edx-django-utils_pr146
+openedx_edx-django-utils_pr156
+openedx_edx-django-utils_pr165
+openedx_edx-django-utils_pr17
+openedx_edx-django-utils_pr188
+openedx_edx-django-utils_pr200
+openedx_edx-django-utils_pr209
+openedx_edx-django-utils_pr210
+openedx_edx-django-utils_pr215
+openedx_edx-django-utils_pr242
+openedx_edx-django-utils_pr246
+openedx_edx-django-utils_pr26
+openedx_edx-django-utils_pr27
+openedx_edx-django-utils_pr28
+openedx_edx-django-utils_pr289
+openedx_edx-django-utils_pr30
+openedx_edx-django-utils_pr313
+openedx_edx-django-utils_pr327
+openedx_edx-django-utils_pr330
+openedx_edx-django-utils_pr357
+openedx_edx-django-utils_pr397
+openedx_edx-django-utils_pr415
+openedx_edx-django-utils_pr416
+openedx_edx-django-utils_pr418
+openedx_edx-django-utils_pr44
+openedx_edx-django-utils_pr45
+openedx_edx-django-utils_pr451
+openedx_edx-django-utils_pr457
+openedx_edx-django-utils_pr464
+openedx_edx-django-utils_pr467
+openedx_edx-django-utils_pr48
+openedx_edx-django-utils_pr485
+openedx_edx-django-utils_pr496
+openedx_edx-django-utils_pr527
+openedx_edx-django-utils_pr53
+openedx_edx-django-utils_pr58
+openedx_edx-django-utils_pr64
+openedx_edx-django-utils_pr65
+openedx_edx-django-utils_pr68
+openedx_edx-django-utils_pr70
+openedx_edx-django-utils_pr73
+openedx_edx-django-utils_pr9
+openedx_edx-drf-extensions_pr254
+openedx_edx-drf-extensions_pr268
+openedx_edx-drf-extensions_pr270
+openedx_edx-drf-extensions_pr275
+openedx_edx-drf-extensions_pr287
+openedx_edx-drf-extensions_pr311
+openedx_edx-drf-extensions_pr317
+openedx_edx-drf-extensions_pr324
+openedx_edx-drf-extensions_pr331
+openedx_edx-drf-extensions_pr354
+openedx_edx-drf-extensions_pr388
+openedx_edx-drf-extensions_pr392
+openedx_edx-drf-extensions_pr404
+openedx_edx-drf-extensions_pr406
+openedx_edx-drf-extensions_pr419
+openedx_edx-drf-extensions_pr422
+openedx_edx-drf-extensions_pr425
+openedx_edx-drf-extensions_pr433
+openedx_edx-drf-extensions_pr442
+openedx_edx-lint_pr41
+openedx_edx-lint_pr44
+openedx_edx-rest-api-client_pr30
+openedx_edx-rest-api-client_pr32
+openedx_edx-rest-api-client_pr35
+openedx_edx-rest-api-client_pr37
+openedx_edx-rest-api-client_pr38
+openedx_edx-rest-api-client_pr40
+openedx_openedx-events_pr104
+openedx_openedx-events_pr129
+openedx_openedx-events_pr131
+openedx_openedx-events_pr132
+openedx_openedx-events_pr152
+openedx_openedx-events_pr154
+openedx_openedx-events_pr168
+openedx_openedx-events_pr175
+openedx_openedx-events_pr179
+openedx_openedx-events_pr18
+openedx_openedx-events_pr181
+openedx_openedx-events_pr187
+openedx_openedx-events_pr189
+openedx_openedx-events_pr212
+openedx_openedx-events_pr219
+openedx_openedx-events_pr221
+openedx_openedx-events_pr229
+openedx_openedx-events_pr23
+openedx_openedx-events_pr230
+openedx_openedx-events_pr256
+openedx_openedx-events_pr26
+openedx_openedx-events_pr273
+openedx_openedx-events_pr287
+openedx_openedx-events_pr312
+openedx_openedx-events_pr318
+openedx_openedx-events_pr341
+openedx_openedx-events_pr37
+openedx_openedx-events_pr386
+openedx_openedx-events_pr394
+openedx_openedx-events_pr404
+openedx_openedx-events_pr41
+openedx_openedx-events_pr45
+openedx_openedx-events_pr455
+openedx_openedx-events_pr47
+openedx_openedx-events_pr478
+openedx_openedx-events_pr479
+openedx_openedx-events_pr51
+openedx_openedx-events_pr7
+openedx_openedx-events_pr81
+openedx_openedx-events_pr83
+openedx_openedx-events_pr84
+openedx_openedx-events_pr85
+openedx_openedx-events_pr95
+openedx_super-csv_pr100
+openedx_super-csv_pr107
+openedx_super-csv_pr216
+openeemeter_eeweather_pr10
+openeemeter_eeweather_pr12
+openeemeter_eeweather_pr20
+openeemeter_eeweather_pr24
+openeemeter_eeweather_pr26
+openeemeter_eeweather_pr3
+openeemeter_eeweather_pr30
+openeemeter_eeweather_pr32
+openeemeter_eeweather_pr38
+openeemeter_eeweather_pr39
+openeemeter_eeweather_pr42
+openeemeter_eeweather_pr44
+openeemeter_eeweather_pr50
+openeemeter_eeweather_pr65
+openeemeter_eeweather_pr7
+openeemeter_eeweather_pr8
+openeemeter_eeweather_pr89
+openqasm_oqpy_pr103
+openqasm_oqpy_pr18
+openqasm_oqpy_pr20
+openqasm_oqpy_pr24
+openqasm_oqpy_pr26
+openqasm_oqpy_pr28
+openqasm_oqpy_pr31
+openqasm_oqpy_pr34
+openqasm_oqpy_pr35
+openqasm_oqpy_pr38
+openqasm_oqpy_pr43
+openqasm_oqpy_pr44
+openqasm_oqpy_pr47
+openqasm_oqpy_pr48
+openqasm_oqpy_pr51
+openqasm_oqpy_pr53
+openqasm_oqpy_pr54
+openqasm_oqpy_pr58
+openqasm_oqpy_pr60
+openqasm_oqpy_pr64
+openqasm_oqpy_pr66
+openqasm_oqpy_pr68
+openqasm_oqpy_pr72
+openqasm_oqpy_pr73
+openqasm_oqpy_pr75
+openqasm_oqpy_pr77
+openqasm_oqpy_pr83
+openqasm_oqpy_pr86
+openqasm_oqpy_pr90
+openqasm_oqpy_pr93
+openqasm_oqpy_pr95
+openqasm_oqpy_pr99
+opensanctions_rigour_pr10
+opensanctions_rigour_pr113
+opensanctions_rigour_pr13
+opensanctions_rigour_pr137
+opensanctions_rigour_pr14
+opensanctions_rigour_pr145
+opensanctions_rigour_pr148
+opensanctions_rigour_pr149
+opensanctions_rigour_pr23
+opensanctions_rigour_pr64
+opensanctions_rigour_pr65
+opensanctions_rigour_pr68
+opensanctions_rigour_pr70
+opensanctions_rigour_pr76
+opensanctions_rigour_pr79
+openshift_openshift-client-python_pr113
+openshift_openshift-client-python_pr133
+openshift_openshift-client-python_pr161
+openshift_openshift-client-python_pr165
+openshift_openshift-client-python_pr58
+openshift_openshift-client-python_pr64
+openshift_openshift-client-python_pr83
+opentracing_basictracer-python_pr37
+opentracing_basictracer-python_pr43
+openwisp_django-swappable-models_pr33
+openwisp_django-swappable-models_pr57
+optimizely_python-sdk_pr102
+optimizely_python-sdk_pr104
+optimizely_python-sdk_pr107
+optimizely_python-sdk_pr111
+optimizely_python-sdk_pr113
+optimizely_python-sdk_pr119
+optimizely_python-sdk_pr123
+optimizely_python-sdk_pr128
+optimizely_python-sdk_pr136
+optimizely_python-sdk_pr140
+optimizely_python-sdk_pr141
+optimizely_python-sdk_pr144
+optimizely_python-sdk_pr149
+optimizely_python-sdk_pr150
+optimizely_python-sdk_pr151
+optimizely_python-sdk_pr153
+optimizely_python-sdk_pr155
+optimizely_python-sdk_pr156
+optimizely_python-sdk_pr167
+optimizely_python-sdk_pr169
+optimizely_python-sdk_pr170
+optimizely_python-sdk_pr171
+optimizely_python-sdk_pr174
+optimizely_python-sdk_pr176
+optimizely_python-sdk_pr180
+optimizely_python-sdk_pr182
+optimizely_python-sdk_pr184
+optimizely_python-sdk_pr191
+optimizely_python-sdk_pr194
+optimizely_python-sdk_pr20
+optimizely_python-sdk_pr205
+optimizely_python-sdk_pr211
+optimizely_python-sdk_pr213
+optimizely_python-sdk_pr214
+optimizely_python-sdk_pr217
+optimizely_python-sdk_pr218
+optimizely_python-sdk_pr228
+optimizely_python-sdk_pr234
+optimizely_python-sdk_pr235
+optimizely_python-sdk_pr267
+optimizely_python-sdk_pr268
+optimizely_python-sdk_pr271
+optimizely_python-sdk_pr275
+optimizely_python-sdk_pr279
+optimizely_python-sdk_pr282
+optimizely_python-sdk_pr285
+optimizely_python-sdk_pr287
+optimizely_python-sdk_pr293
+optimizely_python-sdk_pr3
+optimizely_python-sdk_pr300
+optimizely_python-sdk_pr302
+optimizely_python-sdk_pr303
+optimizely_python-sdk_pr322
+optimizely_python-sdk_pr325
+optimizely_python-sdk_pr338
+optimizely_python-sdk_pr339
+optimizely_python-sdk_pr342
+optimizely_python-sdk_pr347
+optimizely_python-sdk_pr351
+optimizely_python-sdk_pr353
+optimizely_python-sdk_pr356
+optimizely_python-sdk_pr361
+optimizely_python-sdk_pr367
+optimizely_python-sdk_pr378
+optimizely_python-sdk_pr384
+optimizely_python-sdk_pr385
+optimizely_python-sdk_pr389
+optimizely_python-sdk_pr393
+optimizely_python-sdk_pr396
+optimizely_python-sdk_pr398
+optimizely_python-sdk_pr399
+optimizely_python-sdk_pr401
+optimizely_python-sdk_pr405
+optimizely_python-sdk_pr406
+optimizely_python-sdk_pr408
+optimizely_python-sdk_pr409
+optimizely_python-sdk_pr410
+optimizely_python-sdk_pr411
+optimizely_python-sdk_pr412
+optimizely_python-sdk_pr413
+optimizely_python-sdk_pr414
+optimizely_python-sdk_pr416
+optimizely_python-sdk_pr418
+optimizely_python-sdk_pr419
+optimizely_python-sdk_pr423
+optimizely_python-sdk_pr424
+optimizely_python-sdk_pr428
+optimizely_python-sdk_pr430
+optimizely_python-sdk_pr433
+optimizely_python-sdk_pr440
+optimizely_python-sdk_pr443
+optimizely_python-sdk_pr445
+optimizely_python-sdk_pr448
+optimizely_python-sdk_pr454
+optimizely_python-sdk_pr459
+optimizely_python-sdk_pr46
+optimizely_python-sdk_pr55
+optimizely_python-sdk_pr57
+optimizely_python-sdk_pr58
+optimizely_python-sdk_pr61
+optimizely_python-sdk_pr68
+optimizely_python-sdk_pr70
+optimizely_python-sdk_pr71
+optimizely_python-sdk_pr73
+optimizely_python-sdk_pr75
+optimizely_python-sdk_pr77
+optimizely_python-sdk_pr80
+optimizely_python-sdk_pr81
+optimizely_python-sdk_pr85
+optimizely_python-sdk_pr86
+optimizely_python-sdk_pr87
+optimizely_python-sdk_pr88
+optimizely_python-sdk_pr89
+optimizely_python-sdk_pr92
+oras-project_oras-py_pr109
+oras-project_oras-py_pr131
+oras-project_oras-py_pr146
+oras-project_oras-py_pr150
+oras-project_oras-py_pr153
+oras-project_oras-py_pr161
+oras-project_oras-py_pr166
+oras-project_oras-py_pr176
+oras-project_oras-py_pr183
+oras-project_oras-py_pr192
+oras-project_oras-py_pr195
+oras-project_oras-py_pr206
+orsinium-labs_mypy-baseline_pr1
+orsinium-labs_mypy-baseline_pr20
+orsinium-labs_mypy-baseline_pr7
+orsinium_textdistance_pr71
+orsinium_textdistance_pr84
+orsinium_textdistance_pr89
+orsinium_textdistance_pr90
+osantana_prettyconf_pr25
+osantana_prettyconf_pr28
+osantana_prettyconf_pr29
+osantana_prettyconf_pr3
+osantana_prettyconf_pr30
+osantana_prettyconf_pr43
+ouhammmourachid_mermaid-py_pr105
+ouhammmourachid_mermaid-py_pr163
+ouhammmourachid_mermaid-py_pr26
+ouhammmourachid_mermaid-py_pr39
+oxan_djangorestframework-dataclasses_pr20
+oxan_djangorestframework-dataclasses_pr36
+oxan_djangorestframework-dataclasses_pr45
+oxan_djangorestframework-dataclasses_pr50
+oxan_djangorestframework-dataclasses_pr66
+oxan_djangorestframework-dataclasses_pr69
+oxan_djangorestframework-dataclasses_pr80
+oxan_djangorestframework-dataclasses_pr83
+oxan_djangorestframework-dataclasses_pr84
+oxigraph_oxrdflib_pr14
+oxigraph_oxrdflib_pr43
+oxigraph_oxrdflib_pr61
+p1c2u_jsonschema-path_pr172
+p1c2u_jsonschema-path_pr39
+p1c2u_jsonschema-path_pr58
+p1c2u_jsonschema-path_pr72
+p1c2u_jsonschema-spec_pr39
+p1c2u_jsonschema-spec_pr6
+p1c2u_jsonschema-spec_pr74
+p1c2u_pathable_pr10
+p1c2u_pathable_pr13
+p1c2u_pathable_pr40
+p1c2u_pathable_pr43
+p1c2u_pathable_pr6
+p1c2u_pathable_pr8
+p2p-ld_numpydantic_pr11
+p2p-ld_numpydantic_pr12
+p2p-ld_numpydantic_pr14
+p2p-ld_numpydantic_pr15
+p2p-ld_numpydantic_pr16
+p2p-ld_numpydantic_pr24
+p2p-ld_numpydantic_pr40
+p2p-ld_numpydantic_pr43
+p2p-ld_numpydantic_pr47
+p2p-ld_numpydantic_pr6
+p2p-ld_numpydantic_pr8
+pahaz_sshtunnel_pr106
+pahaz_sshtunnel_pr112
+pahaz_sshtunnel_pr123
+pahaz_sshtunnel_pr149
+pahaz_sshtunnel_pr205
+pahaz_sshtunnel_pr209
+pahaz_sshtunnel_pr214
+pahaz_sshtunnel_pr216
+pahaz_sshtunnel_pr247
+pahaz_sshtunnel_pr75
+pahaz_sshtunnel_pr83
+pahaz_sshtunnel_pr88
+pallets-eco_blinker_pr141
+pallets-eco_blinker_pr145
+pallets-eco_blinker_pr150
+pallets-eco_blinker_pr76
+pallets-eco_blinker_pr83
+pallets-eco_blinker_pr84
+pallets-eco_blinker_pr94
+pallets-eco_flask-admin_pr1009
+pallets-eco_flask-admin_pr1010
+pallets-eco_flask-admin_pr1013
+pallets-eco_flask-admin_pr1017
+pallets-eco_flask-admin_pr1023
+pallets-eco_flask-admin_pr1038
+pallets-eco_flask-admin_pr1039
+pallets-eco_flask-admin_pr1046
+pallets-eco_flask-admin_pr1052
+pallets-eco_flask-admin_pr1053
+pallets-eco_flask-admin_pr1054
+pallets-eco_flask-admin_pr1069
+pallets-eco_flask-admin_pr1077
+pallets-eco_flask-admin_pr1080
+pallets-eco_flask-admin_pr1087
+pallets-eco_flask-admin_pr1099
+pallets-eco_flask-admin_pr1114
+pallets-eco_flask-admin_pr1137
+pallets-eco_flask-admin_pr1151
+pallets-eco_flask-admin_pr1154
+pallets-eco_flask-admin_pr1155
+pallets-eco_flask-admin_pr1160
+pallets-eco_flask-admin_pr1164
+pallets-eco_flask-admin_pr1177
+pallets-eco_flask-admin_pr1183
+pallets-eco_flask-admin_pr1186
+pallets-eco_flask-admin_pr1191
+pallets-eco_flask-admin_pr1194
+pallets-eco_flask-admin_pr1203
+pallets-eco_flask-admin_pr1209
+pallets-eco_flask-admin_pr1213
+pallets-eco_flask-admin_pr1215
+pallets-eco_flask-admin_pr1231
+pallets-eco_flask-admin_pr1236
+pallets-eco_flask-admin_pr1238
+pallets-eco_flask-admin_pr1242
+pallets-eco_flask-admin_pr1249
+pallets-eco_flask-admin_pr1255
+pallets-eco_flask-admin_pr1265
+pallets-eco_flask-admin_pr1266
+pallets-eco_flask-admin_pr1267
+pallets-eco_flask-admin_pr1288
+pallets-eco_flask-admin_pr1296
+pallets-eco_flask-admin_pr1309
+pallets-eco_flask-admin_pr1316
+pallets-eco_flask-admin_pr1320
+pallets-eco_flask-admin_pr1333
+pallets-eco_flask-admin_pr1334
+pallets-eco_flask-admin_pr1340
+pallets-eco_flask-admin_pr1346
+pallets-eco_flask-admin_pr1348
+pallets-eco_flask-admin_pr1350
+pallets-eco_flask-admin_pr1352
+pallets-eco_flask-admin_pr1361
+pallets-eco_flask-admin_pr1362
+pallets-eco_flask-admin_pr1379
+pallets-eco_flask-admin_pr1400
+pallets-eco_flask-admin_pr1409
+pallets-eco_flask-admin_pr1411
+pallets-eco_flask-admin_pr1415
+pallets-eco_flask-admin_pr1416
+pallets-eco_flask-admin_pr1429
+pallets-eco_flask-admin_pr1501
+pallets-eco_flask-admin_pr1510
+pallets-eco_flask-admin_pr815
+pallets-eco_flask-admin_pr819
+pallets-eco_flask-admin_pr824
+pallets-eco_flask-admin_pr831
+pallets-eco_flask-admin_pr832
+pallets-eco_flask-admin_pr833
+pallets-eco_flask-admin_pr843
+pallets-eco_flask-admin_pr860
+pallets-eco_flask-admin_pr862
+pallets-eco_flask-admin_pr865
+pallets-eco_flask-admin_pr866
+pallets-eco_flask-admin_pr879
+pallets-eco_flask-admin_pr891
+pallets-eco_flask-admin_pr900
+pallets-eco_flask-admin_pr901
+pallets-eco_flask-admin_pr902
+pallets-eco_flask-admin_pr919
+pallets-eco_flask-admin_pr933
+pallets-eco_flask-admin_pr942
+pallets-eco_flask-admin_pr950
+pallets-eco_flask-admin_pr952
+pallets-eco_flask-admin_pr962
+pallets-eco_flask-admin_pr963
+pallets-eco_flask-admin_pr994
+pallets-eco_flask-admin_pr996
+pallets-eco_flask-alembic_pr26
+pallets-eco_flask-alembic_pr29
+pallets-eco_flask-classful_pr160
+pallets-eco_flask-debugtoolbar_pr118
+pallets-eco_flask-debugtoolbar_pr218
+pallets-eco_flask-debugtoolbar_pr233
+pallets-eco_flask-debugtoolbar_pr242
+pallets-eco_flask-debugtoolbar_pr243
+pallets-eco_flask-debugtoolbar_pr250
+pallets-eco_flask-debugtoolbar_pr255
+pallets-eco_flask-debugtoolbar_pr274
+pallets-eco_flask-debugtoolbar_pr290
+pallets-eco_flask-debugtoolbar_pr86
+pallets-eco_flask-mail_pr219
+pallets-eco_flask-mail_pr221
+pallets-eco_flask-pydantic_pr44
+pallets-eco_flask-sqlalchemy_pr467
+pallets-eco_flask-sqlalchemy_pr931
+pallets-eco_flask-sqlalchemy_pr943
+pallets-eco_wtforms_pr389
+pallets-eco_wtforms_pr395
+pallets-eco_wtforms_pr400
+pallets-eco_wtforms_pr403
+pallets-eco_wtforms_pr407
+pallets-eco_wtforms_pr409
+pallets-eco_wtforms_pr410
+pallets-eco_wtforms_pr413
+pallets-eco_wtforms_pr429
+pallets-eco_wtforms_pr451
+pallets-eco_wtforms_pr463
+pallets-eco_wtforms_pr467
+pallets-eco_wtforms_pr475
+pallets-eco_wtforms_pr493
+pallets-eco_wtforms_pr524
+pallets-eco_wtforms_pr537
+pallets-eco_wtforms_pr548
+pallets-eco_wtforms_pr568
+pallets-eco_wtforms_pr573
+pallets-eco_wtforms_pr592
+pallets-eco_wtforms_pr596
+pallets-eco_wtforms_pr598
+pallets-eco_wtforms_pr601
+pallets-eco_wtforms_pr605
+pallets-eco_wtforms_pr608
+pallets-eco_wtforms_pr614
+pallets-eco_wtforms_pr615
+pallets-eco_wtforms_pr642
+pallets-eco_wtforms_pr667
+pallets-eco_wtforms_pr675
+pallets-eco_wtforms_pr688
+pallets-eco_wtforms_pr694
+pallets-eco_wtforms_pr703
+pallets-eco_wtforms_pr710
+pallets-eco_wtforms_pr729
+pallets-eco_wtforms_pr739
+pallets-eco_wtforms_pr741
+pallets-eco_wtforms_pr761
+pallets-eco_wtforms_pr765
+pallets-eco_wtforms_pr807
+pallets-eco_wtforms_pr808
+pallets-eco_wtforms_pr809
+pallets-eco_wtforms_pr810
+pallets-eco_wtforms_pr816
+pallets-eco_wtforms_pr858
+pallets-eco_wtforms_pr862
+pallets-eco_wtforms_pr880
+pallets_click_pr1000
+pallets_click_pr1002
+pallets_click_pr1005
+pallets_click_pr1008
+pallets_click_pr1014
+pallets_click_pr1050
+pallets_click_pr1061
+pallets_click_pr1091
+pallets_click_pr1098
+pallets_click_pr1099
+pallets_click_pr1105
+pallets_click_pr1108
+pallets_click_pr1115
+pallets_click_pr1172
+pallets_click_pr1191
+pallets_click_pr1273
+pallets_click_pr1295
+pallets_click_pr1312
+pallets_click_pr1332
+pallets_click_pr1348
+pallets_click_pr1354
+pallets_click_pr1355
+pallets_click_pr1402
+pallets_click_pr1405
+pallets_click_pr1429
+pallets_click_pr1455
+pallets_click_pr1492
+pallets_click_pr1497
+pallets_click_pr1517
+pallets_click_pr1535
+pallets_click_pr1551
+pallets_click_pr1566
+pallets_click_pr1582
+pallets_click_pr1586
+pallets_click_pr1587
+pallets_click_pr1594
+pallets_click_pr1604
+pallets_click_pr1606
+pallets_click_pr1609
+pallets_click_pr1614
+pallets_click_pr1615
+pallets_click_pr1617
+pallets_click_pr1618
+pallets_click_pr1621
+pallets_click_pr1622
+pallets_click_pr1623
+pallets_click_pr1630
+pallets_click_pr1679
+pallets_click_pr1683
+pallets_click_pr1687
+pallets_click_pr1693
+pallets_click_pr1695
+pallets_click_pr1698
+pallets_click_pr1709
+pallets_click_pr1715
+pallets_click_pr1755
+pallets_click_pr1772
+pallets_click_pr1785
+pallets_click_pr1786
+pallets_click_pr1793
+pallets_click_pr1803
+pallets_click_pr1804
+pallets_click_pr1805
+pallets_click_pr1816
+pallets_click_pr1820
+pallets_click_pr1822
+pallets_click_pr1825
+pallets_click_pr1829
+pallets_click_pr1830
+pallets_click_pr1834
+pallets_click_pr1836
+pallets_click_pr1840
+pallets_click_pr1846
+pallets_click_pr1848
+pallets_click_pr1850
+pallets_click_pr1852
+pallets_click_pr1856
+pallets_click_pr1872
+pallets_click_pr1896
+pallets_click_pr1962
+pallets_click_pr1964
+pallets_click_pr1987
+pallets_click_pr1990
+pallets_click_pr1998
+pallets_click_pr2130
+pallets_click_pr2151
+pallets_click_pr2201
+pallets_click_pr2203
+pallets_click_pr2212
+pallets_click_pr2215
+pallets_click_pr2217
+pallets_click_pr2219
+pallets_click_pr2223
+pallets_click_pr2270
+pallets_click_pr2271
+pallets_click_pr2397
+pallets_click_pr2509
+pallets_click_pr2517
+pallets_click_pr2523
+pallets_click_pr2591
+pallets_click_pr2592
+pallets_click_pr2599
+pallets_click_pr2604
+pallets_click_pr2622
+pallets_click_pr2630
+pallets_click_pr2680
+pallets_click_pr2696
+pallets_click_pr2727
+pallets_click_pr2788
+pallets_click_pr2796
+pallets_click_pr2800
+pallets_click_pr2804
+pallets_click_pr2818
+pallets_click_pr2829
+pallets_click_pr2840
+pallets_click_pr2940
+pallets_click_pr3008
+pallets_click_pr3030
+pallets_click_pr3031
+pallets_click_pr3048
+pallets_click_pr3058
+pallets_click_pr453
+pallets_click_pr475
+pallets_click_pr487
+pallets_click_pr496
+pallets_click_pr500
+pallets_click_pr538
+pallets_click_pr557
+pallets_click_pr650
+pallets_click_pr664
+pallets_click_pr681
+pallets_click_pr706
+pallets_click_pr709
+pallets_click_pr710
+pallets_click_pr755
+pallets_click_pr775
+pallets_click_pr787
+pallets_click_pr799
+pallets_click_pr806
+pallets_click_pr809
+pallets_click_pr830
+pallets_click_pr842
+pallets_click_pr863
+pallets_click_pr865
+pallets_click_pr868
+pallets_click_pr869
+pallets_click_pr874
+pallets_click_pr887
+pallets_click_pr889
+pallets_click_pr938
+pallets_click_pr991
+pallets_click_pr994
+pallets_click_pr996
+pallets_click_pr997
+pallets_click_pr999
+pallets_flask_pr3563
+pallets_flask_pr3574
+pallets_flask_pr3684
+pallets_itsdangerous_pr113
+pallets_itsdangerous_pr141
+pallets_itsdangerous_pr154
+pallets_itsdangerous_pr186
+pallets_itsdangerous_pr273
+pallets_itsdangerous_pr374
+pallets_jinja_pr1002
+pallets_jinja_pr1008
+pallets_jinja_pr1013
+pallets_jinja_pr1014
+pallets_jinja_pr1018
+pallets_jinja_pr1047
+pallets_jinja_pr1064
+pallets_jinja_pr1079
+pallets_jinja_pr1080
+pallets_jinja_pr1086
+pallets_jinja_pr1090
+pallets_jinja_pr1095
+pallets_jinja_pr1098
+pallets_jinja_pr1101
+pallets_jinja_pr1105
+pallets_jinja_pr1109
+pallets_jinja_pr1110
+pallets_jinja_pr1113
+pallets_jinja_pr1114
+pallets_jinja_pr1117
+pallets_jinja_pr1167
+pallets_jinja_pr1169
+pallets_jinja_pr1195
+pallets_jinja_pr1233
+pallets_jinja_pr1240
+pallets_jinja_pr1241
+pallets_jinja_pr1243
+pallets_jinja_pr1244
+pallets_jinja_pr1247
+pallets_jinja_pr1248
+pallets_jinja_pr1294
+pallets_jinja_pr1303
+pallets_jinja_pr1339
+pallets_jinja_pr1360
+pallets_jinja_pr1363
+pallets_jinja_pr1366
+pallets_jinja_pr1374
+pallets_jinja_pr1383
+pallets_jinja_pr1393
+pallets_jinja_pr1465
+pallets_jinja_pr1511
+pallets_jinja_pr1559
+pallets_jinja_pr1564
+pallets_jinja_pr1613
+pallets_jinja_pr1614
+pallets_jinja_pr673
+pallets_jinja_pr766
+pallets_jinja_pr824
+pallets_jinja_pr828
+pallets_jinja_pr922
+pallets_jinja_pr923
+pallets_jinja_pr938
+pallets_jinja_pr983
+pallets_jinja_pr993
+pallets_jinja_pr994
+pallets_markupsafe_pr100
+pallets_markupsafe_pr224
+pallets_werkzeug_pr1458
+pallets_werkzeug_pr1537
+pallets_werkzeug_pr1550
+pallets_werkzeug_pr1567
+pallets_werkzeug_pr1574
+pallets_werkzeug_pr1577
+pallets_werkzeug_pr1590
+pallets_werkzeug_pr1605
+pallets_werkzeug_pr1617
+pallets_werkzeug_pr1618
+pallets_werkzeug_pr1639
+pallets_werkzeug_pr1640
+pallets_werkzeug_pr1654
+pallets_werkzeug_pr1694
+pallets_werkzeug_pr1699
+pallets_werkzeug_pr1709
+pallets_werkzeug_pr1770
+pallets_werkzeug_pr2287
+pamelafox_axe-playwright-python_pr3
+pamelafox_openai-messages-token-helper_pr11
+pamelafox_openai-messages-token-helper_pr13
+pamelafox_openai-messages-token-helper_pr14
+pamelafox_openai-messages-token-helper_pr15
+pamelafox_openai-messages-token-helper_pr19
+pamelafox_openai-messages-token-helper_pr2
+pamelafox_openai-messages-token-helper_pr22
+pamelafox_openai-messages-token-helper_pr5
+pangeo-data_rechunker_pr134
+pangeo-data_rechunker_pr22
+pangeo-data_rechunker_pr27
+pangeo-data_rechunker_pr30
+pangeo-data_rechunker_pr48
+pangeo-data_rechunker_pr89
+pangeo-data_rechunker_pr93
+pappasam_toml-sort_pr3
+pappasam_toml-sort_pr4
+pappasam_toml-sort_pr77
+pappasam_toml-sort_pr91
+pdfminer_pdfminer.six_pr1
+pdfminer_pdfminer.six_pr121
+pdfminer_pdfminer.six_pr125
+pdfminer_pdfminer.six_pr129
+pdfminer_pdfminer.six_pr142
+pdfminer_pdfminer.six_pr158
+pdfminer_pdfminer.six_pr16
+pdfminer_pdfminer.six_pr33
+pdfminer_pdfminer.six_pr5
+pdfminer_pdfminer.six_pr88
+pdm-project_pdm-backend_pr105
+pdm-project_pdm-backend_pr114
+pdm-project_pdm-backend_pr120
+pdm-project_pdm-backend_pr127
+pdm-project_pdm-backend_pr132
+pdm-project_pdm-backend_pr14
+pdm-project_pdm-backend_pr16
+pdm-project_pdm-backend_pr17
+pdm-project_pdm-backend_pr19
+pdm-project_pdm-backend_pr2
+pdm-project_pdm-backend_pr20
+pdm-project_pdm-backend_pr21
+pdm-project_pdm-backend_pr26
+pdm-project_pdm-backend_pr27
+pdm-project_pdm-backend_pr28
+pdm-project_pdm-backend_pr36
+pdm-project_pdm-backend_pr4
+pdm-project_pdm-backend_pr42
+pdm-project_pdm-backend_pr45
+pdm-project_pdm-backend_pr49
+pdm-project_pdm-backend_pr5
+pdm-project_pdm-backend_pr53
+pdm-project_pdm-backend_pr59
+pdm-project_pdm-backend_pr65
+pdm-project_pdm-backend_pr73
+pdm-project_pdm-backend_pr75
+pdm-project_pdm-backend_pr8
+pdm-project_pdm-backend_pr85
+pdm-project_pdm-backend_pr88
+pdm-project_pdm-backend_pr93
+pdm-project_pdm-backend_pr95
+pdm-project_pdm-backend_pr96
+pdm-project_pdm-backend_pr98
+pecan_pecan_pr140
+pecan_pecan_pr160
+pecan_pecan_pr164
+pecan_pecan_pr166
+pecan_pecan_pr169
+pepkit_pephubclient_pr37
+pepkit_peppy_pr390
+pepkit_peppy_pr398
+pepkit_peppy_pr407
+pepkit_peppy_pr415
+pepkit_peppy_pr425
+pepkit_peppy_pr426
+pepkit_peppy_pr453
+pepkit_peppy_pr472
+pepkit_peppy_pr485
+pepkit_peppy_pr489
+pepkit_peppy_pr494
+pepkit_peppy_pr495
+pepkit_peppy_pr500
+pepkit_pipestat_pr136
+pepkit_pipestat_pr165
+pepkit_pipestat_pr194
+pepkit_pipestat_pr198
+pepkit_pipestat_pr208
+pepkit_pipestat_pr216
+perrygeo_python-rasterstats_pr279
+perrygeo_python-rasterstats_pr280
+perrygeo_python-rasterstats_pr290
+perrygeo_python-rasterstats_pr299
+perrygeo_python-rasterstats_pr300
+perrygeo_python-rasterstats_pr301
+perrygeo_python-rasterstats_pr310
+peter-wangxu_persist-queue_pr12
+peter-wangxu_persist-queue_pr17
+peter-wangxu_persist-queue_pr20
+peter-wangxu_persist-queue_pr47
+peter-wangxu_persist-queue_pr53
+peter-wangxu_persist-queue_pr61
+peterbe_hashin_pr106
+peterbe_hashin_pr107
+peterbe_hashin_pr109
+peterbe_hashin_pr110
+peterbe_hashin_pr114
+peterbe_hashin_pr117
+peterbe_hashin_pr125
+peterbe_hashin_pr131
+peterbe_hashin_pr159
+peterbe_hashin_pr186
+peterbe_hashin_pr214
+peterbe_hashin_pr22
+peterbe_hashin_pr65
+peterbe_hashin_pr72
+peterbe_hashin_pr74
+peterbe_hashin_pr77
+peterbe_hashin_pr83
+peterbe_hashin_pr88
+peterbe_hashin_pr91
+peterbe_hashin_pr95
+peterbe_premailer_pr108
+peterbe_premailer_pr112
+peterbe_premailer_pr116
+peterbe_premailer_pr124
+peterbe_premailer_pr126
+peterbe_premailer_pr135
+peterbe_premailer_pr136
+peterbe_premailer_pr138
+peterbe_premailer_pr155
+peterbe_premailer_pr160
+peterbe_premailer_pr165
+peterbe_premailer_pr188
+peterbe_premailer_pr200
+peterbe_premailer_pr208
+peterbe_premailer_pr87
+peterbe_premailer_pr92
+peterbe_premailer_pr99
+peterdemin_pip-compile-multi_pr1
+peterdemin_pip-compile-multi_pr11
+peterdemin_pip-compile-multi_pr2
+peterdemin_pip-compile-multi_pr252
+peterdemin_pip-compile-multi_pr288
+peterdemin_pip-compile-multi_pr483
+peterdemin_pip-compile-multi_pr6
+peterdemin_pip-compile-multi_pr8
+petl-developers_petl_pr342
+petl-developers_petl_pr359
+petl-developers_petl_pr361
+petl-developers_petl_pr362
+petl-developers_petl_pr367
+petl-developers_petl_pr400
+petl-developers_petl_pr402
+petl-developers_petl_pr408
+petl-developers_petl_pr414
+petl-developers_petl_pr417
+petl-developers_petl_pr421
+petl-developers_petl_pr460
+petl-developers_petl_pr463
+pfmoore_editables_pr18
+pfnet_pysen_pr38
+pgjones_quart-rate-limiter_pr12
+phfaist_pylatexenc_pr66
+philpep_testinfra_pr627
+philpep_testinfra_pr630
+philpep_testinfra_pr635
+philpep_testinfra_pr642
+philpep_testinfra_pr658
+philpep_testinfra_pr662
+philpep_testinfra_pr671
+philpep_testinfra_pr681
+philpep_testinfra_pr695
+philpep_testinfra_pr717
+philpep_testinfra_pr723
+philpep_testinfra_pr724
+philpep_testinfra_pr741
+philpep_testinfra_pr743
+philpep_testinfra_pr751
+philpep_testinfra_pr763
+philpep_testinfra_pr769
+philpep_testinfra_pr781
+philpep_testinfra_pr792
+piccolo-orm_targ_pr2
+pinax_django-user-accounts_pr323
+pinax_django-user-accounts_pr327
+pinax_django-user-accounts_pr363
+pinax_django-user-accounts_pr364
+pinax_django-user-accounts_pr370
+pinax_django-user-accounts_pr376
+pinterest_pymemcache_pr115
+pinterest_pymemcache_pr128
+pinterest_pymemcache_pr131
+pinterest_pymemcache_pr146
+pinterest_pymemcache_pr165
+pinterest_pymemcache_pr179
+pinterest_pymemcache_pr18
+pinterest_pymemcache_pr180
+pinterest_pymemcache_pr182
+pinterest_pymemcache_pr183
+pinterest_pymemcache_pr20
+pinterest_pymemcache_pr23
+pinterest_pymemcache_pr237
+pinterest_pymemcache_pr36
+pinterest_pymemcache_pr39
+pinterest_pymemcache_pr395
+pinterest_pymemcache_pr471
+pipecat-ai_pipecat-flows_pr102
+pipecat-ai_pipecat-flows_pr115
+pipecat-ai_pipecat-flows_pr128
+pipecat-ai_pipecat-flows_pr140
+pipecat-ai_pipecat-flows_pr171
+pipecat-ai_pipecat-flows_pr174
+pipecat-ai_pipecat-flows_pr191
+pipecat-ai_pipecat-flows_pr195
+pipecat-ai_pipecat-flows_pr201
+pipecat-ai_pipecat-flows_pr212
+pipecat-ai_pipecat-flows_pr214
+pipecat-ai_pipecat-flows_pr57
+pipecat-ai_pipecat-flows_pr59
+pipecat-ai_pipecat-flows_pr63
+pipecat-ai_pipecat-flows_pr68
+pipecat-ai_pipecat-flows_pr69
+pipecat-ai_pipecat-flows_pr75
+pipecat-ai_pipecat-flows_pr82
+pipecat-ai_pipecat-flows_pr83
+pipecat-ai_pipecat-flows_pr87
+pipecat-ai_pipecat-flows_pr88
+pipecat-ai_pipecat-flows_pr90
+pipecat-ai_pipecat-flows_pr91
+pipecat-ai_pipecat-flows_pr92
+pipecat-ai_pipecat-flows_pr93
+piskvorky_sqlitedict_pr105
+piskvorky_sqlitedict_pr113
+piskvorky_sqlitedict_pr128
+piskvorky_sqlitedict_pr161
+piskvorky_sqlitedict_pr38
+piskvorky_sqlitedict_pr50
+piskvorky_sqlitedict_pr55
+piskvorky_sqlitedict_pr65
+piskvorky_sqlitedict_pr72
+piskvorky_sqlitedict_pr94
+plamere_spotipy_pr1036
+plamere_spotipy_pr1042
+plamere_spotipy_pr1052
+plamere_spotipy_pr1059
+plamere_spotipy_pr1108
+plamere_spotipy_pr1141
+plamere_spotipy_pr1161
+plamere_spotipy_pr1177
+plamere_spotipy_pr1178
+plamere_spotipy_pr1189
+plamere_spotipy_pr125
+plamere_spotipy_pr893
+plamere_spotipy_pr901
+plamere_spotipy_pr919
+plamere_spotipy_pr941
+plamere_spotipy_pr986
+pnpnpn_timeout-decorator_pr65
+podhmo_dictknife_pr101
+podhmo_dictknife_pr102
+podhmo_dictknife_pr103
+podhmo_dictknife_pr108
+podhmo_dictknife_pr111
+podhmo_dictknife_pr112
+podhmo_dictknife_pr113
+podhmo_dictknife_pr114
+podhmo_dictknife_pr115
+podhmo_dictknife_pr116
+podhmo_dictknife_pr117
+podhmo_dictknife_pr126
+podhmo_dictknife_pr127
+podhmo_dictknife_pr132
+podhmo_dictknife_pr133
+podhmo_dictknife_pr136
+podhmo_dictknife_pr137
+podhmo_dictknife_pr139
+podhmo_dictknife_pr160
+podhmo_dictknife_pr162
+podhmo_dictknife_pr163
+podhmo_dictknife_pr173
+podhmo_dictknife_pr174
+podhmo_dictknife_pr177
+podhmo_dictknife_pr182
+podhmo_dictknife_pr183
+podhmo_dictknife_pr19
+podhmo_dictknife_pr196
+podhmo_dictknife_pr22
+podhmo_dictknife_pr23
+podhmo_dictknife_pr24
+podhmo_dictknife_pr32
+podhmo_dictknife_pr44
+podhmo_dictknife_pr46
+podhmo_dictknife_pr50
+podhmo_dictknife_pr54
+podhmo_dictknife_pr55
+podhmo_dictknife_pr62
+podhmo_dictknife_pr72
+podhmo_dictknife_pr76
+podhmo_dictknife_pr78
+podhmo_dictknife_pr80
+podhmo_dictknife_pr82
+podhmo_python-node-semver_pr14
+podhmo_python-node-semver_pr19
+podhmo_python-node-semver_pr44
+polkascan_py-scale-codec_pr107
+polkascan_py-scale-codec_pr116
+polkascan_py-scale-codec_pr22
+polkascan_py-scale-codec_pr72
+polkascan_py-scale-codec_pr76
+polkascan_py-scale-codec_pr91
+polkascan_py-scale-codec_pr92
+polkascan_py-scale-codec_pr93
+polm_cutlet_pr1
+populationgenomics_production-pipelines_pr427
+populationgenomics_production-pipelines_pr432
+populationgenomics_production-pipelines_pr433
+populationgenomics_production-pipelines_pr445
+populationgenomics_production-pipelines_pr448
+populationgenomics_production-pipelines_pr450
+populationgenomics_production-pipelines_pr453
+populationgenomics_production-pipelines_pr459
+populationgenomics_production-pipelines_pr462
+populationgenomics_production-pipelines_pr470
+populationgenomics_production-pipelines_pr472
+populationgenomics_production-pipelines_pr478
+populationgenomics_production-pipelines_pr479
+populationgenomics_production-pipelines_pr480
+populationgenomics_production-pipelines_pr481
+populationgenomics_production-pipelines_pr483
+populationgenomics_production-pipelines_pr490
+populationgenomics_production-pipelines_pr493
+populationgenomics_production-pipelines_pr496
+populationgenomics_production-pipelines_pr507
+populationgenomics_production-pipelines_pr508
+populationgenomics_production-pipelines_pr511
+populationgenomics_production-pipelines_pr513
+populationgenomics_production-pipelines_pr515
+populationgenomics_production-pipelines_pr518
+populationgenomics_production-pipelines_pr519
+populationgenomics_production-pipelines_pr522
+populationgenomics_production-pipelines_pr529
+populationgenomics_production-pipelines_pr530
+populationgenomics_production-pipelines_pr531
+populationgenomics_production-pipelines_pr534
+populationgenomics_production-pipelines_pr535
+populationgenomics_production-pipelines_pr537
+populationgenomics_production-pipelines_pr544
+populationgenomics_production-pipelines_pr549
+populationgenomics_production-pipelines_pr551
+populationgenomics_production-pipelines_pr555
+populationgenomics_production-pipelines_pr556
+populationgenomics_production-pipelines_pr566
+populationgenomics_production-pipelines_pr576
+populationgenomics_production-pipelines_pr577
+populationgenomics_production-pipelines_pr583
+populationgenomics_production-pipelines_pr589
+populationgenomics_production-pipelines_pr592
+populationgenomics_production-pipelines_pr593
+populationgenomics_production-pipelines_pr600
+populationgenomics_production-pipelines_pr601
+populationgenomics_production-pipelines_pr603
+populationgenomics_production-pipelines_pr609
+populationgenomics_production-pipelines_pr616
+populationgenomics_production-pipelines_pr621
+populationgenomics_production-pipelines_pr623
+populationgenomics_production-pipelines_pr626
+populationgenomics_production-pipelines_pr630
+populationgenomics_production-pipelines_pr635
+populationgenomics_production-pipelines_pr637
+populationgenomics_production-pipelines_pr645
+populationgenomics_production-pipelines_pr648
+populationgenomics_production-pipelines_pr649
+populationgenomics_production-pipelines_pr653
+populationgenomics_production-pipelines_pr654
+populationgenomics_production-pipelines_pr659
+populationgenomics_production-pipelines_pr661
+populationgenomics_production-pipelines_pr672
+populationgenomics_production-pipelines_pr675
+populationgenomics_production-pipelines_pr677
+populationgenomics_production-pipelines_pr685
+populationgenomics_production-pipelines_pr690
+populationgenomics_production-pipelines_pr691
+populationgenomics_production-pipelines_pr699
+populationgenomics_production-pipelines_pr701
+populationgenomics_production-pipelines_pr704
+populationgenomics_production-pipelines_pr705
+populationgenomics_production-pipelines_pr718
+populationgenomics_production-pipelines_pr721
+populationgenomics_production-pipelines_pr723
+populationgenomics_production-pipelines_pr745
+populationgenomics_production-pipelines_pr754
+populationgenomics_production-pipelines_pr764
+populationgenomics_production-pipelines_pr770
+populationgenomics_production-pipelines_pr784
+populationgenomics_production-pipelines_pr785
+populationgenomics_production-pipelines_pr787
+populationgenomics_production-pipelines_pr789
+populationgenomics_production-pipelines_pr794
+populationgenomics_production-pipelines_pr796
+populationgenomics_production-pipelines_pr798
+populationgenomics_production-pipelines_pr806
+populationgenomics_production-pipelines_pr807
+populationgenomics_production-pipelines_pr816
+populationgenomics_production-pipelines_pr818
+populationgenomics_production-pipelines_pr819
+populationgenomics_production-pipelines_pr821
+populationgenomics_production-pipelines_pr824
+populationgenomics_production-pipelines_pr825
+populationgenomics_production-pipelines_pr829
+populationgenomics_production-pipelines_pr831
+populationgenomics_production-pipelines_pr836
+populationgenomics_production-pipelines_pr845
+populationgenomics_production-pipelines_pr846
+populationgenomics_production-pipelines_pr847
+populationgenomics_production-pipelines_pr850
+populationgenomics_production-pipelines_pr851
+populationgenomics_production-pipelines_pr860
+populationgenomics_production-pipelines_pr861
+populationgenomics_production-pipelines_pr863
+populationgenomics_production-pipelines_pr874
+populationgenomics_production-pipelines_pr879
+populationgenomics_production-pipelines_pr880
+posthog_drf-exceptions-hog_pr13
+posthog_drf-exceptions-hog_pr29
+posthog_drf-exceptions-hog_pr39
+praw-dev_asyncprawcore_pr104
+praw-dev_asyncprawcore_pr113
+praw-dev_asyncprawcore_pr51
+praw-dev_asyncprawcore_pr67
+praw-dev_asyncprawcore_pr97
+praw-dev_praw_pr394
+praw-dev_praw_pr563
+praw-dev_praw_pr565
+praw-dev_praw_pr575
+praw-dev_praw_pr576
+praw-dev_praw_pr591
+praw-dev_praw_pr602
+praw-dev_praw_pr603
+praw-dev_praw_pr606
+praw-dev_praw_pr612
+praw-dev_praw_pr618
+praw-dev_praw_pr625
+praw-dev_praw_pr637
+praw-dev_praw_pr654
+praw-dev_prawcore_pr105
+praw-dev_prawcore_pr112
+praw-dev_prawcore_pr115
+praw-dev_prawcore_pr116
+praw-dev_prawcore_pr117
+praw-dev_prawcore_pr119
+praw-dev_prawcore_pr122
+praw-dev_prawcore_pr13
+praw-dev_prawcore_pr147
+praw-dev_prawcore_pr15
+praw-dev_prawcore_pr16
+praw-dev_prawcore_pr165
+praw-dev_prawcore_pr19
+praw-dev_prawcore_pr197
+praw-dev_prawcore_pr206
+praw-dev_prawcore_pr24
+praw-dev_prawcore_pr244
+praw-dev_prawcore_pr25
+praw-dev_prawcore_pr26
+praw-dev_prawcore_pr27
+praw-dev_prawcore_pr28
+praw-dev_prawcore_pr3
+praw-dev_prawcore_pr32
+praw-dev_prawcore_pr4
+praw-dev_prawcore_pr40
+praw-dev_prawcore_pr42
+praw-dev_prawcore_pr45
+praw-dev_prawcore_pr46
+praw-dev_prawcore_pr48
+praw-dev_prawcore_pr49
+praw-dev_prawcore_pr5
+praw-dev_prawcore_pr51
+praw-dev_prawcore_pr52
+praw-dev_prawcore_pr54
+praw-dev_prawcore_pr55
+praw-dev_prawcore_pr56
+praw-dev_prawcore_pr57
+praw-dev_prawcore_pr59
+praw-dev_prawcore_pr61
+praw-dev_prawcore_pr62
+praw-dev_prawcore_pr66
+praw-dev_prawcore_pr68
+praw-dev_prawcore_pr79
+praw-dev_prawcore_pr82
+praw-dev_prawcore_pr88
+praw-dev_prawcore_pr9
+praw-dev_prawcore_pr90
+praw-dev_prawcore_pr96
+praw-dev_prawcore_pr99
+pre-commit_identify_pr118
+pre-commit_identify_pr12
+pre-commit_identify_pr14
+pre-commit_identify_pr169
+pre-commit_identify_pr177
+pre-commit_identify_pr202
+pre-commit_identify_pr27
+pre-commit_identify_pr468
+pre-commit_identify_pr48
+pre-commit_identify_pr519
+pre-commit_identify_pr63
+pre-commit_identify_pr7
+pre-commit_identify_pr87
+pre-commit_pre-commit-hooks_pr1014
+pre-commit_pre-commit-hooks_pr102
+pre-commit_pre-commit-hooks_pr1031
+pre-commit_pre-commit-hooks_pr1039
+pre-commit_pre-commit-hooks_pr107
+pre-commit_pre-commit-hooks_pr109
+pre-commit_pre-commit-hooks_pr1095
+pre-commit_pre-commit-hooks_pr111
+pre-commit_pre-commit-hooks_pr116
+pre-commit_pre-commit-hooks_pr117
+pre-commit_pre-commit-hooks_pr1202
+pre-commit_pre-commit-hooks_pr133
+pre-commit_pre-commit-hooks_pr135
+pre-commit_pre-commit-hooks_pr147
+pre-commit_pre-commit-hooks_pr149
+pre-commit_pre-commit-hooks_pr15
+pre-commit_pre-commit-hooks_pr153
+pre-commit_pre-commit-hooks_pr172
+pre-commit_pre-commit-hooks_pr175
+pre-commit_pre-commit-hooks_pr18
+pre-commit_pre-commit-hooks_pr184
+pre-commit_pre-commit-hooks_pr185
+pre-commit_pre-commit-hooks_pr199
+pre-commit_pre-commit-hooks_pr202
+pre-commit_pre-commit-hooks_pr203
+pre-commit_pre-commit-hooks_pr205
+pre-commit_pre-commit-hooks_pr207
+pre-commit_pre-commit-hooks_pr213
+pre-commit_pre-commit-hooks_pr215
+pre-commit_pre-commit-hooks_pr22
+pre-commit_pre-commit-hooks_pr230
+pre-commit_pre-commit-hooks_pr24
+pre-commit_pre-commit-hooks_pr240
+pre-commit_pre-commit-hooks_pr243
+pre-commit_pre-commit-hooks_pr244
+pre-commit_pre-commit-hooks_pr249
+pre-commit_pre-commit-hooks_pr251
+pre-commit_pre-commit-hooks_pr254
+pre-commit_pre-commit-hooks_pr260
+pre-commit_pre-commit-hooks_pr271
+pre-commit_pre-commit-hooks_pr274
+pre-commit_pre-commit-hooks_pr275
+pre-commit_pre-commit-hooks_pr279
+pre-commit_pre-commit-hooks_pr28
+pre-commit_pre-commit-hooks_pr281
+pre-commit_pre-commit-hooks_pr283
+pre-commit_pre-commit-hooks_pr294
+pre-commit_pre-commit-hooks_pr297
+pre-commit_pre-commit-hooks_pr301
+pre-commit_pre-commit-hooks_pr327
+pre-commit_pre-commit-hooks_pr341
+pre-commit_pre-commit-hooks_pr35
+pre-commit_pre-commit-hooks_pr36
+pre-commit_pre-commit-hooks_pr360
+pre-commit_pre-commit-hooks_pr376
+pre-commit_pre-commit-hooks_pr384
+pre-commit_pre-commit-hooks_pr386
+pre-commit_pre-commit-hooks_pr39
+pre-commit_pre-commit-hooks_pr43
+pre-commit_pre-commit-hooks_pr469
+pre-commit_pre-commit-hooks_pr47
+pre-commit_pre-commit-hooks_pr478
+pre-commit_pre-commit-hooks_pr479
+pre-commit_pre-commit-hooks_pr48
+pre-commit_pre-commit-hooks_pr483
+pre-commit_pre-commit-hooks_pr488
+pre-commit_pre-commit-hooks_pr49
+pre-commit_pre-commit-hooks_pr502
+pre-commit_pre-commit-hooks_pr511
+pre-commit_pre-commit-hooks_pr522
+pre-commit_pre-commit-hooks_pr524
+pre-commit_pre-commit-hooks_pr545
+pre-commit_pre-commit-hooks_pr549
+pre-commit_pre-commit-hooks_pr55
+pre-commit_pre-commit-hooks_pr558
+pre-commit_pre-commit-hooks_pr56
+pre-commit_pre-commit-hooks_pr565
+pre-commit_pre-commit-hooks_pr571
+pre-commit_pre-commit-hooks_pr58
+pre-commit_pre-commit-hooks_pr582
+pre-commit_pre-commit-hooks_pr6
+pre-commit_pre-commit-hooks_pr626
+pre-commit_pre-commit-hooks_pr65
+pre-commit_pre-commit-hooks_pr674
+pre-commit_pre-commit-hooks_pr7
+pre-commit_pre-commit-hooks_pr719
+pre-commit_pre-commit-hooks_pr748
+pre-commit_pre-commit-hooks_pr771
+pre-commit_pre-commit-hooks_pr815
+pre-commit_pre-commit-hooks_pr85
+pre-commit_pre-commit-hooks_pr850
+pre-commit_pre-commit-hooks_pr87
+pre-commit_pre-commit-hooks_pr944
+predictive-analytics-lab_data-science-types_pr67
+predictive-analytics-lab_data-science-types_pr69
+predictive-analytics-lab_data-science-types_pr75
+predictive-analytics-lab_data-science-types_pr76
+projectmesa_mesa_pr1001
+projectmesa_mesa_pr103
+projectmesa_mesa_pr1087
+projectmesa_mesa_pr1115
+projectmesa_mesa_pr1116
+projectmesa_mesa_pr1141
+projectmesa_mesa_pr1162
+projectmesa_mesa_pr1181
+projectmesa_mesa_pr1184
+projectmesa_mesa_pr1245
+projectmesa_mesa_pr1260
+projectmesa_mesa_pr1262
+projectmesa_mesa_pr1272
+projectmesa_mesa_pr1283
+projectmesa_mesa_pr1287
+projectmesa_mesa_pr1293
+projectmesa_mesa_pr1294
+projectmesa_mesa_pr1308
+projectmesa_mesa_pr1321
+projectmesa_mesa_pr1322
+projectmesa_mesa_pr1325
+projectmesa_mesa_pr1338
+projectmesa_mesa_pr1342
+projectmesa_mesa_pr1345
+projectmesa_mesa_pr1347
+projectmesa_mesa_pr1349
+projectmesa_mesa_pr1351
+projectmesa_mesa_pr1356
+projectmesa_mesa_pr1376
+projectmesa_mesa_pr1381
+projectmesa_mesa_pr1403
+projectmesa_mesa_pr1435
+projectmesa_mesa_pr1439
+projectmesa_mesa_pr1453
+projectmesa_mesa_pr1455
+projectmesa_mesa_pr1456
+projectmesa_mesa_pr1457
+projectmesa_mesa_pr1465
+projectmesa_mesa_pr1472
+projectmesa_mesa_pr1474
+projectmesa_mesa_pr1478
+projectmesa_mesa_pr1497
+projectmesa_mesa_pr1498
+projectmesa_mesa_pr1507
+projectmesa_mesa_pr1509
+projectmesa_mesa_pr1516
+projectmesa_mesa_pr1517
+projectmesa_mesa_pr1523
+projectmesa_mesa_pr1524
+projectmesa_mesa_pr1525
+projectmesa_mesa_pr1536
+projectmesa_mesa_pr1542
+projectmesa_mesa_pr1546
+projectmesa_mesa_pr155
+projectmesa_mesa_pr156
+projectmesa_mesa_pr1564
+projectmesa_mesa_pr1565
+projectmesa_mesa_pr1568
+projectmesa_mesa_pr157
+projectmesa_mesa_pr1570
+projectmesa_mesa_pr1575
+projectmesa_mesa_pr1614
+projectmesa_mesa_pr1659
+projectmesa_mesa_pr1667
+projectmesa_mesa_pr1686
+projectmesa_mesa_pr1688
+projectmesa_mesa_pr1693
+projectmesa_mesa_pr170
+projectmesa_mesa_pr1702
+projectmesa_mesa_pr1710
+projectmesa_mesa_pr1718
+projectmesa_mesa_pr1723
+projectmesa_mesa_pr1724
+projectmesa_mesa_pr1751
+projectmesa_mesa_pr1758
+projectmesa_mesa_pr1779
+projectmesa_mesa_pr178
+projectmesa_mesa_pr1780
+projectmesa_mesa_pr1783
+projectmesa_mesa_pr1784
+projectmesa_mesa_pr1788
+projectmesa_mesa_pr1798
+projectmesa_mesa_pr1809
+projectmesa_mesa_pr1830
+projectmesa_mesa_pr1832
+projectmesa_mesa_pr1851
+projectmesa_mesa_pr1877
+projectmesa_mesa_pr1894
+projectmesa_mesa_pr1907
+projectmesa_mesa_pr192
+projectmesa_mesa_pr1920
+projectmesa_mesa_pr2084
+projectmesa_mesa_pr2195
+projectmesa_mesa_pr2214
+projectmesa_mesa_pr2219
+projectmesa_mesa_pr2220
+projectmesa_mesa_pr2237
+projectmesa_mesa_pr2240
+projectmesa_mesa_pr2251
+projectmesa_mesa_pr2252
+projectmesa_mesa_pr2253
+projectmesa_mesa_pr2254
+projectmesa_mesa_pr2266
+projectmesa_mesa_pr2267
+projectmesa_mesa_pr2279
+projectmesa_mesa_pr2280
+projectmesa_mesa_pr2283
+projectmesa_mesa_pr2289
+projectmesa_mesa_pr2290
+projectmesa_mesa_pr2291
+projectmesa_mesa_pr2292
+projectmesa_mesa_pr2293
+projectmesa_mesa_pr2296
+projectmesa_mesa_pr2300
+projectmesa_mesa_pr2307
+projectmesa_mesa_pr2309
+projectmesa_mesa_pr2319
+projectmesa_mesa_pr2327
+projectmesa_mesa_pr2328
+projectmesa_mesa_pr2332
+projectmesa_mesa_pr2333
+projectmesa_mesa_pr2336
+projectmesa_mesa_pr2344
+projectmesa_mesa_pr2348
+projectmesa_mesa_pr2350
+projectmesa_mesa_pr2351
+projectmesa_mesa_pr2352
+projectmesa_mesa_pr2353
+projectmesa_mesa_pr2357
+projectmesa_mesa_pr2358
+projectmesa_mesa_pr2359
+projectmesa_mesa_pr2378
+projectmesa_mesa_pr2379
+projectmesa_mesa_pr2390
+projectmesa_mesa_pr2394
+projectmesa_mesa_pr2399
+projectmesa_mesa_pr2400
+projectmesa_mesa_pr2403
+projectmesa_mesa_pr2414
+projectmesa_mesa_pr2418
+projectmesa_mesa_pr2429
+projectmesa_mesa_pr2430
+projectmesa_mesa_pr2442
+projectmesa_mesa_pr2445
+projectmesa_mesa_pr2446
+projectmesa_mesa_pr2447
+projectmesa_mesa_pr2463
+projectmesa_mesa_pr2478
+projectmesa_mesa_pr2479
+projectmesa_mesa_pr2487
+projectmesa_mesa_pr2489
+projectmesa_mesa_pr2491
+projectmesa_mesa_pr2496
+projectmesa_mesa_pr2501
+projectmesa_mesa_pr2502
+projectmesa_mesa_pr2503
+projectmesa_mesa_pr2505
+projectmesa_mesa_pr2506
+projectmesa_mesa_pr2512
+projectmesa_mesa_pr2518
+projectmesa_mesa_pr2523
+projectmesa_mesa_pr2540
+projectmesa_mesa_pr2541
+projectmesa_mesa_pr2543
+projectmesa_mesa_pr2544
+projectmesa_mesa_pr2546
+projectmesa_mesa_pr2548
+projectmesa_mesa_pr2598
+projectmesa_mesa_pr2599
+projectmesa_mesa_pr767
+projectmesa_mesa_pr779
+projectmesa_mesa_pr792
+projectmesa_mesa_pr796
+projectmesa_mesa_pr820
+projectmesa_mesa_pr823
+projectmesa_mesa_pr863
+projectmesa_mesa_pr917
+projectmesa_mesa_pr920
+projectmesa_mesa_pr936
+projectmesa_mesa_pr979
+projectmesa_mesa_pr981
+prompt-toolkit_ptpython_pr592
+prompt-toolkit_ptpython_pr621
+prompt-toolkit_python-prompt-toolkit_pr1007
+prompt-toolkit_python-prompt-toolkit_pr1018
+prompt-toolkit_python-prompt-toolkit_pr1029
+prompt-toolkit_python-prompt-toolkit_pr1035
+prompt-toolkit_python-prompt-toolkit_pr1039
+prompt-toolkit_python-prompt-toolkit_pr1051
+prompt-toolkit_python-prompt-toolkit_pr1062
+prompt-toolkit_python-prompt-toolkit_pr1064
+prompt-toolkit_python-prompt-toolkit_pr1067
+prompt-toolkit_python-prompt-toolkit_pr1074
+prompt-toolkit_python-prompt-toolkit_pr1080
+prompt-toolkit_python-prompt-toolkit_pr1083
+prompt-toolkit_python-prompt-toolkit_pr1091
+prompt-toolkit_python-prompt-toolkit_pr1095
+prompt-toolkit_python-prompt-toolkit_pr1110
+prompt-toolkit_python-prompt-toolkit_pr1112
+prompt-toolkit_python-prompt-toolkit_pr1122
+prompt-toolkit_python-prompt-toolkit_pr1127
+prompt-toolkit_python-prompt-toolkit_pr1167
+prompt-toolkit_python-prompt-toolkit_pr1168
+prompt-toolkit_python-prompt-toolkit_pr1217
+prompt-toolkit_python-prompt-toolkit_pr1223
+prompt-toolkit_python-prompt-toolkit_pr1237
+prompt-toolkit_python-prompt-toolkit_pr1246
+prompt-toolkit_python-prompt-toolkit_pr1263
+prompt-toolkit_python-prompt-toolkit_pr1312
+prompt-toolkit_python-prompt-toolkit_pr1328
+prompt-toolkit_python-prompt-toolkit_pr1332
+prompt-toolkit_python-prompt-toolkit_pr1336
+prompt-toolkit_python-prompt-toolkit_pr1348
+prompt-toolkit_python-prompt-toolkit_pr1360
+prompt-toolkit_python-prompt-toolkit_pr1361
+prompt-toolkit_python-prompt-toolkit_pr1394
+prompt-toolkit_python-prompt-toolkit_pr1446
+prompt-toolkit_python-prompt-toolkit_pr1455
+prompt-toolkit_python-prompt-toolkit_pr1505
+prompt-toolkit_python-prompt-toolkit_pr1512
+prompt-toolkit_python-prompt-toolkit_pr1535
+prompt-toolkit_python-prompt-toolkit_pr1547
+prompt-toolkit_python-prompt-toolkit_pr1548
+prompt-toolkit_python-prompt-toolkit_pr1555
+prompt-toolkit_python-prompt-toolkit_pr1559
+prompt-toolkit_python-prompt-toolkit_pr1560
+prompt-toolkit_python-prompt-toolkit_pr1566
+prompt-toolkit_python-prompt-toolkit_pr1568
+prompt-toolkit_python-prompt-toolkit_pr1582
+prompt-toolkit_python-prompt-toolkit_pr1586
+prompt-toolkit_python-prompt-toolkit_pr1589
+prompt-toolkit_python-prompt-toolkit_pr627
+prompt-toolkit_python-prompt-toolkit_pr631
+prompt-toolkit_python-prompt-toolkit_pr691
+prompt-toolkit_python-prompt-toolkit_pr760
+prompt-toolkit_python-prompt-toolkit_pr802
+prompt-toolkit_python-prompt-toolkit_pr838
+prompt-toolkit_python-prompt-toolkit_pr851
+prompt-toolkit_python-prompt-toolkit_pr867
+prompt-toolkit_python-prompt-toolkit_pr874
+prompt-toolkit_python-prompt-toolkit_pr877
+prompt-toolkit_python-prompt-toolkit_pr899
+prompt-toolkit_python-prompt-toolkit_pr910
+prompt-toolkit_python-prompt-toolkit_pr919
+prompt-toolkit_python-prompt-toolkit_pr929
+prompt-toolkit_python-prompt-toolkit_pr939
+prompt-toolkit_python-prompt-toolkit_pr943
+prompt-toolkit_python-prompt-toolkit_pr989
+psd-tools_psd-tools_pr111
+psd-tools_psd-tools_pr120
+psd-tools_psd-tools_pr121
+psd-tools_psd-tools_pr133
+psd-tools_psd-tools_pr138
+psd-tools_psd-tools_pr146
+psd-tools_psd-tools_pr161
+psd-tools_psd-tools_pr166
+psd-tools_psd-tools_pr169
+psd-tools_psd-tools_pr178
+psd-tools_psd-tools_pr182
+psd-tools_psd-tools_pr188
+psd-tools_psd-tools_pr96
+psd-tools_psd-tools_pr99
+pudo_dataset_pr284
+pudo_dataset_pr296
+pudo_dataset_pr315
+pudo_dataset_pr321
+pudo_dataset_pr346
+pudo_dataset_pr424
+pwaller_pyprof2calltree_pr41
+pwaller_pyprof2calltree_pr58
+pwwang_liquidpy_pr49
+pwwang_liquidpy_pr53
+pwwang_liquidpy_pr54
+pwwang_python-varname_pr103
+pwwang_python-varname_pr105
+pwwang_python-varname_pr15
+pwwang_python-varname_pr20
+pwwang_python-varname_pr27
+pwwang_python-varname_pr29
+pwwang_python-varname_pr32
+pwwang_python-varname_pr39
+pwwang_python-varname_pr42
+pwwang_python-varname_pr59
+pwwang_python-varname_pr63
+pwwang_python-varname_pr84
+py-moneyed_py-moneyed_pr102
+py-moneyed_py-moneyed_pr123
+py-moneyed_py-moneyed_pr150
+py-moneyed_py-moneyed_pr157
+py-moneyed_py-moneyed_pr162
+py-moneyed_py-moneyed_pr167
+py-moneyed_py-moneyed_pr168
+py-moneyed_py-moneyed_pr180
+py-moneyed_py-moneyed_pr64
+py-moneyed_py-moneyed_pr75
+py-moneyed_py-moneyed_pr78
+py-moneyed_py-moneyed_pr83
+py-moneyed_py-moneyed_pr92
+py-moneyed_py-moneyed_pr97
+pyansys_pypim_pr5
+pyapp-kit_app-model_pr10
+pyapp-kit_app-model_pr119
+pyapp-kit_app-model_pr130
+pyapp-kit_app-model_pr133
+pyapp-kit_app-model_pr145
+pyapp-kit_app-model_pr146
+pyapp-kit_app-model_pr16
+pyapp-kit_app-model_pr18
+pyapp-kit_app-model_pr194
+pyapp-kit_app-model_pr197
+pyapp-kit_app-model_pr202
+pyapp-kit_app-model_pr211
+pyapp-kit_app-model_pr212
+pyapp-kit_app-model_pr213
+pyapp-kit_app-model_pr237
+pyapp-kit_app-model_pr24
+pyapp-kit_app-model_pr241
+pyapp-kit_app-model_pr242
+pyapp-kit_app-model_pr26
+pyapp-kit_app-model_pr34
+pyapp-kit_app-model_pr35
+pyapp-kit_app-model_pr39
+pyapp-kit_app-model_pr40
+pyapp-kit_app-model_pr44
+pyapp-kit_app-model_pr45
+pyapp-kit_app-model_pr48
+pyapp-kit_app-model_pr5
+pyapp-kit_app-model_pr58
+pyapp-kit_app-model_pr59
+pyapp-kit_app-model_pr63
+pyapp-kit_app-model_pr67
+pyapp-kit_app-model_pr68
+pyapp-kit_app-model_pr7
+pyapp-kit_app-model_pr81
+pyapp-kit_in-n-out_pr5
+pyapp-kit_in-n-out_pr63
+pyapp-kit_psygnal_pr178
+pyapp-kit_psygnal_pr183
+pyapp-kit_psygnal_pr186
+pyapp-kit_psygnal_pr188
+pyapp-kit_psygnal_pr189
+pyapp-kit_psygnal_pr192
+pyapp-kit_psygnal_pr194
+pyapp-kit_psygnal_pr209
+pyapp-kit_psygnal_pr210
+pyapp-kit_psygnal_pr216
+pyapp-kit_psygnal_pr222
+pyapp-kit_psygnal_pr228
+pyapp-kit_psygnal_pr232
+pyasi_pybuildkite_pr101
+pyasi_pybuildkite_pr106
+pyasi_pybuildkite_pr13
+pyasi_pybuildkite_pr14
+pyasi_pybuildkite_pr18
+pyasi_pybuildkite_pr19
+pyasi_pybuildkite_pr22
+pyasi_pybuildkite_pr40
+pyasi_pybuildkite_pr53
+pyasi_pybuildkite_pr57
+pyasi_pybuildkite_pr58
+pyasi_pybuildkite_pr6
+pyasi_pybuildkite_pr82
+pyasi_pybuildkite_pr84
+pyasi_pybuildkite_pr87
+pyasi_pybuildkite_pr99
+pyasn1_pyasn1-modules_pr5
+pyasn1_pyasn1_pr13
+pyasn1_pyasn1_pr61
+pyasn1_pyasn1_pr82
+pyca_bcrypt_pr59
+pyca_bcrypt_pr79
+pyca_pynacl_pr127
+pyca_pynacl_pr138
+pyca_pynacl_pr39
+pyca_pynacl_pr41
+pyca_pynacl_pr52
+pyca_pyopenssl_pr1308
+pyca_pyopenssl_pr1310
+pyca_pyopenssl_pr1313
+pyca_pyopenssl_pr1327
+pyca_pyopenssl_pr1328
+pyca_pyopenssl_pr1330
+pyca_pyopenssl_pr1336
+pyca_pyopenssl_pr1344
+pyca_pyopenssl_pr1347
+pyca_pyopenssl_pr1351
+pyca_pyopenssl_pr1354
+pyca_pyopenssl_pr1357
+pyca_pyopenssl_pr1391
+pyca_pyopenssl_pr1399
+pyca_pyopenssl_pr1403
+pyca_service-identity_pr19
+pyca_service-identity_pr47
+pyca_service-identity_pr55
+pyca_service-identity_pr69
+pycasbin_sqlalchemy-adapter_pr48
+pycasbin_sqlalchemy-adapter_pr51
+pycasbin_sqlalchemy-adapter_pr56
+pycasbin_sqlalchemy-adapter_pr9
+pycontribs_ruyaml_pr59
+pycqa_doc8_pr122
+pycqa_doc8_pr49
+pycqa_doc8_pr51
+pycqa_doc8_pr66
+pycqa_isort_pr868
+pycqa_isort_pr878
+pycqa_isort_pr891
+pycqa_isort_pr892
+pycqa_isort_pr896
+pycqa_isort_pr939
+pycqa_isort_pr949
+pydantic_bump-pydantic_pr110
+pydantic_bump-pydantic_pr12
+pydantic_bump-pydantic_pr122
+pydantic_bump-pydantic_pr127
+pydantic_bump-pydantic_pr13
+pydantic_bump-pydantic_pr14
+pydantic_bump-pydantic_pr143
+pydantic_bump-pydantic_pr18
+pydantic_bump-pydantic_pr21
+pydantic_bump-pydantic_pr23
+pydantic_bump-pydantic_pr24
+pydantic_bump-pydantic_pr26
+pydantic_bump-pydantic_pr27
+pydantic_bump-pydantic_pr28
+pydantic_bump-pydantic_pr31
+pydantic_bump-pydantic_pr32
+pydantic_bump-pydantic_pr35
+pydantic_bump-pydantic_pr41
+pydantic_bump-pydantic_pr43
+pydantic_bump-pydantic_pr45
+pydantic_bump-pydantic_pr65
+pydantic_bump-pydantic_pr66
+pydantic_bump-pydantic_pr72
+pydantic_bump-pydantic_pr74
+pydantic_bump-pydantic_pr76
+pydantic_bump-pydantic_pr86
+pydantic_bump-pydantic_pr90
+pydantic_typing-inspection_pr24
+pydantic_typing-inspection_pr28
+pydicom_pylibjpeg_pr74
+pydicom_pylibjpeg_pr76
+pydicom_pylibjpeg_pr82
+pydoit_doit_pr292
+pydoit_doit_pr405
+pyinfra-dev_pyinfra_pr192
+pyinfra-dev_pyinfra_pr194
+pyinfra-dev_pyinfra_pr196
+pyinfra-dev_pyinfra_pr231
+pylabel-project_pylabel_pr125
+pylabel-project_pylabel_pr128
+pylabel-project_pylabel_pr25
+pylabel-project_pylabel_pr28
+pylabel-project_pylabel_pr31
+pylabel-project_pylabel_pr37
+pylabel-project_pylabel_pr64
+pylabel-project_pylabel_pr70
+pylast_pylast_pr237
+pylast_pylast_pr243
+pylast_pylast_pr244
+pylast_pylast_pr245
+pylast_pylast_pr264
+pylast_pylast_pr281
+pylast_pylast_pr290
+pylast_pylast_pr292
+pylast_pylast_pr297
+pylast_pylast_pr395
+pylast_pylast_pr442
+pyout_pyout_pr108
+pyout_pyout_pr109
+pyout_pyout_pr111
+pyout_pyout_pr149
+pyout_pyout_pr156
+pyout_pyout_pr86
+pyout_pyout_pr90
+pyout_pyout_pr98
+pypa_abi3audit_pr24
+pypa_installer_pr11
+pypa_installer_pr141
+pypa_installer_pr147
+pypa_installer_pr161
+pypa_installer_pr167
+pypa_installer_pr168
+pypa_installer_pr181
+pypa_installer_pr200
+pypa_installer_pr216
+pypa_installer_pr239
+pypa_installer_pr242
+pypa_installer_pr258
+pypa_installer_pr33
+pypa_installer_pr9
+pypa_installer_pr90
+pypa_installer_pr94
+pypa_installer_pr96
+pypa_pyproject-metadata_pr109
+pypa_pyproject-metadata_pr122
+pypa_pyproject-metadata_pr142
+pypa_pyproject-metadata_pr145
+pypa_pyproject-metadata_pr150
+pypa_pyproject-metadata_pr157
+pypa_pyproject-metadata_pr161
+pypa_pyproject-metadata_pr162
+pypa_pyproject-metadata_pr168
+pypa_pyproject-metadata_pr17
+pypa_pyproject-metadata_pr183
+pypa_pyproject-metadata_pr185
+pypa_pyproject-metadata_pr188
+pypa_pyproject-metadata_pr19
+pypa_pyproject-metadata_pr203
+pypa_pyproject-metadata_pr206
+pypa_pyproject-metadata_pr211
+pypa_pyproject-metadata_pr232
+pypa_pyproject-metadata_pr26
+pypa_pyproject-metadata_pr27
+pypa_pyproject-metadata_pr37
+pypa_pyproject-metadata_pr65
+pypa_pyproject-metadata_pr74
+pypa_pyproject-metadata_pr83
+pypa_pyproject-metadata_pr91
+pypa_twine_pr1024
+pypa_twine_pr107
+pypa_twine_pr112
+pypa_twine_pr1123
+pypa_twine_pr1131
+pypa_twine_pr1159
+pypa_twine_pr1172
+pypa_twine_pr1188
+pypa_twine_pr1191
+pypa_twine_pr121
+pypa_twine_pr138
+pypa_twine_pr152
+pypa_twine_pr162
+pypa_twine_pr243
+pypa_twine_pr248
+pypa_twine_pr249
+pypa_twine_pr252
+pypa_twine_pr319
+pypa_twine_pr322
+pypa_twine_pr337
+pypa_twine_pr365
+pypa_twine_pr368
+pypa_twine_pr395
+pypa_twine_pr397
+pypa_twine_pr405
+pypa_twine_pr412
+pypa_twine_pr427
+pypa_twine_pr428
+pypa_twine_pr440
+pypa_twine_pr441
+pypa_twine_pr452
+pypa_twine_pr460
+pypa_twine_pr472
+pypa_twine_pr477
+pypa_twine_pr484
+pypa_twine_pr488
+pypa_twine_pr509
+pypa_twine_pr510
+pypa_twine_pr525
+pypa_twine_pr58
+pypa_twine_pr62
+pypa_twine_pr66
+pypa_twine_pr68
+pypa_twine_pr72
+pypa_twine_pr73
+pypa_twine_pr79
+pypa_twine_pr82
+pypa_twine_pr83
+pypa_twine_pr86
+pypa_twine_pr94
+pypa_twine_pr97
+pysal_esda_pr274
+pysal_esda_pr293
+pysal_esda_pr295
+pysal_esda_pr296
+pysal_esda_pr326
+pysal_esda_pr327
+pysal_esda_pr355
+pysal_esda_pr356
+pysal_esda_pr359
+pysal_esda_pr360
+pysal_giddy_pr171
+pysal_giddy_pr84
+pysal_mapclassify_pr150
+pysal_mapclassify_pr153
+pysal_mapclassify_pr177
+pysal_mapclassify_pr181
+pysal_mapclassify_pr210
+pysal_mapclassify_pr216
+pysal_mapclassify_pr229
+pysal_mapclassify_pr274
+pysal_pointpats_pr102
+pysal_pointpats_pr104
+pysal_pointpats_pr111
+pysal_pointpats_pr116
+pysal_pointpats_pr118
+pysal_pointpats_pr145
+pysal_pointpats_pr147
+pysal_pointpats_pr149
+pysal_pointpats_pr159
+pysal_pointpats_pr45
+pysal_pointpats_pr48
+pysal_pointpats_pr56
+pysal_spaghetti_pr112
+pysal_spaghetti_pr116
+pysal_spaghetti_pr145
+pysal_spaghetti_pr167
+pysal_spaghetti_pr179
+pysal_spaghetti_pr181
+pysal_spaghetti_pr182
+pysal_spaghetti_pr185
+pysal_spaghetti_pr212
+pysal_spaghetti_pr349
+pysal_spaghetti_pr409
+pysal_spaghetti_pr471
+pysal_spaghetti_pr719
+pysal_spopt_pr294
+pysal_spopt_pr312
+pysal_spopt_pr319
+pytest-dev_pytest-bdd_pr335
+pytest-dev_pytest-bdd_pr398
+pytest-dev_pytest-bdd_pr415
+pytest-dev_pytest-bdd_pr431
+pytest-dev_pytest-bdd_pr445
+pytest-dev_pytest-bdd_pr503
+pytest-dev_pytest-bdd_pr534
+pytest-dev_pytest-bdd_pr539
+pytest-dev_pytest-freezer_pr4
+pytest-dev_pytest-subtests_pr131
+pytest-dev_pytest-subtests_pr139
+pytest-dev_pytest-subtests_pr169
+pytest-dev_pytest-subtests_pr190
+python-cas_python-cas_pr65
+python-control_python-control_pr1001
+python-control_python-control_pr1003
+python-control_python-control_pr1011
+python-control_python-control_pr1012
+python-control_python-control_pr1017
+python-control_python-control_pr1018
+python-control_python-control_pr1019
+python-control_python-control_pr1022
+python-control_python-control_pr1023
+python-control_python-control_pr1024
+python-control_python-control_pr1029
+python-control_python-control_pr1030
+python-control_python-control_pr1034
+python-control_python-control_pr1071
+python-control_python-control_pr1074
+python-control_python-control_pr1078
+python-control_python-control_pr1091
+python-control_python-control_pr1092
+python-control_python-control_pr1108
+python-control_python-control_pr790
+python-control_python-control_pr793
+python-control_python-control_pr794
+python-control_python-control_pr798
+python-control_python-control_pr809
+python-control_python-control_pr811
+python-control_python-control_pr826
+python-control_python-control_pr829
+python-control_python-control_pr834
+python-control_python-control_pr863
+python-control_python-control_pr877
+python-control_python-control_pr881
+python-control_python-control_pr883
+python-control_python-control_pr884
+python-control_python-control_pr885
+python-control_python-control_pr889
+python-control_python-control_pr892
+python-control_python-control_pr894
+python-control_python-control_pr900
+python-control_python-control_pr903
+python-control_python-control_pr913
+python-control_python-control_pr914
+python-control_python-control_pr920
+python-control_python-control_pr925
+python-control_python-control_pr937
+python-control_python-control_pr951
+python-control_python-control_pr953
+python-control_python-control_pr958
+python-control_python-control_pr965
+python-control_python-control_pr969
+python-control_python-control_pr971
+python-control_python-control_pr980
+python-control_python-control_pr989
+python-control_python-control_pr990
+python-control_python-control_pr994
+python-control_python-control_pr996
+python-desert_desert_pr123
+python-desert_desert_pr79
+python-distro_distro_pr106
+python-distro_distro_pr111
+python-distro_distro_pr113
+python-distro_distro_pr130
+python-distro_distro_pr145
+python-distro_distro_pr158
+python-distro_distro_pr181
+python-distro_distro_pr201
+python-distro_distro_pr247
+python-distro_distro_pr28
+python-distro_distro_pr30
+python-distro_distro_pr304
+python-distro_distro_pr305
+python-distro_distro_pr319
+python-distro_distro_pr39
+python-distro_distro_pr43
+python-distro_distro_pr45
+python-distro_distro_pr46
+python-distro_distro_pr51
+python-distro_distro_pr53
+python-distro_distro_pr66
+python-distro_distro_pr86
+python-distro_distro_pr89
+python-distro_distro_pr90
+python-distro_distro_pr93
+python-grimp_grimp_pr103
+python-grimp_grimp_pr17
+python-grimp_grimp_pr24
+python-grimp_grimp_pr37
+python-grimp_grimp_pr57
+python-grimp_grimp_pr66
+python-grimp_grimp_pr74
+python-grimp_grimp_pr79
+python-grimp_grimp_pr81
+python-grimp_grimp_pr93
+python-grimp_grimp_pr99
+python-hyper_hpack_pr12
+python-hyper_hpack_pr26
+python-hyper_hpack_pr263
+python-hyper_hpack_pr28
+python-hyper_hpack_pr31
+python-hyper_hpack_pr35
+python-hyper_hpack_pr37
+python-hyper_hpack_pr38
+python-hyper_hpack_pr4
+python-hyper_hpack_pr63
+python-hyper_hpack_pr64
+python-hyper_hyperframe_pr14
+python-hyper_hyperframe_pr147
+python-hyper_hyperframe_pr151
+python-hyper_hyperframe_pr163
+python-hyper_hyperframe_pr2
+python-hyper_hyperframe_pr9
+python-hyper_priority_pr36
+python-hyper_wsproto_pr148
+python-hyper_wsproto_pr149
+python-hyper_wsproto_pr36
+python-hyper_wsproto_pr40
+python-hyper_wsproto_pr42
+python-jsonschema_jsonschema_pr106
+python-jsonschema_jsonschema_pr123
+python-jsonschema_jsonschema_pr203
+python-lsp_pylsp-mypy_pr10
+python-lsp_pylsp-mypy_pr100
+python-lsp_pylsp-mypy_pr13
+python-lsp_pylsp-mypy_pr24
+python-lsp_pylsp-mypy_pr40
+python-lsp_pylsp-mypy_pr42
+python-lsp_pylsp-mypy_pr53
+python-lsp_python-lsp-ruff_pr109
+python-lsp_python-lsp-ruff_pr13
+python-lsp_python-lsp-ruff_pr4
+python-lsp_python-lsp-ruff_pr54
+python-lsp_python-lsp-ruff_pr6
+python-lsp_python-lsp-ruff_pr60
+python-lsp_python-lsp-ruff_pr62
+python-lsp_python-lsp-ruff_pr64
+python-lsp_python-lsp-ruff_pr66
+python-lsp_python-lsp-ruff_pr80
+python-lsp_python-lsp-ruff_pr94
+python-lsp_python-lsp-ruff_pr97
+python-openapi_openapi-core_pr418
+python-openapi_openapi-core_pr421
+python-openapi_openapi-core_pr422
+python-openapi_openapi-core_pr423
+python-openapi_openapi-core_pr429
+python-openapi_openapi-core_pr431
+python-openapi_openapi-core_pr432
+python-openapi_openapi-core_pr433
+python-openapi_openapi-core_pr434
+python-openapi_openapi-core_pr462
+python-openapi_openapi-core_pr468
+python-openapi_openapi-core_pr473
+python-openapi_openapi-core_pr482
+python-openapi_openapi-core_pr489
+python-openapi_openapi-core_pr491
+python-openapi_openapi-core_pr512
+python-openapi_openapi-core_pr529
+python-openapi_openapi-core_pr553
+python-openapi_openapi-core_pr555
+python-openapi_openapi-core_pr562
+python-openapi_openapi-core_pr646
+python-openapi_openapi-core_pr648
+python-openapi_openapi-core_pr680
+python-openapi_openapi-core_pr686
+python-openapi_openapi-core_pr691
+python-openapi_openapi-core_pr697
+python-openapi_openapi-core_pr701
+python-openapi_openapi-core_pr709
+python-openapi_openapi-core_pr738
+python-openapi_openapi-core_pr779
+python-openapi_openapi-core_pr802
+python-openapi_openapi-core_pr814
+python-openapi_openapi-core_pr830
+python-openapi_openapi-core_pr853
+python-openapi_openapi-core_pr859
+python-openapi_openapi-core_pr876
+python-openapi_openapi-schema-validator_pr135
+python-openapi_openapi-schema-validator_pr26
+python-openapi_openapi-schema-validator_pr30
+python-openapi_openapi-schema-validator_pr38
+python-openapi_openapi-schema-validator_pr52
+python-openapi_openapi-schema-validator_pr57
+python-openapi_openapi-schema-validator_pr59
+python-openapi_openapi-schema-validator_pr67
+python-openapi_openapi-spec-validator_pr137
+python-openapi_openapi-spec-validator_pr154
+python-openapi_openapi-spec-validator_pr232
+python-openapi_openapi-spec-validator_pr24
+python-openapi_openapi-spec-validator_pr25
+python-openapi_openapi-spec-validator_pr255
+python-openapi_openapi-spec-validator_pr28
+python-openapi_openapi-spec-validator_pr286
+python-openapi_openapi-spec-validator_pr291
+python-openapi_openapi-spec-validator_pr30
+python-openapi_openapi-spec-validator_pr35
+python-openapi_openapi-spec-validator_pr37
+python-openapi_openapi-spec-validator_pr4
+python-openapi_openapi-spec-validator_pr8
+python-parsy_parsy_pr3
+python-parsy_parsy_pr45
+python-poetry_cleo_pr10
+python-poetry_cleo_pr102
+python-poetry_cleo_pr112
+python-poetry_cleo_pr118
+python-poetry_cleo_pr13
+python-poetry_cleo_pr132
+python-poetry_cleo_pr135
+python-poetry_cleo_pr148
+python-poetry_cleo_pr157
+python-poetry_cleo_pr16
+python-poetry_cleo_pr166
+python-poetry_cleo_pr194
+python-poetry_cleo_pr199
+python-poetry_cleo_pr203
+python-poetry_cleo_pr208
+python-poetry_cleo_pr21
+python-poetry_cleo_pr214
+python-poetry_cleo_pr217
+python-poetry_cleo_pr225
+python-poetry_cleo_pr236
+python-poetry_cleo_pr240
+python-poetry_cleo_pr27
+python-poetry_cleo_pr29
+python-poetry_cleo_pr3
+python-poetry_cleo_pr31
+python-poetry_cleo_pr313
+python-poetry_cleo_pr343
+python-poetry_cleo_pr345
+python-poetry_cleo_pr358
+python-poetry_cleo_pr382
+python-poetry_cleo_pr413
+python-poetry_cleo_pr512
+python-poetry_cleo_pr8
+python-poetry_cleo_pr96
+python-poetry_cleo_pr97
+python-poetry_poetry-core_pr100
+python-poetry_poetry-core_pr101
+python-poetry_poetry-core_pr102
+python-poetry_poetry-core_pr103
+python-poetry_poetry-core_pr105
+python-poetry_poetry-core_pr108
+python-poetry_poetry-core_pr114
+python-poetry_poetry-core_pr118
+python-poetry_poetry-core_pr122
+python-poetry_poetry-core_pr128
+python-poetry_poetry-core_pr131
+python-poetry_poetry-core_pr134
+python-poetry_poetry-core_pr138
+python-poetry_poetry-core_pr142
+python-poetry_poetry-core_pr143
+python-poetry_poetry-core_pr148
+python-poetry_poetry-core_pr150
+python-poetry_poetry-core_pr153
+python-poetry_poetry-core_pr155
+python-poetry_poetry-core_pr157
+python-poetry_poetry-core_pr158
+python-poetry_poetry-core_pr159
+python-poetry_poetry-core_pr162
+python-poetry_poetry-core_pr167
+python-poetry_poetry-core_pr170
+python-poetry_poetry-core_pr171
+python-poetry_poetry-core_pr178
+python-poetry_poetry-core_pr182
+python-poetry_poetry-core_pr183
+python-poetry_poetry-core_pr186
+python-poetry_poetry-core_pr188
+python-poetry_poetry-core_pr192
+python-poetry_poetry-core_pr198
+python-poetry_poetry-core_pr201
+python-poetry_poetry-core_pr202
+python-poetry_poetry-core_pr204
+python-poetry_poetry-core_pr208
+python-poetry_poetry-core_pr211
+python-poetry_poetry-core_pr214
+python-poetry_poetry-core_pr219
+python-poetry_poetry-core_pr220
+python-poetry_poetry-core_pr221
+python-poetry_poetry-core_pr226
+python-poetry_poetry-core_pr228
+python-poetry_poetry-core_pr231
+python-poetry_poetry-core_pr233
+python-poetry_poetry-core_pr238
+python-poetry_poetry-core_pr239
+python-poetry_poetry-core_pr240
+python-poetry_poetry-core_pr241
+python-poetry_poetry-core_pr243
+python-poetry_poetry-core_pr248
+python-poetry_poetry-core_pr255
+python-poetry_poetry-core_pr264
+python-poetry_poetry-core_pr272
+python-poetry_poetry-core_pr274
+python-poetry_poetry-core_pr276
+python-poetry_poetry-core_pr280
+python-poetry_poetry-core_pr282
+python-poetry_poetry-core_pr283
+python-poetry_poetry-core_pr286
+python-poetry_poetry-core_pr290
+python-poetry_poetry-core_pr294
+python-poetry_poetry-core_pr299
+python-poetry_poetry-core_pr30
+python-poetry_poetry-core_pr301
+python-poetry_poetry-core_pr302
+python-poetry_poetry-core_pr308
+python-poetry_poetry-core_pr316
+python-poetry_poetry-core_pr324
+python-poetry_poetry-core_pr325
+python-poetry_poetry-core_pr333
+python-poetry_poetry-core_pr341
+python-poetry_poetry-core_pr345
+python-poetry_poetry-core_pr352
+python-poetry_poetry-core_pr357
+python-poetry_poetry-core_pr36
+python-poetry_poetry-core_pr365
+python-poetry_poetry-core_pr368
+python-poetry_poetry-core_pr371
+python-poetry_poetry-core_pr380
+python-poetry_poetry-core_pr381
+python-poetry_poetry-core_pr382
+python-poetry_poetry-core_pr385
+python-poetry_poetry-core_pr388
+python-poetry_poetry-core_pr390
+python-poetry_poetry-core_pr391
+python-poetry_poetry-core_pr393
+python-poetry_poetry-core_pr395
+python-poetry_poetry-core_pr398
+python-poetry_poetry-core_pr400
+python-poetry_poetry-core_pr402
+python-poetry_poetry-core_pr405
+python-poetry_poetry-core_pr407
+python-poetry_poetry-core_pr411
+python-poetry_poetry-core_pr415
+python-poetry_poetry-core_pr417
+python-poetry_poetry-core_pr433
+python-poetry_poetry-core_pr436
+python-poetry_poetry-core_pr437
+python-poetry_poetry-core_pr44
+python-poetry_poetry-core_pr446
+python-poetry_poetry-core_pr447
+python-poetry_poetry-core_pr448
+python-poetry_poetry-core_pr456
+python-poetry_poetry-core_pr458
+python-poetry_poetry-core_pr460
+python-poetry_poetry-core_pr461
+python-poetry_poetry-core_pr462
+python-poetry_poetry-core_pr463
+python-poetry_poetry-core_pr466
+python-poetry_poetry-core_pr467
+python-poetry_poetry-core_pr469
+python-poetry_poetry-core_pr473
+python-poetry_poetry-core_pr475
+python-poetry_poetry-core_pr482
+python-poetry_poetry-core_pr483
+python-poetry_poetry-core_pr484
+python-poetry_poetry-core_pr486
+python-poetry_poetry-core_pr487
+python-poetry_poetry-core_pr49
+python-poetry_poetry-core_pr495
+python-poetry_poetry-core_pr497
+python-poetry_poetry-core_pr500
+python-poetry_poetry-core_pr505
+python-poetry_poetry-core_pr51
+python-poetry_poetry-core_pr510
+python-poetry_poetry-core_pr512
+python-poetry_poetry-core_pr513
+python-poetry_poetry-core_pr514
+python-poetry_poetry-core_pr515
+python-poetry_poetry-core_pr517
+python-poetry_poetry-core_pr518
+python-poetry_poetry-core_pr520
+python-poetry_poetry-core_pr527
+python-poetry_poetry-core_pr528
+python-poetry_poetry-core_pr53
+python-poetry_poetry-core_pr532
+python-poetry_poetry-core_pr534
+python-poetry_poetry-core_pr535
+python-poetry_poetry-core_pr537
+python-poetry_poetry-core_pr54
+python-poetry_poetry-core_pr540
+python-poetry_poetry-core_pr542
+python-poetry_poetry-core_pr543
+python-poetry_poetry-core_pr546
+python-poetry_poetry-core_pr549
+python-poetry_poetry-core_pr550
+python-poetry_poetry-core_pr56
+python-poetry_poetry-core_pr561
+python-poetry_poetry-core_pr569
+python-poetry_poetry-core_pr57
+python-poetry_poetry-core_pr570
+python-poetry_poetry-core_pr578
+python-poetry_poetry-core_pr582
+python-poetry_poetry-core_pr591
+python-poetry_poetry-core_pr593
+python-poetry_poetry-core_pr60
+python-poetry_poetry-core_pr602
+python-poetry_poetry-core_pr607
+python-poetry_poetry-core_pr608
+python-poetry_poetry-core_pr609
+python-poetry_poetry-core_pr611
+python-poetry_poetry-core_pr620
+python-poetry_poetry-core_pr629
+python-poetry_poetry-core_pr633
+python-poetry_poetry-core_pr634
+python-poetry_poetry-core_pr636
+python-poetry_poetry-core_pr641
+python-poetry_poetry-core_pr648
+python-poetry_poetry-core_pr661
+python-poetry_poetry-core_pr664
+python-poetry_poetry-core_pr666
+python-poetry_poetry-core_pr670
+python-poetry_poetry-core_pr672
+python-poetry_poetry-core_pr675
+python-poetry_poetry-core_pr677
+python-poetry_poetry-core_pr69
+python-poetry_poetry-core_pr690
+python-poetry_poetry-core_pr70
+python-poetry_poetry-core_pr710
+python-poetry_poetry-core_pr722
+python-poetry_poetry-core_pr726
+python-poetry_poetry-core_pr729
+python-poetry_poetry-core_pr732
+python-poetry_poetry-core_pr734
+python-poetry_poetry-core_pr74
+python-poetry_poetry-core_pr75
+python-poetry_poetry-core_pr752
+python-poetry_poetry-core_pr754
+python-poetry_poetry-core_pr762
+python-poetry_poetry-core_pr766
+python-poetry_poetry-core_pr767
+python-poetry_poetry-core_pr771
+python-poetry_poetry-core_pr775
+python-poetry_poetry-core_pr78
+python-poetry_poetry-core_pr781
+python-poetry_poetry-core_pr783
+python-poetry_poetry-core_pr79
+python-poetry_poetry-core_pr794
+python-poetry_poetry-core_pr805
+python-poetry_poetry-core_pr807
+python-poetry_poetry-core_pr809
+python-poetry_poetry-core_pr81
+python-poetry_poetry-core_pr811
+python-poetry_poetry-core_pr816
+python-poetry_poetry-core_pr817
+python-poetry_poetry-core_pr818
+python-poetry_poetry-core_pr821
+python-poetry_poetry-core_pr823
+python-poetry_poetry-core_pr826
+python-poetry_poetry-core_pr827
+python-poetry_poetry-core_pr830
+python-poetry_poetry-core_pr832
+python-poetry_poetry-core_pr833
+python-poetry_poetry-core_pr835
+python-poetry_poetry-core_pr837
+python-poetry_poetry-core_pr838
+python-poetry_poetry-core_pr84
+python-poetry_poetry-core_pr841
+python-poetry_poetry-core_pr842
+python-poetry_poetry-core_pr845
+python-poetry_poetry-core_pr846
+python-poetry_poetry-core_pr849
+python-poetry_poetry-core_pr851
+python-poetry_poetry-core_pr853
+python-poetry_poetry-core_pr857
+python-poetry_poetry-core_pr858
+python-poetry_poetry-core_pr859
+python-poetry_poetry-core_pr86
+python-poetry_poetry-core_pr860
+python-poetry_poetry-core_pr868
+python-poetry_poetry-core_pr870
+python-poetry_poetry-core_pr874
+python-poetry_poetry-core_pr875
+python-poetry_poetry-core_pr877
+python-poetry_poetry-core_pr888
+python-poetry_poetry-core_pr891
+python-poetry_poetry-core_pr893
+python-poetry_poetry-core_pr90
+python-poetry_poetry-core_pr95
+python-poetry_poetry-plugin-export_pr103
+python-poetry_poetry-plugin-export_pr109
+python-poetry_poetry-plugin-export_pr130
+python-poetry_poetry-plugin-export_pr139
+python-poetry_poetry-plugin-export_pr209
+python-poetry_poetry-plugin-export_pr241
+python-poetry_poetry-plugin-export_pr258
+python-poetry_poetry-plugin-export_pr270
+python-scim_scim2-models_pr102
+python-scim_scim2-models_pr28
+python-scim_scim2-models_pr30
+python-scim_scim2-models_pr32
+python-scim_scim2-models_pr35
+python-scim_scim2-models_pr38
+python-scim_scim2-models_pr40
+python-scim_scim2-models_pr41
+python-scim_scim2-models_pr44
+python-scim_scim2-models_pr47
+python-scim_scim2-models_pr49
+python-scim_scim2-models_pr52
+python-scim_scim2-models_pr53
+python-scim_scim2-models_pr55
+python-scim_scim2-models_pr66
+python-scim_scim2-models_pr67
+python-scim_scim2-models_pr69
+python-scim_scim2-models_pr78
+python-scim_scim2-models_pr79
+python-scim_scim2-models_pr8
+python-scim_scim2-models_pr80
+python-scim_scim2-models_pr81
+python-scim_scim2-models_pr87
+python-scim_scim2-models_pr89
+python-scim_scim2-models_pr9
+python-scim_scim2-models_pr90
+python-scim_scim2-models_pr95
+python-scim_scim2-models_pr96
+python-scim_scim2-models_pr97
+python-scim_scim2-models_pr98
+python-semver_python-semver_pr124
+python-semver_python-semver_pr132
+python-semver_python-semver_pr140
+python-semver_python-semver_pr141
+python-semver_python-semver_pr152
+python-semver_python-semver_pr193
+python-semver_python-semver_pr198
+python-semver_python-semver_pr209
+python-semver_python-semver_pr22
+python-semver_python-semver_pr228
+python-semver_python-semver_pr23
+python-semver_python-semver_pr243
+python-semver_python-semver_pr245
+python-semver_python-semver_pr254
+python-semver_python-semver_pr264
+python-semver_python-semver_pr292
+python-semver_python-semver_pr318
+python-semver_python-semver_pr320
+python-semver_python-semver_pr359
+python-semver_python-semver_pr362
+python-semver_python-semver_pr365
+python-semver_python-semver_pr368
+python-semver_python-semver_pr388
+python-semver_python-semver_pr389
+python-semver_python-semver_pr402
+python-semver_python-semver_pr411
+python-semver_python-semver_pr420
+python-semver_python-semver_pr439
+python-semver_python-semver_pr445
+python-semver_python-semver_pr462
+python-semver_python-semver_pr6
+python-semver_python-semver_pr88
+python-semver_python-semver_pr97
+python-semver_python-semver_pr99
+python-tap_tappy_pr101
+python-tap_tappy_pr108
+python-tap_tappy_pr132
+python-tap_tappy_pr163
+python-tap_tappy_pr32
+python-tap_tappy_pr69
+python-tap_tappy_pr70
+python-tap_tappy_pr75
+python-tap_tappy_pr79
+python-tap_tappy_pr80
+python-tap_tappy_pr9
+python-tap_tappy_pr92
+python-trio_flake8-async_pr10
+python-trio_flake8-async_pr100
+python-trio_flake8-async_pr107
+python-trio_flake8-async_pr108
+python-trio_flake8-async_pr109
+python-trio_flake8-async_pr119
+python-trio_flake8-async_pr125
+python-trio_flake8-async_pr126
+python-trio_flake8-async_pr130
+python-trio_flake8-async_pr140
+python-trio_flake8-async_pr143
+python-trio_flake8-async_pr145
+python-trio_flake8-async_pr146
+python-trio_flake8-async_pr149
+python-trio_flake8-async_pr150
+python-trio_flake8-async_pr151
+python-trio_flake8-async_pr154
+python-trio_flake8-async_pr157
+python-trio_flake8-async_pr16
+python-trio_flake8-async_pr161
+python-trio_flake8-async_pr163
+python-trio_flake8-async_pr188
+python-trio_flake8-async_pr20
+python-trio_flake8-async_pr203
+python-trio_flake8-async_pr206
+python-trio_flake8-async_pr22
+python-trio_flake8-async_pr221
+python-trio_flake8-async_pr232
+python-trio_flake8-async_pr242
+python-trio_flake8-async_pr244
+python-trio_flake8-async_pr25
+python-trio_flake8-async_pr254
+python-trio_flake8-async_pr255
+python-trio_flake8-async_pr265
+python-trio_flake8-async_pr27
+python-trio_flake8-async_pr279
+python-trio_flake8-async_pr287
+python-trio_flake8-async_pr292
+python-trio_flake8-async_pr296
+python-trio_flake8-async_pr303
+python-trio_flake8-async_pr316
+python-trio_flake8-async_pr317
+python-trio_flake8-async_pr32
+python-trio_flake8-async_pr321
+python-trio_flake8-async_pr323
+python-trio_flake8-async_pr326
+python-trio_flake8-async_pr327
+python-trio_flake8-async_pr34
+python-trio_flake8-async_pr356
+python-trio_flake8-async_pr363
+python-trio_flake8-async_pr374
+python-trio_flake8-async_pr376
+python-trio_flake8-async_pr379
+python-trio_flake8-async_pr42
+python-trio_flake8-async_pr44
+python-trio_flake8-async_pr49
+python-trio_flake8-async_pr5
+python-trio_flake8-async_pr67
+python-trio_flake8-async_pr68
+python-trio_flake8-async_pr75
+python-trio_flake8-async_pr76
+python-trio_flake8-async_pr78
+python-trio_flake8-async_pr8
+python-trio_flake8-async_pr81
+python-trio_flake8-async_pr86
+python-trio_flake8-async_pr9
+python-trio_flake8-async_pr90
+python-trio_flake8-async_pr91
+python-trio_flake8-async_pr98
+python-trio_trio-websocket_pr183
+python-validators_validators_pr184
+python-validators_validators_pr201
+python-validators_validators_pr225
+python-validators_validators_pr231
+python-validators_validators_pr232
+python-validators_validators_pr235
+python-validators_validators_pr236
+python-validators_validators_pr239
+python-validators_validators_pr240
+python-validators_validators_pr241
+python-validators_validators_pr249
+python-validators_validators_pr252
+python-validators_validators_pr262
+python-validators_validators_pr264
+python-validators_validators_pr295
+python-validators_validators_pr297
+python-validators_validators_pr308
+python-validators_validators_pr334
+python-validators_validators_pr339
+python-validators_validators_pr347
+python-validators_validators_pr350
+python-validators_validators_pr351
+python-validators_validators_pr353
+python-validators_validators_pr354
+python-validators_validators_pr356
+python-validators_validators_pr357
+python-validators_validators_pr359
+python-validators_validators_pr367
+python-validators_validators_pr374
+python-validators_validators_pr379
+python-validators_validators_pr383
+python-validators_validators_pr384
+python-validators_validators_pr386
+python-validators_validators_pr387
+python-validators_validators_pr389
+python-validators_validators_pr409
+python-validators_validators_pr415
+python-validators_validators_pr417
+python-visualization_branca_pr11
+python-visualization_branca_pr39
+python-visualization_branca_pr4
+python-websockets_websockets_pr1535
+python-websockets_websockets_pr1541
+python-websockets_websockets_pr1543
+python-websockets_websockets_pr1585
+pythonnet_clr-loader_pr32
+pythonnet_clr-loader_pr43
+pytransitions_transitions_pr109
+pytransitions_transitions_pr11
+pytransitions_transitions_pr114
+pytransitions_transitions_pr12
+pytransitions_transitions_pr136
+pytransitions_transitions_pr143
+pytransitions_transitions_pr145
+pytransitions_transitions_pr154
+pytransitions_transitions_pr158
+pytransitions_transitions_pr172
+pytransitions_transitions_pr176
+pytransitions_transitions_pr179
+pytransitions_transitions_pr180
+pytransitions_transitions_pr184
+pytransitions_transitions_pr193
+pytransitions_transitions_pr197
+pytransitions_transitions_pr2
+pytransitions_transitions_pr217
+pytransitions_transitions_pr23
+pytransitions_transitions_pr239
+pytransitions_transitions_pr244
+pytransitions_transitions_pr254
+pytransitions_transitions_pr266
+pytransitions_transitions_pr317
+pytransitions_transitions_pr357
+pytransitions_transitions_pr378
+pytransitions_transitions_pr386
+pytransitions_transitions_pr44
+pytransitions_transitions_pr47
+pytransitions_transitions_pr61
+pytransitions_transitions_pr662
+pytransitions_transitions_pr676
+pytransitions_transitions_pr694
+pytransitions_transitions_pr712
+pytransitions_transitions_pr73
+pytransitions_transitions_pr8
+pytransitions_transitions_pr80
+pytransitions_transitions_pr88
+pytroll_donfig_pr22
+pytroll_donfig_pr49
+pytroll_donfig_pr59
+pytroll_donfig_pr60
+pytroll_donfig_pr63
+pyupio_dparse_pr18
+pyupio_dparse_pr68
+pyupio_dparse_pr76
+pyusb_pyusb_pr479
+pyvisa_pyvisa-py_pr269
+pyvisa_pyvisa-py_pr292
+pyvisa_pyvisa-py_pr294
+pyvisa_pyvisa-py_pr335
+pyvisa_pyvisa-py_pr349
+pyvisa_pyvisa-py_pr350
+pyvisa_pyvisa-py_pr352
+pyvisa_pyvisa-py_pr362
+pyvisa_pyvisa-py_pr379
+pyvisa_pyvisa-py_pr386
+pyvisa_pyvisa-py_pr402
+pyvisa_pyvisa-py_pr417
+pyvisa_pyvisa-py_pr430
+pyvisa_pyvisa-py_pr484
+pyvisa_pyvisa-py_pr496
+pyvisa_pyvisa-py_pr523
+pyvisa_pyvisa-py_pr530
+pyvisa_pyvisa-sim_pr75
+pyvisa_pyvisa-sim_pr78
+pyvisa_pyvisa-sim_pr96
+pyvisa_pyvisa_pr143
+pyvisa_pyvisa_pr151
+pyvisa_pyvisa_pr156
+pyvisa_pyvisa_pr172
+pyvisa_pyvisa_pr299
+pyvisa_pyvisa_pr340
+pyvisa_pyvisa_pr341
+pyvisa_pyvisa_pr349
+pyvisa_pyvisa_pr363
+pyvisa_pyvisa_pr391
+pyvisa_pyvisa_pr486
+pyvisa_pyvisa_pr509
+pyvisa_pyvisa_pr536
+pyvisa_pyvisa_pr540
+pyvisa_pyvisa_pr545
+pyvisa_pyvisa_pr547
+pyvisa_pyvisa_pr550
+pyvisa_pyvisa_pr552
+pyvisa_pyvisa_pr581
+pyvisa_pyvisa_pr598
+pyvisa_pyvisa_pr600
+pyvisa_pyvisa_pr653
+pyvisa_pyvisa_pr697
+pyvisa_pyvisa_pr699
+pyvisa_pyvisa_pr725
+pyvisa_pyvisa_pr733
+pyvisa_pyvisa_pr753
+pyvisa_pyvisa_pr774
+pyvisa_pyvisa_pr776
+pyvisa_pyvisa_pr787
+pyvisa_pyvisa_pr811
+pyvisa_pyvisa_pr859
+pyvisa_pyvisa_pr887
+pyvisa_pyvisa_pr892
+pyvisa_pyvisa_pr914
+pyvista_pyminiply_pr14
+pyvista_pyminiply_pr16
+qiskit-community_qiskit-ionq_pr102
+qiskit-community_qiskit-ionq_pr107
+qiskit-community_qiskit-ionq_pr108
+qiskit-community_qiskit-ionq_pr109
+qiskit-community_qiskit-ionq_pr111
+qiskit-community_qiskit-ionq_pr114
+qiskit-community_qiskit-ionq_pr124
+qiskit-community_qiskit-ionq_pr132
+qiskit-community_qiskit-ionq_pr135
+qiskit-community_qiskit-ionq_pr142
+qiskit-community_qiskit-ionq_pr144
+qiskit-community_qiskit-ionq_pr154
+qiskit-community_qiskit-ionq_pr155
+qiskit-community_qiskit-ionq_pr166
+qiskit-community_qiskit-ionq_pr174
+qiskit-community_qiskit-ionq_pr182
+qiskit-community_qiskit-ionq_pr185
+qiskit-community_qiskit-ionq_pr191
+qiskit-community_qiskit-ionq_pr196
+qiskit-community_qiskit-ionq_pr200
+qiskit-community_qiskit-ionq_pr202
+qiskit-community_qiskit-ionq_pr203
+qiskit-community_qiskit-ionq_pr208
+qiskit-community_qiskit-ionq_pr214
+qiskit-community_qiskit-ionq_pr223
+qiskit-community_qiskit-ionq_pr232
+qiskit-community_qiskit-ionq_pr236
+qiskit-community_qiskit-ionq_pr44
+qiskit-community_qiskit-ionq_pr51
+qiskit-community_qiskit-ionq_pr57
+qiskit-community_qiskit-ionq_pr82
+qiskit-community_qiskit-ionq_pr89
+qiskit-community_qiskit-ionq_pr94
+qiskit-community_qiskit-ionq_pr96
+qntm_greenery_pr110
+qntm_greenery_pr30
+qntm_greenery_pr53
+qntm_greenery_pr60
+qntm_greenery_pr65
+qntm_greenery_pr68
+qntm_greenery_pr69
+qntm_greenery_pr71
+qntm_greenery_pr72
+qntm_greenery_pr85
+qntm_greenery_pr87
+qntm_greenery_pr89
+qntm_greenery_pr90
+qntm_greenery_pr91
+qntm_greenery_pr98
+qntm_greenery_pr99
+qua-platform_py-qua-tools_pr196
+quantumgizmos_ldpc_pr46
+quantumgizmos_ldpc_pr50
+quintoandar_hive-metastore-client_pr13
+quintoandar_hive-metastore-client_pr30
+quintoandar_hive-metastore-client_pr37
+quintoandar_hive-metastore-client_pr39
+quintoandar_hive-metastore-client_pr42
+quintoandar_hive-metastore-client_pr43
+quintoandar_hive-metastore-client_pr49
+quintoandar_hive-metastore-client_pr55
+quintoandar_hive-metastore-client_pr64
+qulacs_qulacs_pr179
+r1chardj0n3s_parse_pr103
+r1chardj0n3s_parse_pr115
+r1chardj0n3s_parse_pr124
+r1chardj0n3s_parse_pr128
+r1chardj0n3s_parse_pr132
+r1chardj0n3s_parse_pr134
+r1chardj0n3s_parse_pr139
+r1chardj0n3s_parse_pr174
+r1chardj0n3s_parse_pr178
+r1chardj0n3s_parse_pr184
+r1chardj0n3s_parse_pr23
+r1chardj0n3s_parse_pr24
+r1chardj0n3s_parse_pr36
+r1chardj0n3s_parse_pr38
+r1chardj0n3s_parse_pr67
+r1chardj0n3s_parse_pr74
+r1chardj0n3s_parse_pr75
+r1chardj0n3s_parse_pr81
+r1chardj0n3s_parse_pr95
+r1chardj0n3s_parse_pr96
+radish-bdd_radish_pr303
+radish-bdd_radish_pr307
+radish-bdd_radish_pr309
+radish-bdd_radish_pr383
+radish-bdd_radish_pr391
+radish-bdd_radish_pr393
+radish-bdd_radish_pr395
+radish-bdd_radish_pr426
+radish-bdd_radish_pr447
+radish-bdd_radish_pr451
+radish-bdd_radish_pr457
+radish-bdd_radish_pr472
+radish-bdd_radish_pr486
+radish-bdd_radish_pr488
+raimon49_pip-licenses_pr102
+raimon49_pip-licenses_pr127
+raimon49_pip-licenses_pr136
+raimon49_pip-licenses_pr150
+raimon49_pip-licenses_pr152
+raimon49_pip-licenses_pr153
+raimon49_pip-licenses_pr158
+raimon49_pip-licenses_pr162
+raimon49_pip-licenses_pr173
+raimon49_pip-licenses_pr56
+raimon49_pip-licenses_pr58
+raimon49_pip-licenses_pr62
+raimon49_pip-licenses_pr64
+raimon49_pip-licenses_pr68
+raimon49_pip-licenses_pr76
+raimon49_pip-licenses_pr83
+raimon49_pip-licenses_pr86
+raimon49_pip-licenses_pr99
+ramonhagenaars_jsons_pr36
+ramonhagenaars_jsons_pr58
+ramonhagenaars_jsons_pr59
+ramonhagenaars_jsons_pr7
+ramonhagenaars_jsons_pr73
+ramonhagenaars_typish_pr10
+ramonhagenaars_typish_pr27
+ramonhagenaars_typish_pr5
+ramonhagenaars_typish_pr9
+raphaelm_python-sepaxml_pr30
+raphaelm_python-sepaxml_pr36
+raphaelm_python-sepaxml_pr5
+raphaelm_python-sepaxml_pr64
+raphaelm_python-sepaxml_pr9
+rasahq_rasa-sdk_pr103
+rasahq_rasa-sdk_pr105
+rasahq_rasa-sdk_pr18
+rasahq_rasa-sdk_pr20
+rasahq_rasa-sdk_pr38
+rasahq_rasa-sdk_pr45
+rasahq_rasa-sdk_pr46
+rasahq_rasa-sdk_pr47
+rasahq_rasa-sdk_pr49
+rasahq_rasa-sdk_pr57
+rasahq_rasa-sdk_pr65
+rasahq_rasa-sdk_pr67
+rasahq_rasa-sdk_pr74
+rasahq_rasa-sdk_pr88
+rasterio_affine_pr11
+rasterio_affine_pr117
+rasterio_affine_pr119
+rasterio_affine_pr121
+rasterio_affine_pr126
+rasterio_affine_pr20
+rasterio_affine_pr28
+rasterio_affine_pr35
+rasterio_affine_pr41
+rasterio_affine_pr52
+rasterio_affine_pr7
+rasterio_affine_pr72
+rasterio_affine_pr92
+rasterio_affine_pr96
+ratoaq2_knowit_pr203
+rayokota_jsonata-python_pr14
+rayokota_jsonata-python_pr23
+rbw_pysnow_pr11
+rbw_pysnow_pr18
+rbw_pysnow_pr20
+rbw_pysnow_pr24
+rbw_pysnow_pr41
+rbw_pysnow_pr46
+rbw_pysnow_pr48
+rbw_pysnow_pr50
+rbw_pysnow_pr52
+rbw_pysnow_pr54
+rbw_pysnow_pr59
+rbw_pysnow_pr67
+rbw_pysnow_pr71
+rbw_pysnow_pr73
+rbw_pysnow_pr82
+rbw_pysnow_pr89
+rbw_pysnow_pr91
+readthedocs_sphinx-autoapi_pr284
+readthedocs_sphinx-autoapi_pr353
+readthedocs_sphinx-autoapi_pr362
+readthedocs_sphinx-autoapi_pr423
+readthedocs_sphinx-autoapi_pr497
+readthedocs_sphinx-autoapi_pr538
+recognai_spacy-wordnet_pr11
+reef-technologies_logfury_pr9
+regebro_svg.path_pr108
+regebro_svg.path_pr110
+regebro_svg.path_pr111
+regebro_svg.path_pr73
+regebro_svg.path_pr77
+regebro_svg.path_pr83
+regebro_svg.path_pr92
+regebro_svg.path_pr99
+regebro_tzlocal_pr114
+regebro_tzlocal_pr116
+regebro_tzlocal_pr145
+regionmask_regionmask_pr18
+regionmask_regionmask_pr250
+regionmask_regionmask_pr255
+regionmask_regionmask_pr261
+regionmask_regionmask_pr267
+regionmask_regionmask_pr271
+regionmask_regionmask_pr280
+regionmask_regionmask_pr283
+regionmask_regionmask_pr289
+regionmask_regionmask_pr292
+regionmask_regionmask_pr294
+regionmask_regionmask_pr296
+regionmask_regionmask_pr297
+regionmask_regionmask_pr298
+regionmask_regionmask_pr305
+regionmask_regionmask_pr320
+regionmask_regionmask_pr321
+regionmask_regionmask_pr335
+regionmask_regionmask_pr361
+regionmask_regionmask_pr362
+regionmask_regionmask_pr369
+regionmask_regionmask_pr371
+regionmask_regionmask_pr373
+regionmask_regionmask_pr375
+regionmask_regionmask_pr378
+regionmask_regionmask_pr380
+regionmask_regionmask_pr381
+regionmask_regionmask_pr393
+regionmask_regionmask_pr396
+regionmask_regionmask_pr403
+regionmask_regionmask_pr405
+regionmask_regionmask_pr406
+regionmask_regionmask_pr41
+regionmask_regionmask_pr414
+regionmask_regionmask_pr417
+regionmask_regionmask_pr424
+regionmask_regionmask_pr425
+regionmask_regionmask_pr427
+regionmask_regionmask_pr428
+regionmask_regionmask_pr429
+regionmask_regionmask_pr436
+regionmask_regionmask_pr439
+regionmask_regionmask_pr44
+regionmask_regionmask_pr442
+regionmask_regionmask_pr45
+regionmask_regionmask_pr454
+regionmask_regionmask_pr466
+regionmask_regionmask_pr47
+regionmask_regionmask_pr470
+regionmask_regionmask_pr472
+regionmask_regionmask_pr478
+regionmask_regionmask_pr479
+regionmask_regionmask_pr48
+regionmask_regionmask_pr486
+regionmask_regionmask_pr493
+regionmask_regionmask_pr498
+regionmask_regionmask_pr519
+regionmask_regionmask_pr521
+regionmask_regionmask_pr55
+regionmask_regionmask_pr554
+regionmask_regionmask_pr557
+regionmask_regionmask_pr560
+regionmask_regionmask_pr569
+regionmask_regionmask_pr570
+regionmask_regionmask_pr575
+regionmask_regionmask_pr576
+regionmask_regionmask_pr586
+regionmask_regionmask_pr592
+regionmask_regionmask_pr60
+regionmask_regionmask_pr614
+regionmask_regionmask_pr65
+regionmask_regionmask_pr68
+remcohaszing_pywakeonlan_pr24
+remcohaszing_pywakeonlan_pr26
+renanivo_pytest-testdox_pr93
+renatopp_liac-arff_pr34
+renatopp_liac-arff_pr37
+renatopp_liac-arff_pr38
+renatopp_liac-arff_pr51
+renatopp_liac-arff_pr56
+renatopp_liac-arff_pr63
+renatopp_liac-arff_pr65
+renatopp_liac-arff_pr85
+renatopp_liac-arff_pr91
+reportportal_agent-python-behave_pr22
+reportportal_agent-python-behave_pr34
+reportportal_agent-python-behave_pr38
+reportportal_agent-python-behave_pr39
+reportportal_agent-python-behave_pr4
+reportportal_agent-python-behave_pr6
+reportportal_agent-python-pytest_pr175
+reportportal_agent-python-pytest_pr178
+reportportal_agent-python-pytest_pr202
+reportportal_agent-python-pytest_pr203
+reportportal_agent-python-pytest_pr209
+reportportal_agent-python-pytest_pr212
+reportportal_agent-python-pytest_pr215
+reportportal_agent-python-pytest_pr238
+reportportal_agent-python-pytest_pr240
+reportportal_agent-python-pytest_pr245
+reportportal_agent-python-pytest_pr264
+reportportal_agent-python-pytest_pr271
+reportportal_agent-python-pytest_pr274
+reportportal_agent-python-pytest_pr283
+reportportal_agent-python-pytest_pr285
+reportportal_agent-python-pytest_pr286
+reportportal_agent-python-pytest_pr291
+reportportal_agent-python-pytest_pr296
+reportportal_agent-python-pytest_pr373
+reportportal_agent-python-pytest_pr377
+reportportal_agent-python-pytest_pr378
+reportportal_agent-python-pytest_pr386
+reportportal_agent-python-pytest_pr387
+richard-gyiko_json-schema-to-pydantic_pr19
+richard-gyiko_json-schema-to-pydantic_pr20
+richard-gyiko_json-schema-to-pydantic_pr26
+richard-gyiko_json-schema-to-pydantic_pr31
+richardkiss_pycoin_pr108
+richardkiss_pycoin_pr110
+richardkiss_pycoin_pr111
+richardkiss_pycoin_pr117
+richardkiss_pycoin_pr123
+richardkiss_pycoin_pr124
+richardkiss_pycoin_pr128
+richardkiss_pycoin_pr133
+richardkiss_pycoin_pr137
+richardkiss_pycoin_pr145
+richardkiss_pycoin_pr157
+richardkiss_pycoin_pr172
+richardkiss_pycoin_pr177
+richardkiss_pycoin_pr24
+richardkiss_pycoin_pr392
+richardkiss_pycoin_pr40
+richardkiss_pycoin_pr400
+richardkiss_pycoin_pr42
+richardkiss_pycoin_pr44
+richardkiss_pycoin_pr63
+richardkiss_pycoin_pr80
+richardkiss_pycoin_pr82
+richardkiss_pycoin_pr88
+richardkiss_pycoin_pr90
+rlabbe_filterpy_pr192
+rlabbe_filterpy_pr194
+robotools_defcon_pr100
+robotools_defcon_pr110
+robotools_defcon_pr112
+robotools_defcon_pr113
+robotools_defcon_pr179
+robotools_defcon_pr180
+robotools_defcon_pr181
+robotools_defcon_pr183
+robotools_defcon_pr189
+robotools_defcon_pr199
+robotools_defcon_pr258
+robotools_defcon_pr269
+robotools_defcon_pr337
+robotools_defcon_pr338
+robotools_defcon_pr344
+robotools_defcon_pr348
+robotools_defcon_pr352
+robotools_defcon_pr367
+robotools_defcon_pr397
+robotools_defcon_pr402
+robotools_defcon_pr469
+robsdedude_flake8-picky-parentheses_pr16
+robsdedude_flake8-picky-parentheses_pr20
+robsdedude_flake8-picky-parentheses_pr23
+robsdedude_flake8-picky-parentheses_pr26
+robsdedude_flake8-picky-parentheses_pr34
+robsdedude_flake8-picky-parentheses_pr43
+rockem_busypie_pr12
+rockem_busypie_pr21
+rockem_busypie_pr28
+rockem_busypie_pr35
+rockem_busypie_pr38
+rockem_busypie_pr44
+rockem_busypie_pr47
+rockem_busypie_pr5
+rockem_busypie_pr62
+rokam_midea-local_pr127
+rokam_midea-local_pr17
+rokam_midea-local_pr176
+rokam_midea-local_pr177
+rokam_midea-local_pr179
+rokam_midea-local_pr189
+rokam_midea-local_pr191
+rokam_midea-local_pr199
+rokam_midea-local_pr200
+rokam_midea-local_pr209
+rokam_midea-local_pr21
+rokam_midea-local_pr210
+rokam_midea-local_pr212
+rokam_midea-local_pr214
+rokam_midea-local_pr22
+rokam_midea-local_pr221
+rokam_midea-local_pr227
+rokam_midea-local_pr232
+rokam_midea-local_pr235
+rokam_midea-local_pr241
+rokam_midea-local_pr245
+rokam_midea-local_pr248
+rokam_midea-local_pr25
+rokam_midea-local_pr251
+rokam_midea-local_pr256
+rokam_midea-local_pr263
+rokam_midea-local_pr265
+rokam_midea-local_pr270
+rokam_midea-local_pr271
+rokam_midea-local_pr276
+rokam_midea-local_pr278
+rokam_midea-local_pr284
+rokam_midea-local_pr294
+rokam_midea-local_pr304
+rokam_midea-local_pr329
+rokam_midea-local_pr336
+rokam_midea-local_pr337
+rokam_midea-local_pr338
+rokam_midea-local_pr341
+rokam_midea-local_pr343
+rokam_midea-local_pr350
+rokam_midea-local_pr351
+rokam_midea-local_pr353
+rokam_midea-local_pr354
+rokam_midea-local_pr358
+rokam_midea-local_pr359
+rokam_midea-local_pr36
+rokam_midea-local_pr360
+rokam_midea-local_pr363
+rokam_midea-local_pr364
+rokam_midea-local_pr366
+rokam_midea-local_pr368
+rokam_midea-local_pr369
+rokam_midea-local_pr370
+rokam_midea-local_pr371
+rokam_midea-local_pr374
+rokam_midea-local_pr376
+rokam_midea-local_pr379
+rokam_midea-local_pr385
+rokam_midea-local_pr386
+rokam_midea-local_pr389
+rokam_midea-local_pr399
+rokam_midea-local_pr40
+rokam_midea-local_pr407
+rokam_midea-local_pr408
+rokam_midea-local_pr41
+rokam_midea-local_pr411
+rokam_midea-local_pr412
+rokam_midea-local_pr48
+rokam_midea-local_pr5
+rokam_midea-local_pr51
+rokam_midea-local_pr57
+rokam_midea-local_pr67
+rokam_midea-local_pr68
+rollbar_pyrollbar_pr19
+rollbar_pyrollbar_pr448
+rollbar_pyrollbar_pr449
+rollbar_pyrollbar_pr450
+rollbar_pyrollbar_pr461
+rollbar_pyrollbar_pr468
+rollbar_pyrollbar_pr469
+rollbar_pyrollbar_pr470
+rollbar_pyrollbar_pr471
+rollbar_pyrollbar_pr474
+rollbar_pyrollbar_pr479
+rom1504_embedding-reader_pr16
+rom1504_embedding-reader_pr25
+rom1504_embedding-reader_pr9
+roniemartinez_latex2mathml_pr10
+roniemartinez_latex2mathml_pr102
+roniemartinez_latex2mathml_pr107
+roniemartinez_latex2mathml_pr111
+roniemartinez_latex2mathml_pr114
+roniemartinez_latex2mathml_pr116
+roniemartinez_latex2mathml_pr119
+roniemartinez_latex2mathml_pr121
+roniemartinez_latex2mathml_pr126
+roniemartinez_latex2mathml_pr132
+roniemartinez_latex2mathml_pr136
+roniemartinez_latex2mathml_pr137
+roniemartinez_latex2mathml_pr138
+roniemartinez_latex2mathml_pr139
+roniemartinez_latex2mathml_pr140
+roniemartinez_latex2mathml_pr141
+roniemartinez_latex2mathml_pr143
+roniemartinez_latex2mathml_pr144
+roniemartinez_latex2mathml_pr145
+roniemartinez_latex2mathml_pr146
+roniemartinez_latex2mathml_pr147
+roniemartinez_latex2mathml_pr148
+roniemartinez_latex2mathml_pr149
+roniemartinez_latex2mathml_pr150
+roniemartinez_latex2mathml_pr151
+roniemartinez_latex2mathml_pr153
+roniemartinez_latex2mathml_pr154
+roniemartinez_latex2mathml_pr156
+roniemartinez_latex2mathml_pr157
+roniemartinez_latex2mathml_pr158
+roniemartinez_latex2mathml_pr159
+roniemartinez_latex2mathml_pr163
+roniemartinez_latex2mathml_pr164
+roniemartinez_latex2mathml_pr165
+roniemartinez_latex2mathml_pr166
+roniemartinez_latex2mathml_pr167
+roniemartinez_latex2mathml_pr168
+roniemartinez_latex2mathml_pr169
+roniemartinez_latex2mathml_pr170
+roniemartinez_latex2mathml_pr171
+roniemartinez_latex2mathml_pr172
+roniemartinez_latex2mathml_pr174
+roniemartinez_latex2mathml_pr177
+roniemartinez_latex2mathml_pr179
+roniemartinez_latex2mathml_pr180
+roniemartinez_latex2mathml_pr181
+roniemartinez_latex2mathml_pr182
+roniemartinez_latex2mathml_pr183
+roniemartinez_latex2mathml_pr184
+roniemartinez_latex2mathml_pr185
+roniemartinez_latex2mathml_pr187
+roniemartinez_latex2mathml_pr188
+roniemartinez_latex2mathml_pr192
+roniemartinez_latex2mathml_pr195
+roniemartinez_latex2mathml_pr196
+roniemartinez_latex2mathml_pr198
+roniemartinez_latex2mathml_pr199
+roniemartinez_latex2mathml_pr200
+roniemartinez_latex2mathml_pr201
+roniemartinez_latex2mathml_pr204
+roniemartinez_latex2mathml_pr205
+roniemartinez_latex2mathml_pr206
+roniemartinez_latex2mathml_pr207
+roniemartinez_latex2mathml_pr208
+roniemartinez_latex2mathml_pr209
+roniemartinez_latex2mathml_pr210
+roniemartinez_latex2mathml_pr212
+roniemartinez_latex2mathml_pr213
+roniemartinez_latex2mathml_pr216
+roniemartinez_latex2mathml_pr217
+roniemartinez_latex2mathml_pr218
+roniemartinez_latex2mathml_pr234
+roniemartinez_latex2mathml_pr246
+roniemartinez_latex2mathml_pr258
+roniemartinez_latex2mathml_pr304
+roniemartinez_latex2mathml_pr306
+roniemartinez_latex2mathml_pr308
+roniemartinez_latex2mathml_pr309
+roniemartinez_latex2mathml_pr310
+roniemartinez_latex2mathml_pr311
+roniemartinez_latex2mathml_pr315
+roniemartinez_latex2mathml_pr316
+roniemartinez_latex2mathml_pr318
+roniemartinez_latex2mathml_pr319
+roniemartinez_latex2mathml_pr327
+roniemartinez_latex2mathml_pr379
+roniemartinez_latex2mathml_pr388
+roniemartinez_latex2mathml_pr393
+roniemartinez_latex2mathml_pr395
+roniemartinez_latex2mathml_pr43
+roniemartinez_latex2mathml_pr47
+roniemartinez_latex2mathml_pr48
+roniemartinez_latex2mathml_pr54
+roniemartinez_latex2mathml_pr65
+roniemartinez_latex2mathml_pr66
+roniemartinez_latex2mathml_pr74
+roniemartinez_latex2mathml_pr83
+roniemartinez_latex2mathml_pr86
+roniemartinez_latex2mathml_pr88
+roniemartinez_latex2mathml_pr93
+roniemartinez_latex2mathml_pr95
+roniemartinez_latex2mathml_pr97
+roniemartinez_latex2mathml_pr99
+ros-infrastructure_rosdep_pr640
+ros-infrastructure_rosdep_pr656
+ros-infrastructure_rosdep_pr692
+ros-infrastructure_rosdep_pr701
+ros-infrastructure_rosdep_pr726
+ros-infrastructure_rosdep_pr757
+ros-infrastructure_rosdep_pr787
+ros-infrastructure_rosdep_pr789
+ros-infrastructure_rosdep_pr815
+ros-infrastructure_rosdep_pr838
+ros-infrastructure_rosdep_pr846
+ros-infrastructure_rosdep_pr848
+ros-infrastructure_rosdep_pr862
+ros-infrastructure_rosdep_pr926
+ros-infrastructure_rosdep_pr949
+ros-infrastructure_rosdep_pr960
+ros-infrastructure_rosdep_pr975
+ros-infrastructure_rosdep_pr979
+ros-infrastructure_rosdep_pr997
+roskakori_pygount_pr101
+roskakori_pygount_pr115
+roskakori_pygount_pr148
+roskakori_pygount_pr165
+roskakori_pygount_pr168
+roskakori_pygount_pr169
+roskakori_pygount_pr170
+roskakori_pygount_pr186
+roskakori_pygount_pr188
+roskakori_pygount_pr189
+roskakori_pygount_pr203
+roskakori_pygount_pr32
+roskakori_pygount_pr34
+roskakori_pygount_pr43
+roskakori_pygount_pr85
+roskakori_pygount_pr86
+roskakori_pygount_pr90
+roskakori_pygount_pr96
+rossumai_rossum_pr20
+rossumai_rossum_pr28
+rossumai_rossum_pr33
+rossumai_rossum_pr36
+rossumai_rossum_pr4
+rossumai_rossum_pr6
+rossumai_rossum_pr8
+rstcheck_rstcheck-core_pr12
+rstcheck_rstcheck-core_pr24
+rstcheck_rstcheck-core_pr69
+rstudio_py-shinyswatch_pr12
+rstudio_py-shinyswatch_pr51
+rtfd_recommonmark_pr122
+rtfd_recommonmark_pr150
+rtfd_recommonmark_pr160
+rtfd_recommonmark_pr162
+rubik_radon_pr106
+rubik_radon_pr117
+rubik_radon_pr118
+rubik_radon_pr135
+rubik_radon_pr136
+rubik_radon_pr147
+rubik_radon_pr181
+rubik_radon_pr200
+rubik_radon_pr208
+rubik_radon_pr213
+rubik_radon_pr218
+rubik_radon_pr236
+rugleb_jsoncomparison_pr26
+russhousley_pyasn1-alt-modules_pr1
+russhousley_pyasn1-alt-modules_pr2
+russhousley_pyasn1-alt-modules_pr4
+russhousley_pyasn1-alt-modules_pr45
+russhousley_pyasn1-alt-modules_pr48
+russhousley_pyasn1-alt-modules_pr50
+russhousley_pyasn1-alt-modules_pr53
+russhousley_pyasn1-alt-modules_pr54
+russhousley_pyasn1-alt-modules_pr56
+russhousley_pyasn1-alt-modules_pr69
+russhousley_pyasn1-alt-modules_pr7
+russhousley_pyasn1-alt-modules_pr71
+russhousley_pyasn1-alt-modules_pr73
+russhousley_pyasn1-alt-modules_pr74
+russhousley_pyasn1-alt-modules_pr80
+russhousley_pyasn1-alt-modules_pr81
+russhousley_pyasn1-alt-modules_pr84
+russhousley_pyasn1-alt-modules_pr85
+russhousley_pyasn1-alt-modules_pr86
+russhousley_pyasn1-alt-modules_pr87
+russhousley_pyasn1-alt-modules_pr89
+russhousley_pyasn1-alt-modules_pr92
+rveachkc_pymsteams_pr40
+s4v4g3_otel-extensions-python_pr4
+salesforce_cloudsplaining_pr100
+salesforce_cloudsplaining_pr108
+salesforce_cloudsplaining_pr14
+salesforce_cloudsplaining_pr167
+salesforce_cloudsplaining_pr17
+salesforce_cloudsplaining_pr170
+salesforce_cloudsplaining_pr24
+salesforce_cloudsplaining_pr257
+salesforce_cloudsplaining_pr303
+salesforce_cloudsplaining_pr37
+salesforce_cloudsplaining_pr474
+salesforce_cloudsplaining_pr49
+salesforce_cloudsplaining_pr492
+salesforce_cloudsplaining_pr81
+salesforce_cloudsplaining_pr84
+salesforce_cloudsplaining_pr88
+salesforce_cloudsplaining_pr9
+salesforce_cloudsplaining_pr90
+saltstack_libnacl_pr102
+saltstack_libnacl_pr106
+saltstack_libnacl_pr109
+saltstack_libnacl_pr114
+saltstack_libnacl_pr118
+saltstack_libnacl_pr124
+saltstack_libnacl_pr133
+saltstack_libnacl_pr14
+saltstack_libnacl_pr31
+saltstack_libnacl_pr39
+saltstack_libnacl_pr44
+saltstack_libnacl_pr67
+saltstack_libnacl_pr68
+saltstack_libnacl_pr7
+saltstack_libnacl_pr80
+saltstack_libnacl_pr88
+saltstack_libnacl_pr89
+saltstack_libnacl_pr96
+saltstack_libnacl_pr97
+saltstack_libnacl_pr99
+sanders41_camel-converter_pr15
+sanders41_camel-converter_pr174
+sanders41_camel-converter_pr417
+sanders41_camel-converter_pr494
+sangwonl_python-mpegdash_pr20
+sangwonl_python-mpegdash_pr21
+sangwonl_python-mpegdash_pr22
+sangwonl_python-mpegdash_pr28
+sangwonl_python-mpegdash_pr37
+sangwonl_python-mpegdash_pr57
+sanic-org_sanic-routing_pr10
+sanic-org_sanic-routing_pr13
+sanic-org_sanic-routing_pr24
+sanic-org_sanic-routing_pr29
+sanic-org_sanic-routing_pr40
+sanic-org_sanic-routing_pr45
+sanic-org_sanic-routing_pr47
+sanic-org_sanic-routing_pr49
+sanic-org_sanic-routing_pr57
+sanic-org_sanic-routing_pr58
+sanic-org_sanic-routing_pr6
+sanic-org_sanic-routing_pr60
+sanic-org_sanic-routing_pr62
+sanic-org_sanic-routing_pr65
+sanic-org_sanic-routing_pr74
+sanic-org_sanic-routing_pr9
+sayanarijit_expandvars_pr13
+sayanarijit_expandvars_pr17
+sayanarijit_expandvars_pr18
+sayanarijit_expandvars_pr8
+sayanarijit_expandvars_pr9
+sbdchd_codeowners_pr33
+sbdchd_codeowners_pr37
+sbdchd_flake8-pie_pr117
+sbdchd_flake8-pie_pr121
+sbdchd_flake8-pie_pr18
+sbdchd_flake8-pie_pr19
+sbdchd_flake8-pie_pr20
+sbdchd_flake8-pie_pr21
+sbdchd_flake8-pie_pr29
+sbdchd_flake8-pie_pr32
+sbdchd_flake8-pie_pr40
+sbdchd_flake8-pie_pr49
+sbdchd_flake8-pie_pr54
+sbdchd_flake8-pie_pr72
+sbdchd_flake8-pie_pr76
+sbdchd_flake8-pie_pr8
+sbdchd_flake8-pie_pr81
+sbdchd_flake8-pie_pr93
+sbdchd_flake8-pie_pr94
+sbdchd_flake8-pie_pr95
+sbdchd_flake8-pie_pr96
+sbdchd_flake8-pie_pr97
+sbidoul_pyproject-dependencies_pr7
+sbidoul_whool_pr15
+sbidoul_whool_pr21
+sbrunner_jsonschema2md_pr128
+sbrunner_jsonschema2md_pr18
+sbrunner_jsonschema2md_pr2
+sbrunner_jsonschema2md_pr250
+sbrunner_jsonschema2md_pr297
+sbrunner_jsonschema2md_pr331
+sbrunner_jsonschema2md_pr431
+sbrunner_jsonschema2md_pr435
+sbrunner_jsonschema2md_pr437
+sbrunner_jsonschema2md_pr459
+sbtinstruments_asyncio-mqtt_pr234
+sbtinstruments_asyncio-mqtt_pr245
+sbtinstruments_asyncio-mqtt_pr249
+sbtinstruments_asyncio-mqtt_pr255
+sbtinstruments_asyncio-mqtt_pr285
+scastlara_pytest-tagging_pr13
+scastlara_pytest-tagging_pr6
+scikit-build_ninja-python-distributions_pr169
+scikit-build_ninja-python-distributions_pr54
+scikit-build_ninja-python-distributions_pr63
+scikit-build_ninja-python-distributions_pr90
+scikit-build_scikit-build-core_pr12
+scikit-build_scikit-build-core_pr13
+scikit-build_scikit-build-core_pr14
+scikit-build_scikit-build-core_pr16
+scikit-build_scikit-build-core_pr18
+scikit-build_scikit-build-core_pr19
+scikit-build_scikit-build-core_pr20
+scikit-build_scikit-build-core_pr22
+scikit-build_scikit-build-core_pr23
+scikit-build_scikit-build-core_pr25
+scikit-build_scikit-build-core_pr27
+scikit-build_scikit-build-core_pr3
+scikit-build_scikit-build-core_pr30
+scikit-build_scikit-build-core_pr31
+scikit-build_scikit-build-core_pr32
+scikit-build_scikit-build-core_pr8
+scikit-hep_awkward-0.x_pr179
+scikit-hep_awkward-0.x_pr184
+scikit-hep_awkward-0.x_pr188
+scikit-hep_awkward-0.x_pr191
+scikit-hep_awkward-0.x_pr193
+scikit-hep_awkward-0.x_pr194
+scikit-hep_awkward-0.x_pr202
+scikit-hep_awkward-0.x_pr209
+scikit-hep_awkward-0.x_pr248
+scikit-hep_cabinetry_pr19
+scikit-hep_cabinetry_pr22
+scikit-hep_cabinetry_pr32
+scikit-hep_cabinetry_pr34
+scikit-hep_cabinetry_pr35
+scikit-hep_cabinetry_pr47
+scikit-hep_cabinetry_pr48
+scikit-hep_cabinetry_pr49
+scikit-hep_mplhep_pr157
+scikit-hep_mplhep_pr222
+scikit-hep_mplhep_pr274
+scikit-hep_particle_pr101
+scikit-hep_particle_pr11
+scikit-hep_particle_pr114
+scikit-hep_particle_pr117
+scikit-hep_particle_pr119
+scikit-hep_particle_pr121
+scikit-hep_particle_pr128
+scikit-hep_particle_pr137
+scikit-hep_particle_pr139
+scikit-hep_particle_pr14
+scikit-hep_particle_pr144
+scikit-hep_particle_pr15
+scikit-hep_particle_pr155
+scikit-hep_particle_pr159
+scikit-hep_particle_pr16
+scikit-hep_particle_pr161
+scikit-hep_particle_pr174
+scikit-hep_particle_pr176
+scikit-hep_particle_pr186
+scikit-hep_particle_pr2
+scikit-hep_particle_pr20
+scikit-hep_particle_pr21
+scikit-hep_particle_pr231
+scikit-hep_particle_pr234
+scikit-hep_particle_pr26
+scikit-hep_particle_pr27
+scikit-hep_particle_pr32
+scikit-hep_particle_pr34
+scikit-hep_particle_pr45
+scikit-hep_particle_pr46
+scikit-hep_particle_pr47
+scikit-hep_particle_pr48
+scikit-hep_particle_pr51
+scikit-hep_particle_pr57
+scikit-hep_particle_pr6
+scikit-hep_particle_pr68
+scikit-hep_particle_pr70
+scikit-hep_particle_pr73
+scikit-hep_particle_pr74
+scikit-hep_particle_pr75
+scikit-hep_particle_pr76
+scikit-hep_particle_pr77
+scikit-hep_particle_pr83
+scikit-hep_particle_pr86
+scikit-hep_particle_pr90
+scikit-hep_particle_pr92
+scikit-hep_particle_pr93
+scikit-hep_particle_pr95
+scikit-hep_uproot3-methods_pr1
+scikit-hep_uproot3-methods_pr29
+scikit-hep_uproot3-methods_pr37
+scikit-hep_uproot3-methods_pr42
+scikit-hep_uproot3-methods_pr43
+scikit-hep_uproot3-methods_pr48
+scikit-hep_uproot3-methods_pr51
+scikit-hep_uproot3-methods_pr57
+scikit-hep_uproot3-methods_pr9
+scikit-hep_uproot3_pr106
+scikit-hep_uproot3_pr112
+scikit-hep_uproot3_pr114
+scikit-hep_uproot3_pr115
+scikit-hep_uproot3_pr230
+scikit-hep_uproot3_pr242
+scikit-hep_uproot3_pr258
+scikit-hep_uproot3_pr265
+scikit-hep_uproot3_pr271
+scikit-hep_uproot3_pr282
+scikit-hep_uproot3_pr291
+scikit-hep_uproot3_pr326
+scikit-hep_uproot3_pr337
+scikit-hep_uproot3_pr343
+scikit-hep_uproot3_pr353
+scikit-hep_uproot3_pr379
+scikit-hep_uproot3_pr385
+scikit-hep_uproot3_pr400
+scikit-hep_uproot3_pr417
+scikit-hep_uproot3_pr420
+scikit-hep_uproot3_pr427
+scikit-hep_uproot3_pr430
+scikit-hep_uproot3_pr439
+scikit-hep_uproot3_pr442
+scikit-hep_uproot3_pr446
+scikit-hep_uproot3_pr449
+scikit-hep_uproot3_pr459
+scikit-hep_uproot3_pr477
+scikit-hep_uproot3_pr514
+scikit-hep_uproot3_pr518
+scikit-hep_uproot3_pr53
+scikit-hep_uproot3_pr6
+scikit-hep_uproot3_pr94
+scikit-learn-contrib_forest-confidence-interval_pr113
+scikit-rf_scikit-rf_pr1023
+scikit-rf_scikit-rf_pr1028
+scikit-rf_scikit-rf_pr1030
+scikit-rf_scikit-rf_pr1033
+scikit-rf_scikit-rf_pr1040
+scikit-rf_scikit-rf_pr1042
+scikit-rf_scikit-rf_pr1044
+scikit-rf_scikit-rf_pr1045
+scikit-rf_scikit-rf_pr1069
+scikit-rf_scikit-rf_pr1070
+scikit-rf_scikit-rf_pr1073
+scikit-rf_scikit-rf_pr1077
+scikit-rf_scikit-rf_pr1080
+scikit-rf_scikit-rf_pr1082
+scikit-rf_scikit-rf_pr1085
+scikit-rf_scikit-rf_pr1089
+scikit-rf_scikit-rf_pr1092
+scikit-rf_scikit-rf_pr1095
+scikit-rf_scikit-rf_pr1096
+scikit-rf_scikit-rf_pr1104
+scikit-rf_scikit-rf_pr1107
+scikit-rf_scikit-rf_pr1108
+scikit-rf_scikit-rf_pr1117
+scikit-rf_scikit-rf_pr1118
+scikit-rf_scikit-rf_pr1120
+scikit-rf_scikit-rf_pr1122
+scikit-rf_scikit-rf_pr1124
+scikit-rf_scikit-rf_pr1133
+scikit-rf_scikit-rf_pr1135
+scikit-rf_scikit-rf_pr1137
+scikit-rf_scikit-rf_pr1138
+scikit-rf_scikit-rf_pr1144
+scikit-rf_scikit-rf_pr1145
+scikit-rf_scikit-rf_pr1149
+scikit-rf_scikit-rf_pr1150
+scikit-rf_scikit-rf_pr1151
+scikit-rf_scikit-rf_pr1153
+scikit-rf_scikit-rf_pr1158
+scikit-rf_scikit-rf_pr1160
+scikit-rf_scikit-rf_pr1162
+scikit-rf_scikit-rf_pr1166
+scikit-rf_scikit-rf_pr1168
+scikit-rf_scikit-rf_pr1170
+scikit-rf_scikit-rf_pr1175
+scikit-rf_scikit-rf_pr1176
+scikit-rf_scikit-rf_pr1181
+scikit-rf_scikit-rf_pr1183
+scikit-rf_scikit-rf_pr1192
+scikit-rf_scikit-rf_pr1195
+scikit-rf_scikit-rf_pr1200
+scikit-rf_scikit-rf_pr1202
+scikit-rf_scikit-rf_pr1203
+scikit-rf_scikit-rf_pr1206
+scikit-rf_scikit-rf_pr1207
+scikit-rf_scikit-rf_pr1212
+scikit-rf_scikit-rf_pr1219
+scikit-rf_scikit-rf_pr1220
+scikit-rf_scikit-rf_pr1223
+scikit-rf_scikit-rf_pr1227
+scikit-rf_scikit-rf_pr1228
+scikit-rf_scikit-rf_pr1233
+scikit-rf_scikit-rf_pr1235
+scikit-rf_scikit-rf_pr1238
+scikit-rf_scikit-rf_pr1242
+scikit-rf_scikit-rf_pr1246
+scikit-rf_scikit-rf_pr1257
+scikit-rf_scikit-rf_pr1258
+scikit-rf_scikit-rf_pr1261
+scikit-rf_scikit-rf_pr1282
+scikit-rf_scikit-rf_pr1304
+scikit-rf_scikit-rf_pr1320
+scikit-rf_scikit-rf_pr1330
+scikit-rf_scikit-rf_pr1332
+scikit-rf_scikit-rf_pr1336
+scikit-rf_scikit-rf_pr1340
+scikit-rf_scikit-rf_pr561
+scikit-rf_scikit-rf_pr563
+scikit-rf_scikit-rf_pr564
+scikit-rf_scikit-rf_pr571
+scikit-rf_scikit-rf_pr578
+scikit-rf_scikit-rf_pr585
+scikit-rf_scikit-rf_pr587
+scikit-rf_scikit-rf_pr588
+scikit-rf_scikit-rf_pr589
+scikit-rf_scikit-rf_pr591
+scikit-rf_scikit-rf_pr595
+scikit-rf_scikit-rf_pr602
+scikit-rf_scikit-rf_pr619
+scikit-rf_scikit-rf_pr625
+scikit-rf_scikit-rf_pr632
+scikit-rf_scikit-rf_pr635
+scikit-rf_scikit-rf_pr638
+scikit-rf_scikit-rf_pr639
+scikit-rf_scikit-rf_pr649
+scikit-rf_scikit-rf_pr655
+scikit-rf_scikit-rf_pr657
+scikit-rf_scikit-rf_pr658
+scikit-rf_scikit-rf_pr661
+scikit-rf_scikit-rf_pr664
+scikit-rf_scikit-rf_pr665
+scikit-rf_scikit-rf_pr666
+scikit-rf_scikit-rf_pr669
+scikit-rf_scikit-rf_pr671
+scikit-rf_scikit-rf_pr672
+scikit-rf_scikit-rf_pr676
+scikit-rf_scikit-rf_pr678
+scikit-rf_scikit-rf_pr682
+scikit-rf_scikit-rf_pr705
+scikit-rf_scikit-rf_pr714
+scikit-rf_scikit-rf_pr720
+scikit-rf_scikit-rf_pr725
+scikit-rf_scikit-rf_pr729
+scikit-rf_scikit-rf_pr732
+scikit-rf_scikit-rf_pr738
+scikit-rf_scikit-rf_pr746
+scikit-rf_scikit-rf_pr747
+scikit-rf_scikit-rf_pr760
+scikit-rf_scikit-rf_pr761
+scikit-rf_scikit-rf_pr765
+scikit-rf_scikit-rf_pr768
+scitokens_scitokens_pr36
+scitokens_scitokens_pr50
+sciunto-org_python-bibtexparser_pr20
+sciunto-org_python-bibtexparser_pr28
+sciunto-org_python-bibtexparser_pr29
+sciunto-org_python-bibtexparser_pr290
+sciunto-org_python-bibtexparser_pr299
+sciunto-org_python-bibtexparser_pr30
+sciunto-org_python-bibtexparser_pr312
+sciunto-org_python-bibtexparser_pr317
+sciunto-org_python-bibtexparser_pr32
+sciunto-org_python-bibtexparser_pr33
+sciunto-org_python-bibtexparser_pr334
+sciunto-org_python-bibtexparser_pr34
+sciunto-org_python-bibtexparser_pr348
+sciunto-org_python-bibtexparser_pr377
+sciunto-org_python-bibtexparser_pr381
+sciunto-org_python-bibtexparser_pr382
+sciunto-org_python-bibtexparser_pr385
+sciunto-org_python-bibtexparser_pr387
+sciunto-org_python-bibtexparser_pr398
+sciunto-org_python-bibtexparser_pr416
+sciunto-org_python-bibtexparser_pr422
+sciunto-org_python-bibtexparser_pr423
+sciunto-org_python-bibtexparser_pr424
+sciunto-org_python-bibtexparser_pr442
+sciunto-org_python-bibtexparser_pr443
+sciunto-org_python-bibtexparser_pr444
+sciunto-org_python-bibtexparser_pr466
+sciunto-org_python-bibtexparser_pr476
+sciunto-org_python-bibtexparser_pr49
+sciunto-org_python-bibtexparser_pr53
+sciunto-org_python-bibtexparser_pr7
+sciunto-org_python-bibtexparser_pr73
+sciunto-org_python-bibtexparser_pr77
+sciunto-org_python-bibtexparser_pr79
+sciunto-org_python-bibtexparser_pr83
+sciunto-org_python-bibtexparser_pr91
+sco1_flake8-annotations_pr104
+sco1_flake8-annotations_pr136
+sco1_flake8-annotations_pr165
+sco1_flake8-annotations_pr73
+sco1_flake8-annotations_pr83
+sco1_flake8-annotations_pr91
+scott-griffiths_bitstring_pr244
+scott-griffiths_bitstring_pr271
+scott-griffiths_bitstring_pr275
+scott-griffiths_bitstring_pr287
+scottwernervt_favicon_pr28
+scour-project_scour_pr255
+scour-project_scour_pr264
+scour-project_scour_pr268
+scrapinghub_andi_pr14
+scrapinghub_andi_pr19
+scrapinghub_andi_pr3
+scrapinghub_number-parser_pr19
+scrapinghub_number-parser_pr23
+scrapinghub_number-parser_pr38
+scrapinghub_number-parser_pr47
+scrapinghub_number-parser_pr49
+scrapinghub_number-parser_pr50
+scrapinghub_price-parser_pr42
+scrapinghub_price-parser_pr43
+scrapinghub_price-parser_pr59
+scrapinghub_price-parser_pr66
+scrapinghub_web-poet_pr101
+scrapinghub_web-poet_pr191
+scrapinghub_web-poet_pr205
+scrapinghub_web-poet_pr213
+scrapinghub_web-poet_pr223
+scrapinghub_web-poet_pr230
+scrapinghub_web-poet_pr232
+scrapinghub_web-poet_pr238
+scrapinghub_web-poet_pr240
+scrapinghub_web-poet_pr30
+scrapinghub_web-poet_pr33
+scrapinghub_web-poet_pr38
+scrapinghub_web-poet_pr52
+scrapinghub_web-poet_pr62
+scrapinghub_web-poet_pr81
+scrapinghub_web-poet_pr85
+scrapinghub_web-poet_pr96
+scrapy_itemadapter_pr101
+scrapy_itemadapter_pr18
+scrapy_itemadapter_pr29
+scrapy_itemadapter_pr31
+scrapy_itemadapter_pr44
+scrapy_itemadapter_pr54
+scrapy_itemadapter_pr56
+scrapy_itemadapter_pr57
+scrapy_itemadapter_pr60
+scrapy_itemadapter_pr61
+scrapy_itemadapter_pr64
+scrapy_itemadapter_pr69
+scrapy_itemadapter_pr74
+scrapy_itemadapter_pr79
+scrapy_itemloaders_pr51
+scrapy_itemloaders_pr57
+scrapy_itemloaders_pr68
+scrapy_itemloaders_pr70
+scrapy_itemloaders_pr80
+scrapy_itemloaders_pr81
+scrapy_itemloaders_pr88
+scrapy_itemloaders_pr94
+scrapy_protego_pr25
+scrapy_protego_pr34
+scrapy_queuelib_pr40
+scrapy_queuelib_pr8
+scrapy_w3lib_pr118
+scrapy_w3lib_pr119
+scrapy_w3lib_pr126
+scrapy_w3lib_pr127
+scrapy_w3lib_pr136
+scrapy_w3lib_pr141
+scrapy_w3lib_pr148
+scrapy_w3lib_pr169
+scrapy_w3lib_pr170
+scrapy_w3lib_pr174
+scrapy_w3lib_pr175
+scrapy_w3lib_pr179
+scrapy_w3lib_pr191
+scrapy_w3lib_pr196
+scrapy_w3lib_pr202
+scrapy_w3lib_pr203
+scrapy_w3lib_pr207
+scrapy_w3lib_pr22
+scrapy_w3lib_pr23
+scrapy_w3lib_pr230
+scrapy_w3lib_pr243
+scrapy_w3lib_pr26
+scrapy_w3lib_pr29
+scrapy_w3lib_pr30
+scrapy_w3lib_pr33
+scrapy_w3lib_pr37
+scrapy_w3lib_pr38
+scrapy_w3lib_pr39
+scrapy_w3lib_pr40
+scrapy_w3lib_pr45
+scrapy_w3lib_pr48
+scrapy_w3lib_pr77
+scverse_mudata_pr7
+secynic_ipwhois_pr145
+secynic_ipwhois_pr15
+secynic_ipwhois_pr30
+seequent_properties_pr183
+seequent_properties_pr238
+seequent_properties_pr246
+seequent_properties_pr256
+seequent_properties_pr263
+seequent_properties_pr278
+seequent_properties_pr287
+seequent_properties_pr290
+semuconsulting_pynmeagps_pr24
+semuconsulting_pynmeagps_pr26
+semuconsulting_pynmeagps_pr39
+semuconsulting_pynmeagps_pr62
+semuconsulting_pynmeagps_pr78
+semuconsulting_pynmeagps_pr84
+semuconsulting_pynmeagps_pr9
+semuconsulting_pyrtcm_pr16
+semuconsulting_pyubx2_pr176
+semuconsulting_pyubx2_pr24
+semuconsulting_pyubx2_pr26
+semuconsulting_pyubx2_pr70
+semuconsulting_pyubx2_pr77
+sendgrid_python-http-client_pr123
+sendgrid_python-http-client_pr145
+sendgrid_python-http-client_pr19
+sendgrid_sendgrid-python_pr137
+serge-sans-paille_beniget_pr100
+serge-sans-paille_beniget_pr114
+serge-sans-paille_beniget_pr121
+serge-sans-paille_beniget_pr68
+serge-sans-paille_beniget_pr69
+serge-sans-paille_beniget_pr70
+serge-sans-paille_beniget_pr73
+serge-sans-paille_beniget_pr75
+serge-sans-paille_beniget_pr77
+serge-sans-paille_beniget_pr78
+serge-sans-paille_beniget_pr80
+serge-sans-paille_beniget_pr87
+serge-sans-paille_beniget_pr96
+serge-sans-paille_beniget_pr97
+serge-sans-paille_beniget_pr99
+serge-sans-paille_gast_pr62
+serge-sans-paille_gast_pr65
+serge-sans-paille_gast_pr67
+serge-sans-paille_gast_pr72
+serge-sans-paille_gast_pr80
+serge-sans-paille_gast_pr89
+serge-sans-paille_gast_pr96
+serhatbolsu_robotframework-appiumlibrary_pr329
+serhatbolsu_robotframework-appiumlibrary_pr354
+serhatbolsu_robotframework-appiumlibrary_pr356
+sethmlarson_socksio_pr12
+sethmlarson_socksio_pr46
+sethmlarson_truststore_pr100
+sethmlarson_truststore_pr113
+sethmlarson_truststore_pr120
+sethmlarson_truststore_pr132
+sethmlarson_truststore_pr149
+sethmlarson_truststore_pr152
+sethmlarson_truststore_pr157
+sethmlarson_truststore_pr164
+sethmlarson_truststore_pr83
+severb_graypy_pr52
+severb_graypy_pr66
+severb_graypy_pr87
+severb_graypy_pr89
+shinichi-takii_ddlparse_pr47
+shinichi-takii_ddlparse_pr49
+shinichi-takii_ddlparse_pr62
+shiphero_skippy-cov_pr14
+shiphero_skippy-cov_pr6
+si-23_py-import-cycles_pr13
+si-23_py-import-cycles_pr16
+si-23_py-import-cycles_pr18
+si-23_py-import-cycles_pr19
+si-23_py-import-cycles_pr29
+si-23_py-import-cycles_pr30
+si-23_py-import-cycles_pr36
+si-23_py-import-cycles_pr38
+si-23_py-import-cycles_pr41
+si-23_py-import-cycles_pr44
+si-23_py-import-cycles_pr48
+si-23_py-import-cycles_pr50
+si-23_py-import-cycles_pr52
+si-23_py-import-cycles_pr55
+si-23_py-import-cycles_pr60
+si-23_py-import-cycles_pr63
+si-23_py-import-cycles_pr69
+sifive_pydevicetree_pr14
+sifive_pydevicetree_pr20
+sifive_pydevicetree_pr22
+sifive_pydevicetree_pr26
+sifive_pydevicetree_pr31
+sifive_pydevicetree_pr34
+sigma-py_npx_pr11
+sigma-py_npx_pr20
+sigma-py_npx_pr23
+sigma-py_npx_pr29
+sigma-py_npx_pr3
+sigma-py_npx_pr4
+sigma-py_npx_pr5
+sigma-py_npx_pr6
+sigma-py_npx_pr7
+sigma-py_npx_pr8
+sigma-py_npx_pr9
+sigmavirus24_github3.py_pr1101
+sigmavirus24_github3.py_pr1139
+sigmavirus24_github3.py_pr1142
+sigmavirus24_github3.py_pr1162
+sigmavirus24_github3.py_pr1199
+sigmavirus24_rush_pr2
+siliconcompiler_lambdalib_pr102
+siliconcompiler_lambdalib_pr57
+siliconcompiler_lambdalib_pr60
+siliconcompiler_lambdalib_pr63
+siliconcompiler_lambdalib_pr73
+siliconcompiler_lambdalib_pr83
+siliconcompiler_lambdalib_pr87
+siliconcompiler_lambdalib_pr98
+siliconcompiler_lambdapdk_pr102
+siliconcompiler_lambdapdk_pr105
+siliconcompiler_lambdapdk_pr108
+siliconcompiler_lambdapdk_pr114
+siliconcompiler_lambdapdk_pr117
+siliconcompiler_lambdapdk_pr122
+siliconcompiler_lambdapdk_pr123
+siliconcompiler_lambdapdk_pr152
+siliconcompiler_lambdapdk_pr155
+siliconcompiler_lambdapdk_pr190
+siliconcompiler_lambdapdk_pr192
+siliconcompiler_lambdapdk_pr71
+siliconcompiler_lambdapdk_pr78
+siliconcompiler_lambdapdk_pr79
+siliconcompiler_lambdapdk_pr94
+simonw_asgi-csrf_pr5
+singingwolfboy_flask-dance_pr121
+singingwolfboy_flask-dance_pr153
+singingwolfboy_flask-dance_pr161
+singingwolfboy_flask-dance_pr162
+singingwolfboy_flask-dance_pr166
+singingwolfboy_flask-dance_pr170
+singingwolfboy_flask-dance_pr185
+singingwolfboy_flask-dance_pr200
+singingwolfboy_flask-dance_pr209
+singingwolfboy_flask-dance_pr227
+singingwolfboy_flask-dance_pr259
+singingwolfboy_flask-dance_pr266
+singingwolfboy_flask-dance_pr288
+singingwolfboy_flask-dance_pr310
+singingwolfboy_flask-dance_pr327
+singingwolfboy_flask-dance_pr330
+singingwolfboy_flask-dance_pr331
+singingwolfboy_flask-dance_pr334
+singingwolfboy_flask-dance_pr339
+singingwolfboy_flask-dance_pr340
+singingwolfboy_flask-dance_pr345
+singingwolfboy_flask-dance_pr346
+singingwolfboy_flask-dance_pr350
+singingwolfboy_flask-dance_pr353
+singingwolfboy_flask-dance_pr356
+singingwolfboy_flask-dance_pr360
+singingwolfboy_flask-dance_pr361
+singingwolfboy_flask-dance_pr398
+singingwolfboy_flask-dance_pr403
+singingwolfboy_flask-dance_pr406
+singingwolfboy_flask-dance_pr433
+sissaschool_elementpath_pr2
+sissaschool_elementpath_pr20
+sissaschool_elementpath_pr21
+sissaschool_elementpath_pr22
+sissaschool_elementpath_pr26
+sissaschool_elementpath_pr43
+sissaschool_elementpath_pr86
+sissaschool_xmlschema_pr118
+sissaschool_xmlschema_pr194
+sissaschool_xmlschema_pr288
+sissaschool_xmlschema_pr295
+sissaschool_xmlschema_pr297
+sklarsa_django-sendgrid-v5_pr101
+sklarsa_django-sendgrid-v5_pr103
+sklarsa_django-sendgrid-v5_pr121
+sklarsa_django-sendgrid-v5_pr16
+sklarsa_django-sendgrid-v5_pr24
+sklarsa_django-sendgrid-v5_pr27
+sklarsa_django-sendgrid-v5_pr49
+sklarsa_django-sendgrid-v5_pr50
+sklearn-compat_sklearn-compat_pr21
+sklearn-compat_sklearn-compat_pr25
+sktime_skbase_pr111
+sktime_skbase_pr117
+sktime_skbase_pr126
+sktime_skbase_pr13
+sktime_skbase_pr130
+sktime_skbase_pr136
+sktime_skbase_pr137
+sktime_skbase_pr138
+sktime_skbase_pr140
+sktime_skbase_pr155
+sktime_skbase_pr156
+sktime_skbase_pr16
+sktime_skbase_pr161
+sktime_skbase_pr167
+sktime_skbase_pr171
+sktime_skbase_pr179
+sktime_skbase_pr183
+sktime_skbase_pr191
+sktime_skbase_pr195
+sktime_skbase_pr206
+sktime_skbase_pr229
+sktime_skbase_pr237
+sktime_skbase_pr238
+sktime_skbase_pr243
+sktime_skbase_pr246
+sktime_skbase_pr257
+sktime_skbase_pr259
+sktime_skbase_pr263
+sktime_skbase_pr268
+sktime_skbase_pr273
+sktime_skbase_pr285
+sktime_skbase_pr286
+sktime_skbase_pr303
+sktime_skbase_pr310
+sktime_skbase_pr314
+sktime_skbase_pr328
+sktime_skbase_pr329
+sktime_skbase_pr331
+sktime_skbase_pr335
+sktime_skbase_pr338
+sktime_skbase_pr345
+sktime_skbase_pr350
+sktime_skbase_pr353
+sktime_skbase_pr355
+sktime_skbase_pr37
+sktime_skbase_pr370
+sktime_skbase_pr389
+sktime_skbase_pr414
+sktime_skbase_pr417
+sktime_skbase_pr418
+sktime_skbase_pr427
+sktime_skbase_pr441
+sktime_skbase_pr454
+sktime_skbase_pr457
+sktime_skbase_pr464
+sktime_skbase_pr467
+sktime_skbase_pr62
+sktime_skbase_pr69
+sktime_skbase_pr79
+sktime_skbase_pr80
+sktime_skbase_pr86
+sktime_skbase_pr87
+sktime_skbase_pr88
+sktime_skbase_pr96
+sktime_skpro_pr151
+sktime_skpro_pr388
+slackapi_python-slack-events-api_pr71
+slackapi_python-slack-events-api_pr91
+slackapi_python-slack-sdk_pr100
+slackapi_python-slack-sdk_pr106
+slackapi_python-slack-sdk_pr119
+slackapi_python-slack-sdk_pr152
+slackapi_python-slack-sdk_pr160
+slackapi_python-slack-sdk_pr161
+slackapi_python-slack-sdk_pr162
+slackapi_python-slack-sdk_pr167
+slackapi_python-slack-sdk_pr173
+slackapi_python-slack-sdk_pr210
+slackapi_python-slack-sdk_pr215
+slackapi_python-slack-sdk_pr247
+slackapi_python-slack-sdk_pr30
+slackapi_python-slack-sdk_pr74
+slackapi_python-slack-sdk_pr97
+slank_awsgi_pr27
+smtg-ucl_sumo_pr212
+snok_django-guid_pr21
+snok_django-guid_pr31
+snok_django-guid_pr38
+snok_flake8-type-checking_pr103
+snok_flake8-type-checking_pr104
+snok_flake8-type-checking_pr107
+snok_flake8-type-checking_pr109
+snok_flake8-type-checking_pr112
+snok_flake8-type-checking_pr118
+snok_flake8-type-checking_pr122
+snok_flake8-type-checking_pr123
+snok_flake8-type-checking_pr124
+snok_flake8-type-checking_pr125
+snok_flake8-type-checking_pr126
+snok_flake8-type-checking_pr133
+snok_flake8-type-checking_pr138
+snok_flake8-type-checking_pr140
+snok_flake8-type-checking_pr142
+snok_flake8-type-checking_pr145
+snok_flake8-type-checking_pr15
+snok_flake8-type-checking_pr155
+snok_flake8-type-checking_pr157
+snok_flake8-type-checking_pr16
+snok_flake8-type-checking_pr161
+snok_flake8-type-checking_pr165
+snok_flake8-type-checking_pr166
+snok_flake8-type-checking_pr167
+snok_flake8-type-checking_pr17
+snok_flake8-type-checking_pr173
+snok_flake8-type-checking_pr174
+snok_flake8-type-checking_pr176
+snok_flake8-type-checking_pr183
+snok_flake8-type-checking_pr184
+snok_flake8-type-checking_pr187
+snok_flake8-type-checking_pr193
+snok_flake8-type-checking_pr195
+snok_flake8-type-checking_pr198
+snok_flake8-type-checking_pr199
+snok_flake8-type-checking_pr200
+snok_flake8-type-checking_pr4
+snok_flake8-type-checking_pr5
+snok_flake8-type-checking_pr66
+snok_flake8-type-checking_pr67
+snok_flake8-type-checking_pr78
+snok_flake8-type-checking_pr80
+snok_flake8-type-checking_pr87
+snok_flake8-type-checking_pr88
+snowflakedb_snowflake-cli_pr195
+snowflakedb_snowflake-cli_pr204
+snowflakedb_snowflake-cli_pr206
+snowflakedb_snowflake-cli_pr209
+snowflakedb_snowflake-cli_pr237
+snowflakedb_snowflake-cli_pr289
+snowflakedb_snowflake-cli_pr545
+snowflakedb_snowflake-cli_pr581
+snowflakedb_snowflake-cli_pr606
+snowflakedb_snowflake-cli_pr607
+snowflakedb_snowflake-cli_pr703
+snowflakedb_snowflake-cli_pr705
+snowflakedb_snowflake-cli_pr720
+snowflakedb_snowflake-cli_pr725
+snowflakedb_snowflake-ingest-python_pr8
+snowflakedb_snowflake-telemetry-python_pr31
+snowplow_snowplow-python-tracker_pr349
+snyk-labs_pysnyk_pr26
+sobolevn_django-split-settings_pr174
+socialwifi_jsonapi-requests_pr11
+socialwifi_jsonapi-requests_pr14
+spacetelescope_pysiaf_pr177
+spacetelescope_pysiaf_pr231
+spacetelescope_pysiaf_pr277
+spacetelescope_pysiaf_pr293
+spacetelescope_pysiaf_pr294
+spacetelescope_pysiaf_pr296
+spacetelescope_pysiaf_pr318
+spacetelescope_pysiaf_pr331
+spacetelescope_tweakwcs_pr136
+spacetelescope_tweakwcs_pr139
+spacetelescope_tweakwcs_pr143
+spacetelescope_tweakwcs_pr144
+spacetelescope_tweakwcs_pr147
+spacetelescope_tweakwcs_pr154
+spatial-image_spatial-image_pr6
+spdx_tools-python_pr107
+spdx_tools-python_pr173
+spdx_tools-python_pr187
+spdx_tools-python_pr188
+spdx_tools-python_pr195
+spdx_tools-python_pr236
+spdx_tools-python_pr245
+spdx_tools-python_pr254
+spdx_tools-python_pr266
+spdx_tools-python_pr276
+spdx_tools-python_pr279
+spdx_tools-python_pr283
+spdx_tools-python_pr286
+spdx_tools-python_pr292
+spdx_tools-python_pr303
+spdx_tools-python_pr308
+spdx_tools-python_pr311
+spdx_tools-python_pr318
+spdx_tools-python_pr329
+spdx_tools-python_pr331
+spdx_tools-python_pr334
+spdx_tools-python_pr343
+spdx_tools-python_pr352
+spdx_tools-python_pr450
+spdx_tools-python_pr452
+spdx_tools-python_pr480
+spdx_tools-python_pr499
+spdx_tools-python_pr520
+spdx_tools-python_pr62
+spdx_tools-python_pr695
+spdx_tools-python_pr697
+spdx_tools-python_pr698
+spdx_tools-python_pr699
+spdx_tools-python_pr71
+spdx_tools-python_pr719
+spdx_tools-python_pr724
+spdx_tools-python_pr728
+spdx_tools-python_pr73
+spdx_tools-python_pr733
+spdx_tools-python_pr74
+spdx_tools-python_pr78
+spdx_tools-python_pr855
+sphinx-contrib_confluencebuilder_pr1002
+sphinx-contrib_confluencebuilder_pr1006
+sphinx-contrib_confluencebuilder_pr1007
+sphinx-contrib_confluencebuilder_pr1010
+sphinx-contrib_confluencebuilder_pr1033
+sphinx-contrib_confluencebuilder_pr1034
+sphinx-contrib_confluencebuilder_pr1044
+sphinx-contrib_confluencebuilder_pr1047
+sphinx-contrib_confluencebuilder_pr1049
+sphinx-contrib_confluencebuilder_pr1055
+sphinx-contrib_confluencebuilder_pr1060
+sphinx-contrib_confluencebuilder_pr1066
+sphinx-contrib_confluencebuilder_pr1084
+sphinx-contrib_confluencebuilder_pr1093
+sphinx-contrib_confluencebuilder_pr1099
+sphinx-contrib_confluencebuilder_pr1113
+sphinx-contrib_confluencebuilder_pr1114
+sphinx-contrib_confluencebuilder_pr1117
+sphinx-contrib_confluencebuilder_pr1125
+sphinx-contrib_confluencebuilder_pr1128
+sphinx-contrib_confluencebuilder_pr1134
+sphinx-contrib_confluencebuilder_pr1136
+sphinx-contrib_confluencebuilder_pr1140
+sphinx-contrib_confluencebuilder_pr1142
+sphinx-contrib_confluencebuilder_pr58
+sphinx-contrib_confluencebuilder_pr677
+sphinx-contrib_confluencebuilder_pr737
+sphinx-contrib_confluencebuilder_pr741
+sphinx-contrib_confluencebuilder_pr749
+sphinx-contrib_confluencebuilder_pr752
+sphinx-contrib_confluencebuilder_pr756
+sphinx-contrib_confluencebuilder_pr768
+sphinx-contrib_confluencebuilder_pr769
+sphinx-contrib_confluencebuilder_pr774
+sphinx-contrib_confluencebuilder_pr780
+sphinx-contrib_confluencebuilder_pr784
+sphinx-contrib_confluencebuilder_pr785
+sphinx-contrib_confluencebuilder_pr793
+sphinx-contrib_confluencebuilder_pr795
+sphinx-contrib_confluencebuilder_pr796
+sphinx-contrib_confluencebuilder_pr811
+sphinx-contrib_confluencebuilder_pr816
+sphinx-contrib_confluencebuilder_pr818
+sphinx-contrib_confluencebuilder_pr824
+sphinx-contrib_confluencebuilder_pr833
+sphinx-contrib_confluencebuilder_pr838
+sphinx-contrib_confluencebuilder_pr841
+sphinx-contrib_confluencebuilder_pr855
+sphinx-contrib_confluencebuilder_pr859
+sphinx-contrib_confluencebuilder_pr889
+sphinx-contrib_confluencebuilder_pr895
+sphinx-contrib_confluencebuilder_pr898
+sphinx-contrib_confluencebuilder_pr899
+sphinx-contrib_confluencebuilder_pr900
+sphinx-contrib_confluencebuilder_pr906
+sphinx-contrib_confluencebuilder_pr907
+sphinx-contrib_confluencebuilder_pr910
+sphinx-contrib_confluencebuilder_pr919
+sphinx-contrib_confluencebuilder_pr922
+sphinx-contrib_confluencebuilder_pr938
+sphinx-contrib_confluencebuilder_pr950
+sphinx-contrib_confluencebuilder_pr979
+sphinx-contrib_confluencebuilder_pr984
+sphinx-contrib_confluencebuilder_pr989
+sphinx-contrib_confluencebuilder_pr993
+sphinx-contrib_confluencebuilder_pr994
+sphinx-contrib_confluencebuilder_pr998
+sphinx-contrib_confluencebuilder_pr999
+sphinx-contrib_openapi_pr50
+sphinx-contrib_openapi_pr74
+sphinx-contrib_openapi_pr87
+sphinx-contrib_openapi_pr95
+sphinx-contrib_openapi_pr98
+sphinx-contrib_sphinxcontrib-towncrier_pr86
+sphinx-doc_sphinx-argparse_pr49
+sphinx-doc_sphinx-autobuild_pr192
+sphinx-gallery_sphinx-gallery_pr1115
+sphinx-gallery_sphinx-gallery_pr1122
+sphinx-gallery_sphinx-gallery_pr890
+sphinx-gallery_sphinx-gallery_pr922
+sphinx-gallery_sphinx-gallery_pr944
+sphinx-gallery_sphinx-gallery_pr961
+sphinx-gallery_sphinx-gallery_pr986
+sphinx-gallery_sphinx-gallery_pr993
+splitio_python-client_pr104
+splitio_python-client_pr110
+splitio_python-client_pr112
+splitio_python-client_pr117
+splitio_python-client_pr127
+splitio_python-client_pr143
+splitio_python-client_pr153
+splitio_python-client_pr174
+splitio_python-client_pr41
+splitio_python-client_pr44
+splitio_python-client_pr46
+splitio_python-client_pr55
+splitio_python-client_pr83
+splitio_python-client_pr97
+spulec_freezegun_pr105
+spulec_freezegun_pr108
+spulec_freezegun_pr109
+spulec_freezegun_pr115
+spulec_freezegun_pr119
+spulec_freezegun_pr144
+spulec_freezegun_pr145
+spulec_freezegun_pr149
+spulec_freezegun_pr161
+spulec_freezegun_pr163
+spulec_freezegun_pr17
+spulec_freezegun_pr231
+spulec_freezegun_pr232
+spulec_freezegun_pr233
+spulec_freezegun_pr24
+spulec_freezegun_pr25
+spulec_freezegun_pr28
+spulec_freezegun_pr297
+spulec_freezegun_pr305
+spulec_freezegun_pr316
+spulec_freezegun_pr328
+spulec_freezegun_pr329
+spulec_freezegun_pr357
+spulec_freezegun_pr363
+spulec_freezegun_pr369
+spulec_freezegun_pr370
+spulec_freezegun_pr395
+spulec_freezegun_pr42
+spulec_freezegun_pr429
+spulec_freezegun_pr475
+spulec_freezegun_pr49
+spulec_freezegun_pr52
+spulec_freezegun_pr525
+spulec_freezegun_pr53
+spulec_freezegun_pr530
+spulec_freezegun_pr533
+spulec_freezegun_pr538
+spulec_freezegun_pr539
+spulec_freezegun_pr540
+spulec_freezegun_pr542
+spulec_freezegun_pr543
+spulec_freezegun_pr546
+spulec_freezegun_pr574
+spulec_freezegun_pr576
+spulec_freezegun_pr582
+spulec_freezegun_pr583
+spulec_freezegun_pr72
+spulec_freezegun_pr74
+spulec_freezegun_pr78
+spulec_freezegun_pr83
+spulec_freezegun_pr86
+spulec_freezegun_pr88
+spyoungtech_json-five_pr19
+spyoungtech_json-five_pr2
+spyoungtech_json-five_pr45
+stac-utils_stac-pydantic_pr100
+stac-utils_stac-pydantic_pr102
+stac-utils_stac-pydantic_pr103
+stac-utils_stac-pydantic_pr108
+stac-utils_stac-pydantic_pr11
+stac-utils_stac-pydantic_pr114
+stac-utils_stac-pydantic_pr131
+stac-utils_stac-pydantic_pr133
+stac-utils_stac-pydantic_pr138
+stac-utils_stac-pydantic_pr149
+stac-utils_stac-pydantic_pr156
+stac-utils_stac-pydantic_pr161
+stac-utils_stac-pydantic_pr165
+stac-utils_stac-pydantic_pr172
+stac-utils_stac-pydantic_pr177
+stac-utils_stac-pydantic_pr178
+stac-utils_stac-pydantic_pr180
+stac-utils_stac-pydantic_pr182
+stac-utils_stac-pydantic_pr35
+stac-utils_stac-pydantic_pr43
+stac-utils_stac-pydantic_pr47
+stac-utils_stac-pydantic_pr52
+stac-utils_stac-pydantic_pr69
+stac-utils_stac-pydantic_pr70
+stac-utils_stac-pydantic_pr75
+stac-utils_stac-pydantic_pr81
+stac-utils_stac-pydantic_pr90
+stanford-crfm_haliax_pr11
+stanford-crfm_haliax_pr117
+stanford-crfm_haliax_pr123
+stanford-crfm_haliax_pr125
+stanford-crfm_haliax_pr127
+stanford-crfm_haliax_pr128
+stanford-crfm_haliax_pr130
+stanford-crfm_haliax_pr133
+stanford-crfm_haliax_pr134
+stanford-crfm_haliax_pr135
+stanford-crfm_haliax_pr14
+stanford-crfm_haliax_pr140
+stanford-crfm_haliax_pr142
+stanford-crfm_haliax_pr147
+stanford-crfm_haliax_pr15
+stanford-crfm_haliax_pr157
+stanford-crfm_haliax_pr168
+stanford-crfm_haliax_pr169
+stanford-crfm_haliax_pr170
+stanford-crfm_haliax_pr176
+stanford-crfm_haliax_pr180
+stanford-crfm_haliax_pr184
+stanford-crfm_haliax_pr190
+stanford-crfm_haliax_pr193
+stanford-crfm_haliax_pr194
+stanford-crfm_haliax_pr195
+stanford-crfm_haliax_pr202
+stanford-crfm_haliax_pr203
+stanford-crfm_haliax_pr206
+stanford-crfm_haliax_pr207
+stanford-crfm_haliax_pr208
+stanford-crfm_haliax_pr209
+stanford-crfm_haliax_pr211
+stanford-crfm_haliax_pr213
+stanford-crfm_haliax_pr214
+stanford-crfm_haliax_pr215
+stanford-crfm_haliax_pr216
+stanford-crfm_haliax_pr218
+stanford-crfm_haliax_pr219
+stanford-crfm_haliax_pr221
+stanford-crfm_haliax_pr224
+stanford-crfm_haliax_pr29
+stanford-crfm_haliax_pr30
+stanford-crfm_haliax_pr33
+stanford-crfm_haliax_pr38
+stanford-crfm_haliax_pr39
+stanford-crfm_haliax_pr40
+stanford-crfm_haliax_pr44
+stanford-crfm_haliax_pr48
+stanford-crfm_haliax_pr49
+stanford-crfm_haliax_pr55
+stanford-crfm_haliax_pr59
+stanford-crfm_haliax_pr61
+stanford-crfm_haliax_pr68
+stanford-crfm_haliax_pr69
+stanford-crfm_haliax_pr71
+stchris_untangle_pr68
+stchris_untangle_pr90
+stefan-jansen_empyrical-reloaded_pr7
+stefan6419846_pip-licenses-cli_pr132
+stephrdev_pytest-isort_pr40
+stphivos_django-mock-queries_pr121
+stphivos_django-mock-queries_pr127
+stphivos_django-mock-queries_pr128
+stphivos_django-mock-queries_pr129
+stphivos_django-mock-queries_pr139
+stphivos_django-mock-queries_pr147
+stphivos_django-mock-queries_pr153
+stphivos_django-mock-queries_pr155
+stphivos_django-mock-queries_pr156
+stphivos_django-mock-queries_pr164
+stphivos_django-mock-queries_pr166
+stphivos_django-mock-queries_pr172
+stphivos_django-mock-queries_pr174
+stphivos_django-mock-queries_pr183
+stphivos_django-mock-queries_pr184
+stphivos_django-mock-queries_pr185
+stphivos_django-mock-queries_pr187
+stravalib_stravalib_pr592
+strawberry-graphql_strawberry-django_pr415
+strawberry-graphql_strawberry-django_pr417
+strawberry-graphql_strawberry-django_pr421
+strawberry-graphql_strawberry-django_pr430
+strawberry-graphql_strawberry-django_pr437
+strawberry-graphql_strawberry-django_pr449
+strawberry-graphql_strawberry-django_pr465
+strawberry-graphql_strawberry-django_pr466
+strawberry-graphql_strawberry-django_pr469
+strawberry-graphql_strawberry-django_pr474
+strawberry-graphql_strawberry-django_pr478
+strawberry-graphql_strawberry-django_pr480
+strawberry-graphql_strawberry-django_pr481
+strawberry-graphql_strawberry-django_pr490
+strawberry-graphql_strawberry-django_pr493
+strawberry-graphql_strawberry-django_pr494
+strawberry-graphql_strawberry-django_pr497
+strawberry-graphql_strawberry-django_pr498
+strawberry-graphql_strawberry-django_pr510
+strawberry-graphql_strawberry-django_pr515
+strawberry-graphql_strawberry-django_pr522
+strawberry-graphql_strawberry-django_pr601
+strawberry-graphql_strawberry-django_pr622
+strawberry-graphql_strawberry-django_pr638
+strawberry-graphql_strawberry-django_pr642
+strawberry-graphql_strawberry-django_pr643
+strawberry-graphql_strawberry-django_pr646
+strawberry-graphql_strawberry-django_pr659
+strawberry-graphql_strawberry-django_pr666
+strawberry-graphql_strawberry-django_pr673
+strawberry-graphql_strawberry-django_pr674
+strawberry-graphql_strawberry-django_pr675
+strawberry-graphql_strawberry-django_pr681
+strawberry-graphql_strawberry-sqlalchemy_pr10
+summernote_django-summernote_pr466
+swagger-api_swagger-codegen_pr2765
+swagger-api_swagger-codegen_pr2796
+swagger-api_swagger-codegen_pr2801
+swagger-api_swagger-codegen_pr2831
+swagger-api_swagger-codegen_pr2861
+swagger-api_swagger-codegen_pr2863
+swagger-api_swagger-codegen_pr2878
+swagger-api_swagger-codegen_pr2899
+swagger-api_swagger-codegen_pr2917
+swagger-api_swagger-codegen_pr2930
+swagger-api_swagger-codegen_pr2979
+swagger-api_swagger-codegen_pr2987
+swagger-api_swagger-codegen_pr2988
+swagger-api_swagger-codegen_pr2989
+swagger-api_swagger-codegen_pr3015
+swagger-api_swagger-codegen_pr3016
+swagger-api_swagger-codegen_pr3034
+swagger-api_swagger-codegen_pr3038
+swagger-api_swagger-codegen_pr3039
+swagger-api_swagger-codegen_pr3075
+swagger-api_swagger-codegen_pr3090
+swagger-api_swagger-codegen_pr3124
+swagger-api_swagger-codegen_pr3126
+swagger-api_swagger-codegen_pr3130
+t3rn0_ast-comments_pr12
+t3rn0_ast-comments_pr25
+t3rn0_ast-comments_pr8
+tartley_colorama_pr260
+tartley_colorama_pr328
+tartley_colorama_pr5
+tbielawa_bitmath_pr21
+tconbeer_sqlfmt_pr111
+tconbeer_sqlfmt_pr112
+tconbeer_sqlfmt_pr125
+tconbeer_sqlfmt_pr126
+tconbeer_sqlfmt_pr127
+tconbeer_sqlfmt_pr13
+tconbeer_sqlfmt_pr14
+tconbeer_sqlfmt_pr143
+tconbeer_sqlfmt_pr146
+tconbeer_sqlfmt_pr148
+tconbeer_sqlfmt_pr15
+tconbeer_sqlfmt_pr16
+tconbeer_sqlfmt_pr160
+tconbeer_sqlfmt_pr166
+tconbeer_sqlfmt_pr17
+tconbeer_sqlfmt_pr173
+tconbeer_sqlfmt_pr181
+tconbeer_sqlfmt_pr185
+tconbeer_sqlfmt_pr194
+tconbeer_sqlfmt_pr2
+tconbeer_sqlfmt_pr21
+tconbeer_sqlfmt_pr210
+tconbeer_sqlfmt_pr216
+tconbeer_sqlfmt_pr22
+tconbeer_sqlfmt_pr221
+tconbeer_sqlfmt_pr223
+tconbeer_sqlfmt_pr226
+tconbeer_sqlfmt_pr228
+tconbeer_sqlfmt_pr23
+tconbeer_sqlfmt_pr233
+tconbeer_sqlfmt_pr238
+tconbeer_sqlfmt_pr24
+tconbeer_sqlfmt_pr25
+tconbeer_sqlfmt_pr3
+tconbeer_sqlfmt_pr4
+tconbeer_sqlfmt_pr43
+tconbeer_sqlfmt_pr46
+tconbeer_sqlfmt_pr47
+tconbeer_sqlfmt_pr49
+tconbeer_sqlfmt_pr6
+tconbeer_sqlfmt_pr667
+tconbeer_sqlfmt_pr668
+tconbeer_sqlfmt_pr7
+tconbeer_sqlfmt_pr703
+tconbeer_sqlfmt_pr711
+tconbeer_sqlfmt_pr8
+tconbeer_sqlfmt_pr9
+team23_pydantic-partial_pr46
+team23_pydantic-partial_pr51
+teamtomo_starfile_pr41
+teamtomo_starfile_pr42
+teamtomo_starfile_pr60
+teamtomo_starfile_pr69
+teamtomo_starfile_pr76
+teamtomo_starfile_pr83
+teamtomo_starfile_pr85
+tedder_requests-aws4auth_pr2
+tefra_xsdata_pr101
+tefra_xsdata_pr107
+tefra_xsdata_pr109
+tefra_xsdata_pr119
+tefra_xsdata_pr123
+tefra_xsdata_pr131
+tefra_xsdata_pr134
+tefra_xsdata_pr140
+tefra_xsdata_pr141
+tefra_xsdata_pr144
+tefra_xsdata_pr146
+tefra_xsdata_pr147
+tefra_xsdata_pr149
+tefra_xsdata_pr152
+tefra_xsdata_pr156
+tefra_xsdata_pr160
+tefra_xsdata_pr161
+tefra_xsdata_pr162
+tefra_xsdata_pr163
+tefra_xsdata_pr167
+tefra_xsdata_pr44
+tefra_xsdata_pr48
+tefra_xsdata_pr53
+tefra_xsdata_pr62
+tefra_xsdata_pr63
+tefra_xsdata_pr65
+tefra_xsdata_pr68
+tefra_xsdata_pr70
+tefra_xsdata_pr78
+tefra_xsdata_pr80
+tefra_xsdata_pr84
+tefra_xsdata_pr86
+tefra_xsdata_pr87
+tefra_xsdata_pr89
+tefra_xsdata_pr90
+tefra_xsdata_pr91
+tefra_xsdata_pr95
+telefonica_toolium_pr100
+telefonica_toolium_pr102
+telefonica_toolium_pr106
+telefonica_toolium_pr114
+telefonica_toolium_pr115
+telefonica_toolium_pr117
+telefonica_toolium_pr124
+telefonica_toolium_pr128
+telefonica_toolium_pr129
+telefonica_toolium_pr136
+telefonica_toolium_pr148
+telefonica_toolium_pr153
+telefonica_toolium_pr156
+telefonica_toolium_pr173
+telefonica_toolium_pr177
+telefonica_toolium_pr179
+telefonica_toolium_pr184
+telefonica_toolium_pr185
+telefonica_toolium_pr186
+telefonica_toolium_pr188
+telefonica_toolium_pr193
+telefonica_toolium_pr194
+telefonica_toolium_pr197
+telefonica_toolium_pr216
+telefonica_toolium_pr217
+telefonica_toolium_pr222
+telefonica_toolium_pr226
+telefonica_toolium_pr227
+telefonica_toolium_pr228
+telefonica_toolium_pr229
+telefonica_toolium_pr231
+telefonica_toolium_pr234
+telefonica_toolium_pr240
+telefonica_toolium_pr241
+telefonica_toolium_pr244
+telefonica_toolium_pr245
+telefonica_toolium_pr246
+telefonica_toolium_pr247
+telefonica_toolium_pr256
+telefonica_toolium_pr257
+telefonica_toolium_pr260
+telefonica_toolium_pr262
+telefonica_toolium_pr263
+telefonica_toolium_pr270
+telefonica_toolium_pr271
+telefonica_toolium_pr275
+telefonica_toolium_pr276
+telefonica_toolium_pr281
+telefonica_toolium_pr283
+telefonica_toolium_pr284
+telefonica_toolium_pr285
+telefonica_toolium_pr289
+telefonica_toolium_pr290
+telefonica_toolium_pr293
+telefonica_toolium_pr294
+telefonica_toolium_pr301
+telefonica_toolium_pr305
+telefonica_toolium_pr321
+telefonica_toolium_pr322
+telefonica_toolium_pr324
+telefonica_toolium_pr327
+telefonica_toolium_pr329
+telefonica_toolium_pr337
+telefonica_toolium_pr338
+telefonica_toolium_pr341
+telefonica_toolium_pr342
+telefonica_toolium_pr343
+telefonica_toolium_pr344
+telefonica_toolium_pr348
+telefonica_toolium_pr353
+telefonica_toolium_pr357
+telefonica_toolium_pr361
+telefonica_toolium_pr368
+telefonica_toolium_pr380
+telefonica_toolium_pr383
+telefonica_toolium_pr394
+telefonica_toolium_pr396
+telefonica_toolium_pr397
+telefonica_toolium_pr403
+telefonica_toolium_pr404
+telefonica_toolium_pr406
+telefonica_toolium_pr41
+telefonica_toolium_pr416
+telefonica_toolium_pr423
+telefonica_toolium_pr424
+telefonica_toolium_pr427
+telefonica_toolium_pr43
+telefonica_toolium_pr433
+telefonica_toolium_pr435
+telefonica_toolium_pr436
+telefonica_toolium_pr437
+telefonica_toolium_pr44
+telefonica_toolium_pr440
+telefonica_toolium_pr441
+telefonica_toolium_pr442
+telefonica_toolium_pr445
+telefonica_toolium_pr448
+telefonica_toolium_pr47
+telefonica_toolium_pr48
+telefonica_toolium_pr49
+telefonica_toolium_pr50
+telefonica_toolium_pr55
+telefonica_toolium_pr56
+telefonica_toolium_pr59
+telefonica_toolium_pr67
+telefonica_toolium_pr68
+telefonica_toolium_pr71
+telefonica_toolium_pr72
+telefonica_toolium_pr73
+telefonica_toolium_pr75
+telefonica_toolium_pr76
+telefonica_toolium_pr77
+telefonica_toolium_pr84
+telefonica_toolium_pr85
+telefonica_toolium_pr86
+telefonica_toolium_pr88
+telefonica_toolium_pr89
+telefonica_toolium_pr91
+telefonica_toolium_pr92
+telefonica_toolium_pr94
+telefonica_toolium_pr95
+telefonica_toolium_pr97
+tfoxy_graphene-django-optimizer_pr56
+thebjorn_pydeps_pr100
+thebjorn_pydeps_pr116
+thebjorn_pydeps_pr131
+thebjorn_pydeps_pr180
+thesimj_envyaml_pr10
+thesimj_envyaml_pr5
+thobbs_pure-sasl_pr19
+thobbs_pure-sasl_pr24
+thobbs_pure-sasl_pr30
+tilezen_mapbox-vector-tile_pr125
+tilezen_mapbox-vector-tile_pr127
+tilezen_mapbox-vector-tile_pr21
+tilezen_mapbox-vector-tile_pr23
+tilezen_mapbox-vector-tile_pr36
+tilezen_mapbox-vector-tile_pr38
+tilezen_mapbox-vector-tile_pr46
+tilezen_mapbox-vector-tile_pr51
+tilezen_mapbox-vector-tile_pr55
+tilezen_mapbox-vector-tile_pr59
+tilezen_mapbox-vector-tile_pr68
+tilezen_mapbox-vector-tile_pr69
+tilezen_mapbox-vector-tile_pr70
+tilezen_mapbox-vector-tile_pr74
+tilezen_mapbox-vector-tile_pr75
+tilezen_mapbox-vector-tile_pr77
+tilezen_mapbox-vector-tile_pr79
+tilezen_mapbox-vector-tile_pr85
+tilezen_mapbox-vector-tile_pr86
+tilezen_mapbox-vector-tile_pr92
+timkpaine_ipydagred3_pr111
+timkpaine_ipydagred3_pr32
+timsainb_noisereduce_pr112
+tinytag_tinytag_pr111
+tinytag_tinytag_pr115
+tinytag_tinytag_pr131
+tinytag_tinytag_pr132
+tinytag_tinytag_pr133
+tinytag_tinytag_pr154
+tinytag_tinytag_pr157
+tinytag_tinytag_pr164
+tinytag_tinytag_pr181
+tinytag_tinytag_pr182
+tinytag_tinytag_pr186
+tinytag_tinytag_pr188
+tinytag_tinytag_pr194
+tinytag_tinytag_pr197
+tinytag_tinytag_pr198
+tinytag_tinytag_pr224
+tinytag_tinytag_pr231
+tinytag_tinytag_pr238
+tinytag_tinytag_pr251
+tinytag_tinytag_pr252
+tlambert03_mkdocs-api-autonav_pr12
+tlambert03_mkdocs-api-autonav_pr5
+tmux-python_tmuxp_pr911
+tmux-python_tmuxp_pr912
+tmux-python_tmuxp_pr931
+tmux-python_tmuxp_pr957
+tmux-python_tmuxp_pr965
+tobgu_pyrsistent_pr157
+tobgu_pyrsistent_pr179
+tobgu_pyrsistent_pr209
+tobgu_pyrsistent_pr234
+tobgu_pyrsistent_pr243
+tobgu_pyrsistent_pr281
+tobgu_pyrsistent_pr282
+tomasvotava_fastapi-sso_pr102
+tomasvotava_fastapi-sso_pr118
+tomasvotava_fastapi-sso_pr139
+tomasvotava_fastapi-sso_pr152
+tomasvotava_fastapi-sso_pr153
+tomasvotava_fastapi-sso_pr166
+tomasvotava_fastapi-sso_pr189
+tomasvotava_fastapi-sso_pr207
+tomasvotava_fastapi-sso_pr50
+tomasvotava_fastapi-sso_pr59
+tomasvotava_fastapi-sso_pr99
+tompollard_tableone_pr164
+tompollard_tableone_pr170
+tompollard_tableone_pr175
+tompollard_tableone_pr187
+tompollard_tableone_pr191
+tompollard_tableone_pr194
+tortoise_pypika-tortoise_pr29
+tortoise_pypika-tortoise_pr37
+tox-dev_pipdeptree_pr125
+transferwise_pipelinewise-singer-python_pr17
+treasure-data_pytd_pr11
+treasure-data_pytd_pr128
+treasure-data_pytd_pr134
+treasure-data_pytd_pr138
+treasure-data_pytd_pr142
+treasure-data_pytd_pr163
+treasure-data_pytd_pr23
+treasure-data_pytd_pr24
+treasure-data_pytd_pr32
+treasure-data_pytd_pr37
+treasure-data_pytd_pr38
+treasure-data_pytd_pr41
+treasure-data_pytd_pr45
+treasure-data_pytd_pr46
+treasure-data_pytd_pr47
+treasure-data_pytd_pr51
+treasure-data_pytd_pr53
+treasure-data_pytd_pr57
+treasure-data_pytd_pr63
+treasure-data_pytd_pr68
+treasure-data_pytd_pr72
+treasure-data_pytd_pr8
+treasure-data_pytd_pr81
+treasure-data_pytd_pr86
+treasure-data_pytd_pr94
+treasure-data_td-client-python_pr10
+treasure-data_td-client-python_pr107
+treasure-data_td-client-python_pr116
+treasure-data_td-client-python_pr119
+treasure-data_td-client-python_pr120
+treasure-data_td-client-python_pr123
+treasure-data_td-client-python_pr127
+treasure-data_td-client-python_pr129
+treasure-data_td-client-python_pr132
+treasure-data_td-client-python_pr14
+treasure-data_td-client-python_pr145
+treasure-data_td-client-python_pr22
+treasure-data_td-client-python_pr25
+treasure-data_td-client-python_pr28
+treasure-data_td-client-python_pr44
+treasure-data_td-client-python_pr59
+treasure-data_td-client-python_pr63
+treasure-data_td-client-python_pr67
+treasure-data_td-client-python_pr71
+treasure-data_td-client-python_pr75
+treasure-data_td-client-python_pr77
+treasure-data_td-client-python_pr78
+treasure-data_td-client-python_pr79
+treasure-data_td-client-python_pr80
+treasure-data_td-client-python_pr82
+treasure-data_td-client-python_pr84
+treasure-data_td-client-python_pr96
+trezor_python-mnemonic_pr69
+trufont_uharfbuzz_pr107
+trufont_uharfbuzz_pr119
+trufont_uharfbuzz_pr91
+trufont_uharfbuzz_pr93
+turner-townsend_flask-pydantic-spec_pr12
+turner-townsend_flask-pydantic-spec_pr25
+turner-townsend_flask-pydantic-spec_pr28
+turner-townsend_flask-pydantic-spec_pr39
+turner-townsend_flask-pydantic-spec_pr4
+turner-townsend_flask-pydantic-spec_pr48
+turner-townsend_flask-pydantic-spec_pr59
+turner-townsend_flask-pydantic-spec_pr62
+turner-townsend_flask-pydantic-spec_pr84
+turner-townsend_flask-pydantic-spec_pr87
+turner-townsend_flask-pydantic-spec_pr88
+turner-townsend_flask-pydantic-spec_pr90
+turner-townsend_flask-pydantic-spec_pr92
+tus_tus-py-client_pr105
+tus_tus-py-client_pr78
+tus_tus-py-client_pr92
+twitterdev_twitter-python-ads-sdk_pr104
+twitterdev_twitter-python-ads-sdk_pr119
+twitterdev_twitter-python-ads-sdk_pr120
+twitterdev_twitter-python-ads-sdk_pr122
+twitterdev_twitter-python-ads-sdk_pr131
+twitterdev_twitter-python-ads-sdk_pr135
+twitterdev_twitter-python-ads-sdk_pr137
+twitterdev_twitter-python-ads-sdk_pr138
+twitterdev_twitter-python-ads-sdk_pr142
+twitterdev_twitter-python-ads-sdk_pr151
+twitterdev_twitter-python-ads-sdk_pr152
+twitterdev_twitter-python-ads-sdk_pr157
+twitterdev_twitter-python-ads-sdk_pr160
+twitterdev_twitter-python-ads-sdk_pr161
+twitterdev_twitter-python-ads-sdk_pr174
+twitterdev_twitter-python-ads-sdk_pr183
+twitterdev_twitter-python-ads-sdk_pr191
+twitterdev_twitter-python-ads-sdk_pr193
+twitterdev_twitter-python-ads-sdk_pr198
+twitterdev_twitter-python-ads-sdk_pr203
+twitterdev_twitter-python-ads-sdk_pr210
+twitterdev_twitter-python-ads-sdk_pr211
+twitterdev_twitter-python-ads-sdk_pr212
+twitterdev_twitter-python-ads-sdk_pr213
+twitterdev_twitter-python-ads-sdk_pr223
+twitterdev_twitter-python-ads-sdk_pr251
+twitterdev_twitter-python-ads-sdk_pr252
+twitterdev_twitter-python-ads-sdk_pr275
+twitterdev_twitter-python-ads-sdk_pr281
+twitterdev_twitter-python-ads-sdk_pr36
+twitterdev_twitter-python-ads-sdk_pr56
+twitterdev_twitter-python-ads-sdk_pr62
+twitterdev_twitter-python-ads-sdk_pr86
+uiri_toml_pr128
+ultrabug_mkdocs-static-i18n_pr139
+ultrabug_mkdocs-static-i18n_pr147
+ultrabug_mkdocs-static-i18n_pr163
+ultrabug_mkdocs-static-i18n_pr183
+ultrabug_mkdocs-static-i18n_pr203
+ultrabug_mkdocs-static-i18n_pr290
+ultrabug_mkdocs-static-i18n_pr317
+untitaker_click-repl_pr102
+untitaker_click-repl_pr105
+untitaker_click-repl_pr106
+untitaker_click-repl_pr118
+untitaker_click-repl_pr28
+untitaker_click-repl_pr41
+untitaker_click-repl_pr55
+untitaker_click-repl_pr86
+untitaker_click-repl_pr88
+untitaker_click-repl_pr96
+us-irs_spacepackets-py_pr1
+us-irs_spacepackets-py_pr10
+us-irs_spacepackets-py_pr107
+us-irs_spacepackets-py_pr109
+us-irs_spacepackets-py_pr113
+us-irs_spacepackets-py_pr114
+us-irs_spacepackets-py_pr13
+us-irs_spacepackets-py_pr15
+us-irs_spacepackets-py_pr16
+us-irs_spacepackets-py_pr18
+us-irs_spacepackets-py_pr19
+us-irs_spacepackets-py_pr21
+us-irs_spacepackets-py_pr23
+us-irs_spacepackets-py_pr25
+us-irs_spacepackets-py_pr26
+us-irs_spacepackets-py_pr27
+us-irs_spacepackets-py_pr31
+us-irs_spacepackets-py_pr33
+us-irs_spacepackets-py_pr37
+us-irs_spacepackets-py_pr38
+us-irs_spacepackets-py_pr40
+us-irs_spacepackets-py_pr44
+us-irs_spacepackets-py_pr46
+us-irs_spacepackets-py_pr49
+us-irs_spacepackets-py_pr5
+us-irs_spacepackets-py_pr50
+us-irs_spacepackets-py_pr51
+us-irs_spacepackets-py_pr54
+us-irs_spacepackets-py_pr55
+us-irs_spacepackets-py_pr57
+us-irs_spacepackets-py_pr69
+us-irs_spacepackets-py_pr70
+us-irs_spacepackets-py_pr73
+us-irs_spacepackets-py_pr75
+us-irs_spacepackets-py_pr79
+us-irs_spacepackets-py_pr83
+us-irs_spacepackets-py_pr87
+us-irs_spacepackets-py_pr88
+us-irs_spacepackets-py_pr9
+us-irs_spacepackets-py_pr90
+us-irs_spacepackets-py_pr91
+us-irs_spacepackets-py_pr97
+vacanza_holidays_pr1024
+vacanza_holidays_pr1186
+vacanza_holidays_pr1355
+vacanza_holidays_pr1437
+vacanza_holidays_pr585
+vacanza_holidays_pr716
+vacanza_holidays_pr806
+valohai_gitignorant_pr7
+valohai_laituri_pr11
+valohai_laituri_pr15
+valohai_laituri_pr17
+valohai_laituri_pr20
+valohai_valohai-cli_pr11
+valohai_valohai-cli_pr12
+valohai_valohai-cli_pr15
+valohai_valohai-cli_pr157
+valohai_valohai-cli_pr163
+valohai_valohai-cli_pr166
+valohai_valohai-cli_pr171
+valohai_valohai-cli_pr176
+valohai_valohai-cli_pr178
+valohai_valohai-cli_pr179
+valohai_valohai-cli_pr18
+valohai_valohai-cli_pr180
+valohai_valohai-cli_pr186
+valohai_valohai-cli_pr190
+valohai_valohai-cli_pr192
+valohai_valohai-cli_pr195
+valohai_valohai-cli_pr200
+valohai_valohai-cli_pr205
+valohai_valohai-cli_pr210
+valohai_valohai-cli_pr212
+valohai_valohai-cli_pr213
+valohai_valohai-cli_pr234
+valohai_valohai-cli_pr239
+valohai_valohai-cli_pr243
+valohai_valohai-cli_pr273
+valohai_valohai-cli_pr278
+valohai_valohai-cli_pr281
+valohai_valohai-cli_pr285
+valohai_valohai-cli_pr287
+valohai_valohai-cli_pr290
+valohai_valohai-cli_pr292
+valohai_valohai-cli_pr298
+valohai_valohai-cli_pr3
+valohai_valohai-cli_pr305
+valohai_valohai-cli_pr31
+valohai_valohai-cli_pr310
+valohai_valohai-cli_pr319
+valohai_valohai-cli_pr321
+valohai_valohai-cli_pr322
+valohai_valohai-cli_pr323
+valohai_valohai-cli_pr324
+valohai_valohai-cli_pr328
+valohai_valohai-cli_pr332
+valohai_valohai-cli_pr338
+valohai_valohai-cli_pr340
+valohai_valohai-cli_pr5
+valohai_valohai-cli_pr51
+valohai_valohai-cli_pr52
+valohai_valohai-cli_pr54
+valohai_valohai-cli_pr57
+valohai_valohai-cli_pr62
+valohai_valohai-cli_pr71
+valohai_valohai-cli_pr72
+valohai_valohai-cli_pr75
+valohai_valohai-cli_pr88
+valohai_valohai-cli_pr9
+valohai_valohai-yaml_pr101
+valohai_valohai-yaml_pr103
+valohai_valohai-yaml_pr104
+valohai_valohai-yaml_pr105
+valohai_valohai-yaml_pr111
+valohai_valohai-yaml_pr112
+valohai_valohai-yaml_pr113
+valohai_valohai-yaml_pr115
+valohai_valohai-yaml_pr118
+valohai_valohai-yaml_pr12
+valohai_valohai-yaml_pr124
+valohai_valohai-yaml_pr126
+valohai_valohai-yaml_pr128
+valohai_valohai-yaml_pr13
+valohai_valohai-yaml_pr131
+valohai_valohai-yaml_pr132
+valohai_valohai-yaml_pr133
+valohai_valohai-yaml_pr135
+valohai_valohai-yaml_pr136
+valohai_valohai-yaml_pr137
+valohai_valohai-yaml_pr138
+valohai_valohai-yaml_pr139
+valohai_valohai-yaml_pr144
+valohai_valohai-yaml_pr147
+valohai_valohai-yaml_pr149
+valohai_valohai-yaml_pr152
+valohai_valohai-yaml_pr153
+valohai_valohai-yaml_pr157
+valohai_valohai-yaml_pr159
+valohai_valohai-yaml_pr164
+valohai_valohai-yaml_pr166
+valohai_valohai-yaml_pr167
+valohai_valohai-yaml_pr173
+valohai_valohai-yaml_pr174
+valohai_valohai-yaml_pr175
+valohai_valohai-yaml_pr20
+valohai_valohai-yaml_pr22
+valohai_valohai-yaml_pr23
+valohai_valohai-yaml_pr25
+valohai_valohai-yaml_pr29
+valohai_valohai-yaml_pr3
+valohai_valohai-yaml_pr31
+valohai_valohai-yaml_pr32
+valohai_valohai-yaml_pr34
+valohai_valohai-yaml_pr40
+valohai_valohai-yaml_pr43
+valohai_valohai-yaml_pr48
+valohai_valohai-yaml_pr5
+valohai_valohai-yaml_pr50
+valohai_valohai-yaml_pr51
+valohai_valohai-yaml_pr54
+valohai_valohai-yaml_pr57
+valohai_valohai-yaml_pr59
+valohai_valohai-yaml_pr61
+valohai_valohai-yaml_pr66
+valohai_valohai-yaml_pr7
+valohai_valohai-yaml_pr75
+valohai_valohai-yaml_pr79
+valohai_valohai-yaml_pr8
+valohai_valohai-yaml_pr85
+valohai_valohai-yaml_pr87
+valohai_valohai-yaml_pr94
+valohai_valohai-yaml_pr98
+vasp-dev_py4vasp_pr100
+vasp-dev_py4vasp_pr103
+vasp-dev_py4vasp_pr108
+vasp-dev_py4vasp_pr110
+vasp-dev_py4vasp_pr114
+vasp-dev_py4vasp_pr119
+vasp-dev_py4vasp_pr120
+vasp-dev_py4vasp_pr123
+vasp-dev_py4vasp_pr139
+vasp-dev_py4vasp_pr142
+vasp-dev_py4vasp_pr144
+vasp-dev_py4vasp_pr146
+vasp-dev_py4vasp_pr154
+vasp-dev_py4vasp_pr158
+vasp-dev_py4vasp_pr159
+vasp-dev_py4vasp_pr162
+vasp-dev_py4vasp_pr166
+vasp-dev_py4vasp_pr172
+vasp-dev_py4vasp_pr173
+vasp-dev_py4vasp_pr182
+vasp-dev_py4vasp_pr183
+vasp-dev_py4vasp_pr184
+vasp-dev_py4vasp_pr186
+vasp-dev_py4vasp_pr188
+vasp-dev_py4vasp_pr189
+vasp-dev_py4vasp_pr191
+vasp-dev_py4vasp_pr192
+vasp-dev_py4vasp_pr194
+vasp-dev_py4vasp_pr202
+vasp-dev_py4vasp_pr205
+vasp-dev_py4vasp_pr207
+vasp-dev_py4vasp_pr208
+vasp-dev_py4vasp_pr213
+vasp-dev_py4vasp_pr214
+vasp-dev_py4vasp_pr215
+vasp-dev_py4vasp_pr216
+vasp-dev_py4vasp_pr219
+vasp-dev_py4vasp_pr225
+vasp-dev_py4vasp_pr233
+vasp-dev_py4vasp_pr234
+vasp-dev_py4vasp_pr236
+vasp-dev_py4vasp_pr237
+vasp-dev_py4vasp_pr238
+vasp-dev_py4vasp_pr36
+vasp-dev_py4vasp_pr41
+vasp-dev_py4vasp_pr44
+vasp-dev_py4vasp_pr45
+vasp-dev_py4vasp_pr51
+vasp-dev_py4vasp_pr54
+vasp-dev_py4vasp_pr55
+vasp-dev_py4vasp_pr56
+vasp-dev_py4vasp_pr84
+vasp-dev_py4vasp_pr86
+vasp-dev_py4vasp_pr87
+vasp-dev_py4vasp_pr95
+vasp-dev_py4vasp_pr97
+vasp-dev_py4vasp_pr98
+vberlier_nbtlib_pr148
+vedro-universe_vedro_pr11
+vedro-universe_vedro_pr13
+vedro-universe_vedro_pr15
+vedro-universe_vedro_pr16
+vedro-universe_vedro_pr24
+vedro-universe_vedro_pr27
+vedro-universe_vedro_pr34
+vedro-universe_vedro_pr9
+venmo_business-rules_pr17
+venmo_business-rules_pr4
+vertica_dbt-vertica_pr10
+vertica_dbt-vertica_pr45
+vespa-engine_pyvespa_pr10
+vespa-engine_pyvespa_pr11
+vespa-engine_pyvespa_pr23
+vespa-engine_pyvespa_pr25
+vespa-engine_pyvespa_pr3
+vespa-engine_pyvespa_pr33
+vespa-engine_pyvespa_pr8
+vidstige_ar_pr10
+visgl_deck.gl_pr5256
+visgl_deck.gl_pr5486
+vmware_pyvmomi_pr555
+vmware_pyvmomi_pr715
+vmware_pyvmomi_pr799
+wayfair-incubator_pygitops_pr129
+wayfair-incubator_pygitops_pr251
+wayfair-incubator_pygitops_pr31
+wayfair-incubator_pygitops_pr97
+wbond_asn1crypto_pr138
+wbond_asn1crypto_pr148
+wbond_asn1crypto_pr156
+wbond_asn1crypto_pr165
+wbond_asn1crypto_pr171
+wbond_asn1crypto_pr174
+wbond_asn1crypto_pr202
+wbond_asn1crypto_pr205
+wbond_asn1crypto_pr215
+wbond_asn1crypto_pr218
+wbond_asn1crypto_pr219
+wbond_asn1crypto_pr226
+wbond_asn1crypto_pr238
+wbond_asn1crypto_pr240
+wbond_asn1crypto_pr25
+wbond_asn1crypto_pr258
+wbond_asn1crypto_pr265
+wbond_asn1crypto_pr266
+wbond_asn1crypto_pr270
+wbond_asn1crypto_pr271
+wbond_asn1crypto_pr31
+wbond_asn1crypto_pr4
+wbond_asn1crypto_pr53
+wbond_asn1crypto_pr79
+wbond_asn1crypto_pr81
+wbond_asn1crypto_pr82
+wbond_asn1crypto_pr9
+weaviate_weaviate-python-client_pr112
+weaviate_weaviate-python-client_pr113
+weaviate_weaviate-python-client_pr115
+weaviate_weaviate-python-client_pr117
+weaviate_weaviate-python-client_pr118
+weaviate_weaviate-python-client_pr119
+weaviate_weaviate-python-client_pr120
+weaviate_weaviate-python-client_pr123
+weaviate_weaviate-python-client_pr125
+weaviate_weaviate-python-client_pr136
+weaviate_weaviate-python-client_pr70
+weaviate_weaviate-python-client_pr76
+weaviate_weaviate-python-client_pr78
+weaviate_weaviate-python-client_pr81
+weaviate_weaviate-python-client_pr84
+weaviate_weaviate-python-client_pr86
+weblyzard_inscriptis_pr24
+weblyzard_inscriptis_pr27
+weblyzard_inscriptis_pr28
+weblyzard_inscriptis_pr31
+weblyzard_inscriptis_pr34
+weblyzard_inscriptis_pr35
+weblyzard_inscriptis_pr43
+weblyzard_inscriptis_pr49
+webrecorder_warcio_pr13
+webrecorder_warcio_pr36
+webrecorder_warcio_pr4
+websocket-client_websocket-client_pr116
+websocket-client_websocket-client_pr91
+wemake-services_dotenv-linter_pr641
+widgetti_reacton_pr22
+will-ockmore_httpx-retries_pr30
+will-ockmore_httpx-retries_pr38
+will-ockmore_httpx-retries_pr46
+wimglenn_djangorestframework-queryfields_pr5
+wimglenn_pytest-structlog_pr31
+wimglenn_pytest-structlog_pr40
+wireservice_agate-excel_pr18
+wireservice_agate-sql_pr26
+wireservice_agate_pr740
+wireservice_agate_pr753
+wireservice_agate_pr770
+wireservice_agate_pr776
+wireservice_agate_pr785
+wireservice_csvkit_pr1037
+wireservice_csvkit_pr1095
+wireservice_csvkit_pr1096
+wireservice_csvkit_pr1140
+wireservice_csvkit_pr1163
+wireservice_csvkit_pr1180
+wireservice_csvkit_pr1193
+wireservice_csvkit_pr1200
+wireservice_csvkit_pr1241
+wireservice_csvkit_pr1257
+wireservice_csvkit_pr1274
+wireservice_csvkit_pr713
+wireservice_csvkit_pr731
+wireservice_csvkit_pr739
+wireservice_csvkit_pr741
+wireservice_csvkit_pr744
+wireservice_csvkit_pr770
+wireservice_csvkit_pr771
+wireservice_csvkit_pr772
+wireservice_csvkit_pr773
+wireservice_csvkit_pr775
+wireservice_csvkit_pr776
+wireservice_csvkit_pr777
+wireservice_csvkit_pr779
+wireservice_csvkit_pr783
+wireservice_csvkit_pr784
+wireservice_csvkit_pr800
+wireservice_csvkit_pr801
+wireservice_csvkit_pr808
+wireservice_csvkit_pr809
+wireservice_csvkit_pr815
+wireservice_csvkit_pr836
+wireservice_csvkit_pr860
+wireservice_csvkit_pr869
+wireservice_csvkit_pr891
+wireservice_csvkit_pr900
+wireservice_csvkit_pr915
+wireservice_csvkit_pr924
+wireservice_csvkit_pr960
+wireservice_csvkit_pr964
+wireservice_csvkit_pr979
+wjohnson_pyapacheatlas_pr10
+wjohnson_pyapacheatlas_pr12
+wjohnson_pyapacheatlas_pr14
+wjohnson_pyapacheatlas_pr19
+wjohnson_pyapacheatlas_pr21
+wjohnson_pyapacheatlas_pr25
+wjohnson_pyapacheatlas_pr32
+wjohnson_pyapacheatlas_pr37
+wjohnson_pyapacheatlas_pr38
+wjohnson_pyapacheatlas_pr39
+wjohnson_pyapacheatlas_pr40
+wjohnson_pyapacheatlas_pr41
+wjohnson_pyapacheatlas_pr43
+wjohnson_pyapacheatlas_pr45
+wjohnson_pyapacheatlas_pr47
+wjohnson_pyapacheatlas_pr53
+wjohnson_pyapacheatlas_pr55
+wjohnson_pyapacheatlas_pr56
+wkentaro_imgviz_pr24
+woodgern_confusables_pr14
+woodgern_confusables_pr6
+workalendar_workalendar_pr14
+workalendar_workalendar_pr16
+workalendar_workalendar_pr17
+workalendar_workalendar_pr22
+workalendar_workalendar_pr24
+workalendar_workalendar_pr32
+workalendar_workalendar_pr34
+workalendar_workalendar_pr36
+workalendar_workalendar_pr37
+workalendar_workalendar_pr41
+workalendar_workalendar_pr42
+workalendar_workalendar_pr43
+workalendar_workalendar_pr44
+workalendar_workalendar_pr46
+workalendar_workalendar_pr51
+workalendar_workalendar_pr60
+workalendar_workalendar_pr61
+workalendar_workalendar_pr63
+workhorsy_py-cpuinfo_pr103
+workhorsy_py-cpuinfo_pr114
+workhorsy_py-cpuinfo_pr116
+workhorsy_py-cpuinfo_pr121
+workhorsy_py-cpuinfo_pr123
+workhorsy_py-cpuinfo_pr129
+workhorsy_py-cpuinfo_pr131
+workhorsy_py-cpuinfo_pr145
+workhorsy_py-cpuinfo_pr148
+workhorsy_py-cpuinfo_pr151
+workhorsy_py-cpuinfo_pr156
+workhorsy_py-cpuinfo_pr165
+workhorsy_py-cpuinfo_pr167
+workhorsy_py-cpuinfo_pr173
+workhorsy_py-cpuinfo_pr182
+workhorsy_py-cpuinfo_pr194
+workhorsy_py-cpuinfo_pr47
+workhorsy_py-cpuinfo_pr57
+workhorsy_py-cpuinfo_pr64
+workhorsy_py-cpuinfo_pr67
+workhorsy_py-cpuinfo_pr73
+workhorsy_py-cpuinfo_pr83
+wwrechard_pydlm_pr78
+wwrechard_pydlm_pr82
+wyfo_apischema_pr1
+wyfo_apischema_pr10
+wyfo_apischema_pr12
+wyfo_apischema_pr13
+wyfo_apischema_pr16
+wyfo_apischema_pr18
+wyfo_apischema_pr19
+wyfo_apischema_pr26
+wyfo_apischema_pr3
+wyfo_apischema_pr30
+wyfo_apischema_pr31
+wyfo_apischema_pr33
+wyfo_apischema_pr386
+wyfo_apischema_pr4
+wyfo_apischema_pr412
+wyfo_apischema_pr501
+wyfo_apischema_pr521
+wyfo_apischema_pr596
+wyfo_apischema_pr597
+wyfo_apischema_pr6
+wyfo_apischema_pr604
+wyfo_apischema_pr640
+xarray-contrib_cf-xarray_pr103
+xarray-contrib_cf-xarray_pr104
+xarray-contrib_cf-xarray_pr108
+xarray-contrib_cf-xarray_pr11
+xarray-contrib_cf-xarray_pr110
+xarray-contrib_cf-xarray_pr115
+xarray-contrib_cf-xarray_pr117
+xarray-contrib_cf-xarray_pr118
+xarray-contrib_cf-xarray_pr131
+xarray-contrib_cf-xarray_pr14
+xarray-contrib_cf-xarray_pr146
+xarray-contrib_cf-xarray_pr148
+xarray-contrib_cf-xarray_pr150
+xarray-contrib_cf-xarray_pr151
+xarray-contrib_cf-xarray_pr158
+xarray-contrib_cf-xarray_pr159
+xarray-contrib_cf-xarray_pr16
+xarray-contrib_cf-xarray_pr162
+xarray-contrib_cf-xarray_pr164
+xarray-contrib_cf-xarray_pr167
+xarray-contrib_cf-xarray_pr169
+xarray-contrib_cf-xarray_pr173
+xarray-contrib_cf-xarray_pr180
+xarray-contrib_cf-xarray_pr181
+xarray-contrib_cf-xarray_pr185
+xarray-contrib_cf-xarray_pr192
+xarray-contrib_cf-xarray_pr196
+xarray-contrib_cf-xarray_pr198
+xarray-contrib_cf-xarray_pr205
+xarray-contrib_cf-xarray_pr206
+xarray-contrib_cf-xarray_pr213
+xarray-contrib_cf-xarray_pr214
+xarray-contrib_cf-xarray_pr22
+xarray-contrib_cf-xarray_pr221
+xarray-contrib_cf-xarray_pr222
+xarray-contrib_cf-xarray_pr224
+xarray-contrib_cf-xarray_pr227
+xarray-contrib_cf-xarray_pr234
+xarray-contrib_cf-xarray_pr240
+xarray-contrib_cf-xarray_pr243
+xarray-contrib_cf-xarray_pr250
+xarray-contrib_cf-xarray_pr252
+xarray-contrib_cf-xarray_pr255
+xarray-contrib_cf-xarray_pr264
+xarray-contrib_cf-xarray_pr27
+xarray-contrib_cf-xarray_pr287
+xarray-contrib_cf-xarray_pr293
+xarray-contrib_cf-xarray_pr294
+xarray-contrib_cf-xarray_pr298
+xarray-contrib_cf-xarray_pr302
+xarray-contrib_cf-xarray_pr304
+xarray-contrib_cf-xarray_pr315
+xarray-contrib_cf-xarray_pr321
+xarray-contrib_cf-xarray_pr324
+xarray-contrib_cf-xarray_pr327
+xarray-contrib_cf-xarray_pr328
+xarray-contrib_cf-xarray_pr331
+xarray-contrib_cf-xarray_pr343
+xarray-contrib_cf-xarray_pr347
+xarray-contrib_cf-xarray_pr359
+xarray-contrib_cf-xarray_pr370
+xarray-contrib_cf-xarray_pr376
+xarray-contrib_cf-xarray_pr38
+xarray-contrib_cf-xarray_pr394
+xarray-contrib_cf-xarray_pr42
+xarray-contrib_cf-xarray_pr53
+xarray-contrib_cf-xarray_pr54
+xarray-contrib_cf-xarray_pr56
+xarray-contrib_cf-xarray_pr60
+xarray-contrib_cf-xarray_pr62
+xarray-contrib_cf-xarray_pr63
+xarray-contrib_cf-xarray_pr64
+xarray-contrib_cf-xarray_pr65
+xarray-contrib_cf-xarray_pr66
+xarray-contrib_cf-xarray_pr68
+xarray-contrib_cf-xarray_pr85
+xarray-contrib_cf-xarray_pr86
+xarray-contrib_cf-xarray_pr93
+xarray-contrib_cf-xarray_pr95
+xarray-contrib_cf-xarray_pr96
+xarray-contrib_cf-xarray_pr98
+xarray-contrib_datatree_pr105
+xarray-contrib_datatree_pr106
+xarray-contrib_datatree_pr107
+xarray-contrib_datatree_pr109
+xarray-contrib_datatree_pr115
+xarray-contrib_datatree_pr13
+xarray-contrib_datatree_pr156
+xarray-contrib_datatree_pr159
+xarray-contrib_datatree_pr160
+xarray-contrib_datatree_pr169
+xarray-contrib_datatree_pr170
+xarray-contrib_datatree_pr172
+xarray-contrib_datatree_pr175
+xarray-contrib_datatree_pr177
+xarray-contrib_datatree_pr178
+xarray-contrib_datatree_pr185
+xarray-contrib_datatree_pr201
+xarray-contrib_datatree_pr208
+xarray-contrib_datatree_pr263
+xarray-contrib_datatree_pr267
+xarray-contrib_datatree_pr269
+xarray-contrib_datatree_pr32
+xarray-contrib_datatree_pr34
+xarray-contrib_datatree_pr40
+xarray-contrib_datatree_pr78
+xarray-contrib_datatree_pr86
+xarray-contrib_datatree_pr88
+xarray-contrib_datatree_pr98
+xarray-contrib_datatree_pr99
+xarray-contrib_flox_pr104
+xarray-contrib_flox_pr114
+xarray-contrib_flox_pr115
+xarray-contrib_flox_pr131
+xarray-contrib_flox_pr135
+xarray-contrib_flox_pr158
+xarray-contrib_flox_pr164
+xarray-contrib_flox_pr176
+xarray-contrib_flox_pr177
+xarray-contrib_flox_pr186
+xarray-contrib_flox_pr219
+xarray-contrib_flox_pr225
+xarray-contrib_flox_pr228
+xarray-contrib_flox_pr235
+xarray-contrib_flox_pr241
+xarray-contrib_flox_pr283
+xarray-contrib_flox_pr383
+xarray-contrib_flox_pr389
+xarray-contrib_flox_pr412
+xarray-contrib_flox_pr424
+xarray-contrib_flox_pr425
+xarray-contrib_flox_pr434
+xarray-contrib_flox_pr445
+xarray-contrib_flox_pr451
+xarray-contrib_flox_pr455
+xarray-contrib_flox_pr457
+xarray-contrib_flox_pr56
+xarray-contrib_flox_pr58
+xarray-contrib_flox_pr76
+xarray-contrib_flox_pr78
+xarray-contrib_pint-xarray_pr126
+xarray-contrib_pint-xarray_pr163
+xarray-contrib_pint-xarray_pr168
+xarray-contrib_pint-xarray_pr174
+xarray-contrib_pint-xarray_pr241
+xarray-contrib_pint-xarray_pr304
+xarray-contrib_pint-xarray_pr31
+xarray-contrib_pint-xarray_pr316
+xarray-contrib_pint-xarray_pr324
+xarray-contrib_pint-xarray_pr325
+xarray-contrib_pint-xarray_pr329
+xarray-contrib_pint-xarray_pr43
+xarray-contrib_pint-xarray_pr49
+xarray-contrib_pint-xarray_pr56
+xarray-contrib_pint-xarray_pr60
+xarray-contrib_pint-xarray_pr63
+xarray-contrib_pint-xarray_pr69
+xarray-contrib_pint-xarray_pr72
+xarray-contrib_pint-xarray_pr73
+xarray-contrib_pint-xarray_pr76
+xarray-contrib_pint-xarray_pr82
+xarray-contrib_pint-xarray_pr85
+xarray-contrib_pint-xarray_pr92
+xarray-contrib_pint-xarray_pr97
+xgcm_xrft_pr100
+xgcm_xrft_pr103
+xgcm_xrft_pr112
+xgcm_xrft_pr118
+xgcm_xrft_pr122
+xgcm_xrft_pr126
+xgcm_xrft_pr128
+xgcm_xrft_pr129
+xgcm_xrft_pr134
+xgcm_xrft_pr139
+xgcm_xrft_pr143
+xgcm_xrft_pr149
+xgcm_xrft_pr152
+xgcm_xrft_pr157
+xgcm_xrft_pr161
+xgcm_xrft_pr163
+xgcm_xrft_pr174
+xgcm_xrft_pr179
+xgcm_xrft_pr186
+xgcm_xrft_pr190
+xgcm_xrft_pr195
+xgcm_xrft_pr197
+xgcm_xrft_pr209
+xgcm_xrft_pr54
+xgcm_xrft_pr66
+xgcm_xrft_pr70
+xgcm_xrft_pr80
+xgcm_xrft_pr88
+xgcm_xrft_pr89
+xgcm_xrft_pr90
+xgcm_xrft_pr95
+xhtml2pdf_xhtml2pdf_pr604
+xhtml2pdf_xhtml2pdf_pr712
+xhtml2pdf_xhtml2pdf_pr717
+xhtml2pdf_xhtml2pdf_pr725
+xhtml2pdf_xhtml2pdf_pr734
+xhtml2pdf_xhtml2pdf_pr784
+xmunoz_sodapy_pr23
+xmunoz_sodapy_pr53
+xnuinside_simple-ddl-parser_pr100
+xnuinside_simple-ddl-parser_pr104
+xnuinside_simple-ddl-parser_pr113
+xnuinside_simple-ddl-parser_pr114
+xnuinside_simple-ddl-parser_pr129
+xnuinside_simple-ddl-parser_pr13
+xnuinside_simple-ddl-parser_pr132
+xnuinside_simple-ddl-parser_pr136
+xnuinside_simple-ddl-parser_pr15
+xnuinside_simple-ddl-parser_pr152
+xnuinside_simple-ddl-parser_pr2
+xnuinside_simple-ddl-parser_pr20
+xnuinside_simple-ddl-parser_pr202
+xnuinside_simple-ddl-parser_pr21
+xnuinside_simple-ddl-parser_pr214
+xnuinside_simple-ddl-parser_pr217
+xnuinside_simple-ddl-parser_pr219
+xnuinside_simple-ddl-parser_pr220
+xnuinside_simple-ddl-parser_pr224
+xnuinside_simple-ddl-parser_pr228
+xnuinside_simple-ddl-parser_pr23
+xnuinside_simple-ddl-parser_pr230
+xnuinside_simple-ddl-parser_pr231
+xnuinside_simple-ddl-parser_pr233
+xnuinside_simple-ddl-parser_pr237
+xnuinside_simple-ddl-parser_pr24
+xnuinside_simple-ddl-parser_pr241
+xnuinside_simple-ddl-parser_pr242
+xnuinside_simple-ddl-parser_pr244
+xnuinside_simple-ddl-parser_pr256
+xnuinside_simple-ddl-parser_pr26
+xnuinside_simple-ddl-parser_pr266
+xnuinside_simple-ddl-parser_pr274
+xnuinside_simple-ddl-parser_pr277
+xnuinside_simple-ddl-parser_pr283
+xnuinside_simple-ddl-parser_pr287
+xnuinside_simple-ddl-parser_pr289
+xnuinside_simple-ddl-parser_pr33
+xnuinside_simple-ddl-parser_pr45
+xnuinside_simple-ddl-parser_pr49
+xnuinside_simple-ddl-parser_pr51
+xnuinside_simple-ddl-parser_pr52
+xnuinside_simple-ddl-parser_pr56
+xnuinside_simple-ddl-parser_pr58
+xnuinside_simple-ddl-parser_pr67
+xnuinside_simple-ddl-parser_pr7
+xnuinside_simple-ddl-parser_pr8
+xnuinside_simple-ddl-parser_pr82
+xnuinside_simple-ddl-parser_pr84
+xnuinside_simple-ddl-parser_pr86
+xnuinside_simple-ddl-parser_pr93
+xnuinside_simple-ddl-parser_pr97
+xnuinside_simple-ddl-parser_pr98
+yeraydiazdiaz_lunr.py_pr6
+yeraydiazdiaz_lunr.py_pr63
+ynqa_pandavro_pr10
+ynqa_pandavro_pr12
+ynqa_pandavro_pr22
+ynqa_pandavro_pr31
+ynqa_pandavro_pr34
+ynqa_pandavro_pr41
+ynqa_pandavro_pr8
+your-tools_python-cli-ui_pr106
+your-tools_python-cli-ui_pr58
+your-tools_python-cli-ui_pr65
+your-tools_python-cli-ui_pr74
+yt-project_unyt_pr102
+yt-project_unyt_pr103
+yt-project_unyt_pr106
+yt-project_unyt_pr108
+yt-project_unyt_pr109
+yt-project_unyt_pr111
+yt-project_unyt_pr114
+yt-project_unyt_pr115
+yt-project_unyt_pr122
+yt-project_unyt_pr129
+yt-project_unyt_pr131
+yt-project_unyt_pr133
+yt-project_unyt_pr134
+yt-project_unyt_pr135
+yt-project_unyt_pr137
+yt-project_unyt_pr140
+yt-project_unyt_pr151
+yt-project_unyt_pr152
+yt-project_unyt_pr153
+yt-project_unyt_pr155
+yt-project_unyt_pr160
+yt-project_unyt_pr162
+yt-project_unyt_pr164
+yt-project_unyt_pr170
+yt-project_unyt_pr172
+yt-project_unyt_pr174
+yt-project_unyt_pr176
+yt-project_unyt_pr185
+yt-project_unyt_pr188
+yt-project_unyt_pr19
+yt-project_unyt_pr191
+yt-project_unyt_pr197
+yt-project_unyt_pr2
+yt-project_unyt_pr20
+yt-project_unyt_pr204
+yt-project_unyt_pr21
+yt-project_unyt_pr211
+yt-project_unyt_pr217
+yt-project_unyt_pr219
+yt-project_unyt_pr22
+yt-project_unyt_pr225
+yt-project_unyt_pr228
+yt-project_unyt_pr23
+yt-project_unyt_pr231
+yt-project_unyt_pr242
+yt-project_unyt_pr250
+yt-project_unyt_pr277
+yt-project_unyt_pr278
+yt-project_unyt_pr3
+yt-project_unyt_pr31
+yt-project_unyt_pr35
+yt-project_unyt_pr41
+yt-project_unyt_pr44
+yt-project_unyt_pr5
+yt-project_unyt_pr52
+yt-project_unyt_pr54
+yt-project_unyt_pr56
+yt-project_unyt_pr58
+yt-project_unyt_pr62
+yt-project_unyt_pr64
+yt-project_unyt_pr65
+yt-project_unyt_pr72
+yt-project_unyt_pr73
+yt-project_unyt_pr78
+yt-project_unyt_pr79
+yt-project_unyt_pr80
+yt-project_unyt_pr81
+yt-project_unyt_pr82
+yt-project_unyt_pr86
+yt-project_unyt_pr93
+yt-project_unyt_pr96
+yu-iskw_dbt-artifacts-parser_pr16
+yu-iskw_dbt-artifacts-parser_pr172
+yu-iskw_dbt-artifacts-parser_pr182
+yu-iskw_dbt-artifacts-parser_pr19
+yu-iskw_dbt-artifacts-parser_pr48
+yu-iskw_dbt-artifacts-parser_pr79
+yu-iskw_dbt-artifacts-parser_pr8
+yurymalkov_hnsw_pr16
+yurymalkov_hnsw_pr27
+yurymalkov_hnsw_pr85
+yuvipanda_ipynb_pr19
+zabbix_python-zabbix-utils_pr13
+zabuldon_teslajsonpy_pr105
+zabuldon_teslajsonpy_pr108
+zabuldon_teslajsonpy_pr122
+zabuldon_teslajsonpy_pr393
+zabuldon_teslajsonpy_pr409
+zabuldon_teslajsonpy_pr418
+zabuldon_teslajsonpy_pr425
+zabuldon_teslajsonpy_pr432
+zabuldon_teslajsonpy_pr451
+zabuldon_teslajsonpy_pr457
+zabuldon_teslajsonpy_pr458
+zabuldon_teslajsonpy_pr464
+zabuldon_teslajsonpy_pr467
+zabuldon_teslajsonpy_pr469
+zabuldon_teslajsonpy_pr476
+zabuldon_teslajsonpy_pr79
+zabuldon_teslajsonpy_pr99
+zapier_email-reply-parser_pr14
+zapier_email-reply-parser_pr31
+zeth_inputs_pr33
+zeth_inputs_pr41
+zeth_inputs_pr47
+zeth_inputs_pr49
+zeth_inputs_pr57
+zfit_zfit_pr6
+zheller_flake8-quotes_pr27
+zheller_flake8-quotes_pr32
+zheller_flake8-quotes_pr34
+zheller_flake8-quotes_pr52
+zheller_flake8-quotes_pr54
+zheller_flake8-quotes_pr57
+zheller_flake8-quotes_pr78
+zheller_flake8-quotes_pr81
+zheller_flake8-quotes_pr94
+zheller_flake8-quotes_pr96
+zheller_flake8-quotes_pr99
+zhelyabuzhsky_stockfish_pr11
+zhelyabuzhsky_stockfish_pr19
+zhelyabuzhsky_stockfish_pr2
+zhelyabuzhsky_stockfish_pr23
+zhelyabuzhsky_stockfish_pr24
+zhelyabuzhsky_stockfish_pr26
+zhelyabuzhsky_stockfish_pr30
+zhelyabuzhsky_stockfish_pr33
+zhelyabuzhsky_stockfish_pr48
+zhelyabuzhsky_stockfish_pr61
+zhelyabuzhsky_stockfish_pr63
+zhelyabuzhsky_stockfish_pr64
+zhelyabuzhsky_stockfish_pr7
+zhelyabuzhsky_stockfish_pr80
diff --git a/resources_servers/scale_swe/diagnose_failures.py b/resources_servers/scale_swe/diagnose_failures.py
new file mode 100644
index 00000000000..1ccaf9e38be
--- /dev/null
+++ b/resources_servers/scale_swe/diagnose_failures.py
@@ -0,0 +1,234 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Separate golden-patch failures caused by the sandbox from failures of the row itself.
+
+This exists because `evaluation_completed` does not answer the question. A build that is
+OOM-killed, or a test suite that runs out of disk, still produces a parsed log and a verdict --
+the tests simply failed. That grades identically to a genuinely broken golden patch, so raising
+the memory limit would silently change the "supported" set.
+
+The signatures below are read out of the captured test output, so a failure is attributed to
+resources only on direct evidence, never inferred from the fact that it failed.
+
+ python resources_servers/scale_swe/diagnose_failures.py results/.../pass1_job_X.jsonl
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+
+# Ordered: the first match wins, so the most specific cause is reported.
+RESOURCE_SIGNATURES: tuple[tuple[str, tuple[str, ...]], ...] = (
+ (
+ "disk_full",
+ ("no space left on device", "enospc", "disk quota exceeded", "write error: no space"),
+ ),
+ (
+ "oom",
+ (
+ "out of memory",
+ "outofmemoryerror",
+ "cannot allocate memory",
+ "oom-kill",
+ "oom killed",
+ "killed process",
+ "memoryerror",
+ "signal: killed",
+ "runtime: out of memory",
+ "fatal error: out of memory",
+ "std::bad_alloc",
+ "exit status 137",
+ "javaheapspace",
+ "java heap space",
+ "gc overhead limit exceeded",
+ ),
+ ),
+ (
+ "process_killed",
+ # A bare SIGKILL with no allocator message. Usually the cgroup OOM killer, but the
+ # evidence is weaker, so it is reported separately rather than folded into `oom`.
+ ("killed", "sigkill", "terminated by signal 9"),
+ ),
+ (
+ "too_many_files",
+ ("too many open files", "emfile"),
+ ),
+ (
+ "network",
+ # An egress fault -- pip/git failing to reach a registry -- rather than evidence the
+ # golden patch is wrong. Confirm against the actual output before trusting a raised
+ # limit or a retry policy change: SWE-rebench's version of this bucket turned out to be
+ # one specific unreachable host, not a sandbox-wide restriction (see that server's
+ # diagnose_failures.py history for the false starts before the real cause was found).
+ (
+ "could not resolve host",
+ "connection refused",
+ "network is unreachable",
+ "temporary failure in name resolution",
+ "etimedout",
+ "econnreset",
+ "proxyconnect",
+ ),
+ ),
+)
+
+
+def classify_output(text: str) -> str | None:
+ """Return the resource cause evidenced in the output, or None."""
+ lowered = text.lower()
+ for label, needles in RESOURCE_SIGNATURES:
+ if any(needle in lowered for needle in needles):
+ return label
+ return None
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument("rollouts_jsonl", type=Path)
+ parser.add_argument(
+ "--timeout-s",
+ type=float,
+ default=1200.0,
+ help="The configured evaluation timeout; runs within --near of it are treated as timing out.",
+ )
+ parser.add_argument("--near", type=float, default=0.9, help="Fraction of the timeout that counts as 'near'.")
+ parser.add_argument("--show", type=int, default=4, help="Example instance ids to print per cause.")
+ args = parser.parse_args()
+
+ if not args.rollouts_jsonl.exists():
+ print(f"no such file: {args.rollouts_jsonl}", file=sys.stderr)
+ return 2
+
+ total = 0
+ resolved = 0
+ failures: list[dict[str, Any]] = []
+ durations: list[float] = []
+
+ for row in _rows(args.rollouts_jsonl):
+ total += 1
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ durations.append(duration)
+ if row.get("resolved"):
+ resolved += 1
+ continue
+ failures.append(row)
+
+ if total == 0:
+ print("no rows", file=sys.stderr)
+ return 2
+
+ causes: Counter[str] = Counter()
+ examples: dict[str, list[str]] = defaultdict(list)
+ by_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ for row in failures:
+ instance_id = str(row.get("instance_id") or "?")
+ language = str(row.get("language") or "unknown")
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ output = str(row.get("test_output") or "")
+ error = str(row.get("error") or "")
+
+ if not row.get("evaluation_completed", False):
+ cause = "no_verdict"
+ elif duration >= args.timeout_s * args.near:
+ # Ran to (or near) the ceiling. With CPU requests well below limits this is the
+ # shape CPU starvation takes: the work is not wrong, it just never finished.
+ cause = "timeout"
+ elif (row.get("test_results") or {}).get("tests_observed", 0) == 0 and (row.get("test_results") is not None):
+ # pytest saw zero tests, so nothing ran: pre_commands or the patch/f2p-script
+ # apply died before the suite started, or the named test files never exist in
+ # this checkout. A different thing from "the tests failed" -- the golden patch is
+ # not implicated either way, so this is not scored as evidence against the row.
+ cause = classify_output(output + "\n" + error) or "no_tests_ran"
+ else:
+ cause = classify_output(output + "\n" + error) or "row_failure"
+
+ causes[cause] += 1
+ by_language[language][cause] += 1
+ if len(examples[cause]) < args.show:
+ examples[cause].append(f"{instance_id} ({language}, {duration:.0f}s)")
+
+ # Causes that are about the environment rather than the row. `no_tests_ran` is included:
+ # a suite that never started says nothing about whether the golden patch is correct.
+ resource_causes = {
+ "oom",
+ "disk_full",
+ "process_killed",
+ "too_many_files",
+ "network",
+ "timeout",
+ "no_verdict",
+ "no_tests_ran",
+ }
+ resource_total = sum(count for cause, count in causes.items() if cause in resource_causes)
+
+ print(f"rows: {total} resolved: {resolved} ({100 * resolved / total:.1f}%) failures: {len(failures)}")
+ if durations:
+ ordered = sorted(durations)
+ p50 = ordered[len(ordered) // 2]
+ p95 = ordered[min(len(ordered) - 1, int(len(ordered) * 0.95))]
+ print(
+ f"verification seconds: p50={p50:.0f} p95={p95:.0f} max={ordered[-1]:.0f} (timeout {args.timeout_s:.0f})"
+ )
+ print()
+ print("failure attribution:")
+ for cause, count in causes.most_common():
+ marker = "ENV" if cause in resource_causes else "row"
+ share = 100 * count / max(len(failures), 1)
+ print(f" {cause:<16} {count:>5} ({share:5.1f}% of failures) [{marker}]")
+ for example in examples[cause]:
+ print(f" e.g. {example}")
+
+ print()
+ if not failures:
+ print("VERDICT: no failures to attribute")
+ elif resource_total == 0:
+ print("VERDICT: no failure shows resource evidence — these look like genuine row failures.")
+ print(" Raising sandbox limits would not change the supported set.")
+ else:
+ share = 100 * resource_total / len(failures)
+ print(
+ f"VERDICT: {resource_total}/{len(failures)} failures ({share:.1f}%) show resource or environment evidence."
+ )
+ print(" Raise the relevant limit and re-measure before treating these rows as broken.")
+
+ if by_language:
+ print("\n per-language failure causes:")
+ for language, counts in sorted(by_language.items(), key=lambda kv: -sum(kv[1].values())):
+ summary = " ".join(f"{cause}={count}" for cause, count in counts.most_common())
+ print(f" {language:<10} {summary}")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/resources_servers/scale_swe/prepare_scale_swe.py b/resources_servers/scale_swe/prepare_scale_swe.py
new file mode 100644
index 00000000000..1cd7bdf41c4
--- /dev/null
+++ b/resources_servers/scale_swe/prepare_scale_swe.py
@@ -0,0 +1,110 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Prepare AweAI-Team/Scale-SWE training data for NeMo Gym, from the Hub.
+
+This is a training dataset, not an eval benchmark -- there is no fixed/frozen reference split,
+and the output is meant to feed a training run, not to be scored against as a leaderboard.
+
+Writes only the rows already known to be usable: `data/supported_instance_ids.txt` (17,696 of
+the Hub's 20,181 instances) is the result of a full-set 3x golden-patch sweep -- a row not on
+that list either never resolves, never produced a verdict, or resolves inconsistently across
+passes (see `aggregate_golden_patch.py` and the README), so it is not worth carrying into the
+training jsonl at all rather than shipping a row no agent run could usefully score.
+
+Streams the Hub dataset and filters row-by-row rather than loading the full ~940 MB split just
+to keep 88% of it -- but the *kept* rows are still buffered and shuffled (fixed seed, so re-runs
+are reproducible) before writing, since the Hub's own row order is grouped by repo, not
+randomised, and training on that order as-is would bias early steps toward whichever repos
+happen to sort first.
+
+ SCALE_SWE_LIMIT=200 python resources_servers/scale_swe/prepare_scale_swe.py
+"""
+
+import json
+import os
+import random
+from pathlib import Path
+
+
+SHUFFLE_SEED = 0
+
+DATASET_NAME = "AweAI-Team/Scale-SWE"
+SUPPORTED_IDS_FPATH = Path(__file__).parent / "data" / "supported_instance_ids.txt"
+OUTPUT_FPATH = Path(__file__).parent / "data" / "scale_swe_training.jsonl"
+
+AGENT_REF = {"type": "responses_api_agents", "name": "scale_swe_opencode_sandboxed_agent"}
+
+# The Hub row's own fields this server's request model reads (see app.py's
+# ScaleSWEInstanceRequest) -- extras like `github_url`/`parent_commit`/`pr_commit`/`user` are
+# dropped rather than carried through unused. FAIL_TO_PASS/PASS_TO_PASS arrive as JSON-encoded
+# strings, not lists, in this dataset -- kept exactly as-received, matching the request model's
+# `str | list[str]` type, rather than decoded and possibly round-tripped differently.
+ROW_FIELDS = (
+ "instance_id",
+ "repo",
+ "language",
+ "workdir",
+ "image_url",
+ "patch",
+ "pre_commands",
+ "problem_statement",
+ "f2p_patch",
+ "f2p_script",
+ "FAIL_TO_PASS",
+ "PASS_TO_PASS",
+)
+
+
+def _load_supported_ids(fpath: Path) -> set[str]:
+ return {line.strip() for line in fpath.read_text(encoding="utf-8").splitlines() if line.strip()}
+
+
+def prepare(supported_ids: set[str], limit: int = 0) -> Path:
+ from datasets import load_dataset
+
+ OUTPUT_FPATH.parent.mkdir(parents=True, exist_ok=True)
+ dataset = load_dataset(DATASET_NAME, split="train", streaming=True)
+
+ rows = []
+ for example in dataset:
+ if limit and len(rows) >= limit:
+ break
+ if example["instance_id"] not in supported_ids:
+ continue
+
+ row = {field: example[field] for field in ROW_FIELDS}
+ row["responses_create_params"] = {"input": [{"role": "user", "content": row["problem_statement"]}]}
+ row["agent_ref"] = AGENT_REF
+
+ rows.append(row)
+
+ random.Random(SHUFFLE_SEED).shuffle(rows)
+
+ with OUTPUT_FPATH.open("w", encoding="utf-8") as fout:
+ for row in rows:
+ fout.write(json.dumps(row) + "\n")
+
+ print(f"Wrote {len(rows)} Scale-SWE problems to {OUTPUT_FPATH} (shuffled, seed={SHUFFLE_SEED})")
+ missing = len(supported_ids) - len(rows)
+ if missing:
+ print(f" {missing} supported id(s) from {SUPPORTED_IDS_FPATH.name} were not found in the Hub dataset")
+ return OUTPUT_FPATH
+
+
+if __name__ == "__main__":
+ prepare(
+ _load_supported_ids(SUPPORTED_IDS_FPATH),
+ int(os.environ.get("SCALE_SWE_LIMIT") or 0),
+ )
diff --git a/resources_servers/scale_swe/requirements.txt b/resources_servers/scale_swe/requirements.txt
new file mode 100644
index 00000000000..2c9ef83ea2a
--- /dev/null
+++ b/resources_servers/scale_swe/requirements.txt
@@ -0,0 +1 @@
+-e nemo-gym[dev,sandbox] @ ../..
diff --git a/resources_servers/scale_swe/task_data.py b/resources_servers/scale_swe/task_data.py
new file mode 100644
index 00000000000..a87a95876ed
--- /dev/null
+++ b/resources_servers/scale_swe/task_data.py
@@ -0,0 +1,30 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+"""Task-data schema for the Scale-SWE resources server.
+
+Mirrors ``app.ScaleSWEInstanceRequest``: required-ness follows the wire contract, not what
+``verify()`` happens to read.
+"""
+
+from pydantic import BaseModel, ConfigDict, Field
+
+
+class TaskData(BaseModel):
+ """One AweAI-Team/Scale-SWE task."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str = Field(json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ repo: str = Field(default="", json_schema_extra={"consumed_by": ["provenance"]})
+ language: str = Field(default="python", json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ workdir: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ image_url: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ pre_commands: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ problem_statement: str = Field(default="", json_schema_extra={"consumed_by": ["prompt", "provenance"]})
+ f2p_patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ f2p_script: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ # JSON-encoded strings on the wire in this dataset; kept typed str | list[str] so a row
+ # round-trips unchanged either way (see verification.as_id_list).
+ FAIL_TO_PASS: str | list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["verify"]})
+ PASS_TO_PASS: str | list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["verify"]})
diff --git a/resources_servers/scale_swe/tests/__init__.py b/resources_servers/scale_swe/tests/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/scale_swe/tests/test_app.py b/resources_servers/scale_swe/tests/test_app.py
new file mode 100644
index 00000000000..71b7a12e682
--- /dev/null
+++ b/resources_servers/scale_swe/tests/test_app.py
@@ -0,0 +1,422 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Tests for the Scale-SWE resources server's grading and script construction.
+
+These cover the parts that decide whether a task counts as resolved. The sandbox lifecycle
+itself is exercised by the golden-patch run, which needs a live OpenSandbox endpoint.
+
+Several tests here pin bugs that were actually hit building resources_servers/swe_rebench (the
+sibling server): a verify response missing the echoed request fields, and a multi-worker
+entrypoint with no module-level `app`. Both looked fine locally and both only failed once real
+traffic hit them. Writing the same tests here from the start is cheaper than re-discovering the
+same two bugs on a second dataset.
+"""
+
+from types import SimpleNamespace
+
+import pytest
+
+from resources_servers.scale_swe.verification import (
+ F2P_SCRIPT_NAME,
+ TEST_OUTPUT_BEGIN,
+ TEST_OUTPUT_END,
+ VerificationInputs,
+ as_id_list,
+ build_eval_script,
+ extract_statuses,
+ grade,
+ run_verification,
+ slice_test_output,
+ unique_test_files,
+ verification_files,
+)
+
+
+def _inputs(**overrides) -> VerificationInputs:
+ base = dict(
+ instance_id="auth0_auth0-python_pr671",
+ workdir="/workspace/auth0-python",
+ patch="diff --git a/a b/a\n",
+ pre_commands="git checkout deadbeef -f && git reset --hard HEAD",
+ f2p_patch="",
+ f2p_script="import pytest\ndef test_thing(): assert True\n",
+ fail_to_pass=[f"{F2P_SCRIPT_NAME}::test_thing"],
+ pass_to_pass=["tests/test_base.py::TestBase::test_get"],
+ )
+ base.update(overrides)
+ return VerificationInputs(**base)
+
+
+class TestAsIdList:
+ def test_decodes_the_json_encoded_string_the_dataset_ships(self) -> None:
+ # FAIL_TO_PASS / PASS_TO_PASS arrive as JSON-encoded strings in this dataset, not lists.
+ assert as_id_list('["a::b", "c::d"]') == ["a::b", "c::d"]
+
+ def test_accepts_an_already_decoded_list(self) -> None:
+ assert as_id_list(["a::b"]) == ["a::b"]
+
+ @pytest.mark.parametrize("value", [None, "", "[]"])
+ def test_empty_inputs_yield_no_ids(self, value) -> None:
+ assert as_id_list(value) == []
+
+ def test_malformed_json_falls_back_to_a_single_literal_id_rather_than_crashing(self) -> None:
+ # A row-level data error must degrade to "one id that will not match anything" (and
+ # so masks/fails safely) rather than raise and take the whole verification down with it.
+ assert as_id_list("not json") == ["not json"]
+
+
+class TestTestFilesFor:
+ def test_extracts_unique_files_preserving_first_seen_order(self) -> None:
+ ids = ["b/test.py::test_1", "a/test.py::test_2", "b/test.py::test_3"]
+ assert unique_test_files(ids) == ["b/test.py", "a/test.py"]
+
+ def test_a_row_with_dozens_of_node_ids_still_yields_one_entry_per_file(self) -> None:
+ # A real row can carry up to ~69 files across hundreds of node ids; pytest is pointed
+ # at files, not the full id list, specifically to avoid a huge command line.
+ ids = [f"pkg/test_{i}.py::test_case_{j}" for i in range(5) for j in range(20)]
+ assert len(unique_test_files(ids)) == 5
+
+
+class TestExtractStatuses:
+ """extract_statuses matches against the row's OWN known ids rather than parsing an id out
+ of free text -- see the docstring on the function for why a whitespace-delimited regex is
+ wrong for this dataset. These tests are built from a real failure: one row in a 200-row
+ validation pass had 954/954 tests pass, but the naive parser truncated every parametrized
+ id at its first space and scored the row as a near-total regression."""
+
+ def test_reads_passed_and_failed_for_plain_ids(self) -> None:
+ log = "PASSED test_a.py::test_1\nFAILED test_a.py::test_2 - AssertionError\n"
+ statuses = extract_statuses(log, ["test_a.py::test_1", "test_a.py::test_2"])
+ assert statuses["test_a.py::test_1"] == "PASSED"
+ assert statuses["test_a.py::test_2"] == "FAILED"
+
+ def test_only_reports_the_ids_it_was_asked_about(self) -> None:
+ log = "PASSED test_a.py::test_1\nPASSED test_a.py::test_unrelated\n"
+ assert extract_statuses(log, ["test_a.py::test_1"]) == {"test_a.py::test_1": "PASSED"}
+
+ def test_handles_a_parametrized_id_containing_a_literal_space(self) -> None:
+ # The actual bug: a whitespace-delimited regex truncates this at "[No".
+ node_id = "tests/test_parser.py::test_parse_address[No address here-None]"
+ log = f"PASSED {node_id}\n"
+ assert extract_statuses(log, [node_id]) == {node_id: "PASSED"}
+
+ def test_handles_a_failed_id_whose_own_text_contains_the_reason_delimiter(self) -> None:
+ # A real dataset id: "...[2590 Elm Road NE - Warren, OH 44483-expected1]" contains a
+ # literal " - " inside its brackets, so splitting a FAILED line on " - " to find where
+ # the id ends and the reason begins is ambiguous in general. Matching against the known
+ # id directly sidesteps that.
+ node_id = "tests/test_parser.py::test_parse_address[2590 Elm Road NE - Warren, OH 44483-expected1]"
+ log = f"FAILED {node_id} - AssertionError: mismatch\n"
+ assert extract_statuses(log, [node_id]) == {node_id: "FAILED"}
+
+ def test_a_short_id_is_not_mistaken_for_a_prefix_of_a_longer_unrelated_one(self) -> None:
+ # "test_foo" must not match inside a line reporting "test_foo_extra", and trying the
+ # longer candidate id first is what prevents it.
+ log = "PASSED test_a.py::test_foo_extra\n"
+ assert extract_statuses(log, ["test_a.py::test_foo"]) == {}
+
+ def test_longer_ids_are_preferred_when_both_are_targets(self) -> None:
+ log = "PASSED test_a.py::test_foo_extra\n"
+ statuses = extract_statuses(log, ["test_a.py::test_foo", "test_a.py::test_foo_extra"])
+ assert statuses == {"test_a.py::test_foo_extra": "PASSED"}
+
+ def test_later_lines_win_when_a_test_id_appears_twice(self) -> None:
+ # pytest prints progress dots/lines first and the short summary last; the summary is
+ # authoritative.
+ log = "FAILED test_a.py::test_1\nsome retry output\nPASSED test_a.py::test_1\n"
+ assert extract_statuses(log, ["test_a.py::test_1"]) == {"test_a.py::test_1": "PASSED"}
+
+ def test_unrecognised_output_yields_no_statuses(self) -> None:
+ assert extract_statuses("collecting ... \ninternal error\n", ["test_a.py::test_1"]) == {}
+
+ def test_an_id_that_never_appears_is_absent_not_a_crash(self) -> None:
+ assert extract_statuses("PASSED test_a.py::test_1\n", ["test_a.py::test_missing"]) == {}
+
+
+class TestSliceTestOutput:
+ def test_keeps_only_the_graded_region(self) -> None:
+ log = f"pip installing\nFAILED bogus\n{TEST_OUTPUT_BEGIN}\nPASSED real\n{TEST_OUTPUT_END}\ncleanup"
+ sliced = slice_test_output(log)
+ assert "PASSED real" in sliced
+ assert "FAILED bogus" not in sliced
+ assert "cleanup" not in sliced
+
+ def test_falls_back_to_the_whole_log_when_markers_are_absent(self) -> None:
+ assert slice_test_output("PASSED a") == "PASSED a"
+
+
+class TestGrade:
+ def test_resolves_only_when_every_required_test_passes(self) -> None:
+ report = grade({"f2p": "PASSED", "p2p": "PASSED"}, ["f2p"], ["p2p"])
+ assert report["resolved"] is True
+
+ def test_a_failing_fail_to_pass_does_not_resolve(self) -> None:
+ report = grade({"f2p": "FAILED", "p2p": "PASSED"}, ["f2p"], ["p2p"])
+ assert report["resolved"] is False
+ assert report["FAIL_TO_PASS"]["failure"] == ["f2p"]
+
+ def test_a_regressed_pass_to_pass_does_not_resolve(self) -> None:
+ report = grade({"f2p": "PASSED", "p2p": "FAILED"}, ["f2p"], ["p2p"])
+ assert report["resolved"] is False
+
+ def test_a_missing_test_counts_as_not_passing(self) -> None:
+ """A test id that never appears in the output (a collection error, e.g.) must not read
+ as success or an empty pytest run scores as a resolved instance."""
+ report = grade({}, ["f2p"], ["p2p"])
+ assert report["resolved"] is False
+ assert report["tests_observed"] == 0
+
+ def test_skipped_is_not_passed(self) -> None:
+ assert grade({"f2p": "SKIPPED"}, ["f2p"], [])["resolved"] is False
+
+
+class TestBuildEvalScript:
+ def test_runs_pre_commands_before_anything_else(self) -> None:
+ # pre_commands performs the checkout of parent_commit and scrubs the fix commit out of
+ # git history; applying a patch before it would be immediately discarded.
+ script = build_eval_script(_inputs())
+ assert script.index("git checkout deadbeef") < script.index("nemo_gym_patch.diff")
+
+ def test_signals_a_missing_workdir(self) -> None:
+ script = build_eval_script(_inputs())
+ assert "exit 97" in script
+ assert any(line.startswith("cd ") and "/workspace/auth0-python" in line for line in script.splitlines())
+
+ def test_omits_the_patch_step_when_there_is_no_patch(self) -> None:
+ script = build_eval_script(_inputs(patch=""))
+ assert "nemo_gym_patch.diff" not in script
+
+ def test_installs_f2p_script_from_tmp_not_by_writing_into_the_repo_first(self) -> None:
+ # f2p_script cannot be written into the repo before pre_commands: `git clean -fd` (part
+ # of every row's pre_commands) would delete it. It is uploaded to /tmp and copied in
+ # afterwards instead.
+ script = build_eval_script(_inputs())
+ assert f"cp /tmp/nemo_gym_f2p_script.py {F2P_SCRIPT_NAME}" in script
+ copy_at = script.index("cp /tmp/nemo_gym_f2p_script.py")
+ pre_at = script.index("git checkout deadbeef")
+ assert pre_at < copy_at
+
+ def test_omits_the_f2p_script_step_when_the_row_has_none(self) -> None:
+ script = build_eval_script(_inputs(f2p_script=""))
+ assert "nemo_gym_f2p_script.py" not in script
+
+ def test_applies_f2p_patch_when_present(self) -> None:
+ script = build_eval_script(_inputs(f2p_patch="diff --git a/t b/t\n"))
+ assert "nemo_gym_f2p.diff" in script
+
+ def test_targets_only_the_files_named_by_fail_to_pass_and_pass_to_pass(self) -> None:
+ script = build_eval_script(_inputs(fail_to_pass=["a/test_x.py::t1"], pass_to_pass=["b/test_y.py::t2"]))
+ assert "a/test_x.py" in script
+ assert "b/test_y.py" in script
+
+ def test_brackets_the_test_command_with_markers(self) -> None:
+ script = build_eval_script(_inputs())
+ assert script.index(TEST_OUTPUT_BEGIN) < script.index("pytest") < script.index(TEST_OUTPUT_END)
+
+ def test_propagates_the_test_exit_code_not_the_setup_ones(self) -> None:
+ script = build_eval_script(_inputs())
+ assert "__test_exit=$?" in script and "exit $__test_exit" in script
+ # pre_commands and the patch steps must not abort the script (`set +e`) or a row whose
+ # history-scrub emits a nonzero exit never reaches the tests at all.
+ assert "set +e" in script
+
+
+class TestVerificationFiles:
+ def test_ships_the_script_and_only_the_pieces_that_exist(self) -> None:
+ files = verification_files(_inputs(patch="", f2p_patch=""))
+ assert "/tmp/nemo_gym_eval.sh" in files
+ assert "/tmp/nemo_gym_patch.diff" not in files
+ assert "/tmp/nemo_gym_f2p.diff" not in files
+ assert "/tmp/nemo_gym_f2p_script.py" in files
+
+ def test_ships_the_f2p_patch_when_the_row_has_one(self) -> None:
+ files = verification_files(_inputs(f2p_patch="diff --git a/t b/t\n"))
+ assert "/tmp/nemo_gym_f2p.diff" in files
+
+
+class _FakeSandbox:
+ def __init__(self, stdout: str, return_code: int = 0) -> None:
+ self._result = SimpleNamespace(stdout=stdout, stderr="", return_code=return_code)
+ self.commands: list[str] = []
+
+ async def exec(self, command: str, timeout_s=None):
+ self.commands.append(command)
+ return self._result
+
+
+class TestRunVerification:
+ @pytest.mark.asyncio
+ async def test_grades_a_passing_run(self) -> None:
+ log = f"{TEST_OUTPUT_BEGIN}\nPASSED {F2P_SCRIPT_NAME}::test_thing\n{TEST_OUTPUT_END}"
+ sandbox = _FakeSandbox(log)
+ # Isolate the thing under test (marker slicing + grading of one passing id) from the
+ # unrelated PASS_TO_PASS id the shared fixture carries by default.
+ result = await run_verification(sandbox=sandbox, inputs=_inputs(pass_to_pass=[]))
+ assert result.completed and result.resolved
+ assert sandbox.commands == ["bash /tmp/nemo_gym_eval.sh"]
+
+ @pytest.mark.asyncio
+ async def test_missing_workdir_is_incomplete_not_a_zero(self) -> None:
+ result = await run_verification(sandbox=_FakeSandbox("", return_code=97), inputs=_inputs())
+ assert result.completed is False
+ assert result.resolved is False
+ assert "not present in the image" in result.error
+
+ @pytest.mark.asyncio
+ async def test_only_the_marked_region_reaches_the_parser(self) -> None:
+ log = (
+ f"pip: FAILED to fetch\n{TEST_OUTPUT_BEGIN}\n"
+ f"PASSED {F2P_SCRIPT_NAME}::test_thing\n{TEST_OUTPUT_END}\ntrailing"
+ )
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(pass_to_pass=[]))
+ assert result.resolved is True # would be masked by the install-time "FAILED" if unsliced
+
+
+class TestVerifyResponseShape:
+ """BaseVerifyResponse extends BaseVerifyRequest, so the request fields are REQUIRED on the
+ way out. Building the response from scratch drops them and the resulting ValidationError
+ surfaces to the caller as a bare JSON string -- which is how a fully successful verification
+ can still fail the whole sweep. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _body() -> dict:
+ return {
+ "instance_id": "auth0_auth0-python_pr671",
+ "workdir": "/workspace/auth0-python",
+ "image_url": "aweaiteam/scaleswe:auth0_auth0-python_pr671",
+ "language": "python",
+ "FAIL_TO_PASS": [],
+ "PASS_TO_PASS": [],
+ "responses_create_params": {"input": []},
+ "response": {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+ },
+ }
+
+ def test_spreading_the_request_body_satisfies_the_response_model(self) -> None:
+ from resources_servers.scale_swe.app import ScaleSWEVerifyResponse
+
+ response = ScaleSWEVerifyResponse.model_validate(
+ self._body()
+ | {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "test_results": {"resolved": True},
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 1.0,
+ "patch_verification_time_taken": 2.0,
+ }
+ )
+ assert response.reward == 1.0 and response.resolved
+
+ def test_omitting_the_request_fields_is_rejected(self) -> None:
+ import pydantic
+
+ from resources_servers.scale_swe.app import ScaleSWEVerifyResponse
+
+ with pytest.raises(pydantic.ValidationError, match="responses_create_params|response"):
+ ScaleSWEVerifyResponse.model_validate(
+ {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "instance_id": "i",
+ "language": "python",
+ "test_results": None,
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 0.0,
+ "patch_verification_time_taken": 0.0,
+ }
+ )
+
+
+class TestAntiCheating:
+ """seed_session must scrub the sandbox's git history before an agent gets control of it,
+ on top of whatever pre_commands already did. See resources_servers/swebench/anti_cheat.py."""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_seed_session_calls_the_shared_anti_cheat_helper(self) -> None:
+ source = self._source()
+ assert "from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup" in source
+ assert "apply_anti_cheat_setup(" in source
+
+ def test_config_enables_it_by_default(self) -> None:
+ from resources_servers.scale_swe.app import ScaleSWEResourcesServerConfig
+
+ assert ScaleSWEResourcesServerConfig.model_fields["apply_anti_cheating"].default is True
+
+ def test_seed_session_ensures_a_git_repo_before_scrubbing(self) -> None:
+ source = self._source()
+ assert "_ensure_git_repo(" in source
+ ensure_idx = source.index("await self._ensure_git_repo(")
+ anti_cheat_idx = source.index("apply_anti_cheat_setup(sandbox")
+ assert ensure_idx < anti_cheat_idx
+
+ def test_agent_facing_config_turns_it_on(self) -> None:
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "scale_swe.yaml").read_text())
+ assert config["scale_swe_resources_server"]["resources_servers"]["scale_swe"]["apply_anti_cheating"] is True
+
+
+class TestMultiWorkerEntrypoint:
+ """num_workers > 1 makes uvicorn re-import this entrypoint by path in each forked child.
+ Without a module-level `app`, every child exits and uvicorn stops the parent, so the server
+ never binds -- the symptom is a flood of connection errors from clients talking to a dead
+ port, not an ImportError. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_exposes_a_module_level_app_for_forked_workers(self) -> None:
+ source = self._source()
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in source
+ assert "app = ScaleSWEResourcesServer.run_webserver()" in source
+
+ def test_the_config_that_needs_it_still_sets_num_workers(self) -> None:
+ """Pins the pair: if num_workers is configured, the entrypoint branch must exist."""
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "scale_swe.yaml").read_text())
+ for name, block in config.items():
+ workers = block["resources_servers"]["scale_swe"].get("num_workers")
+ if workers and workers > 1:
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in self._source(), (
+ f"{name} sets num_workers={workers} but the entrypoint has no module-level app"
+ )
diff --git a/resources_servers/scale_swe/verification.py b/resources_servers/scale_swe/verification.py
new file mode 100644
index 00000000000..7295bfbf586
--- /dev/null
+++ b/resources_servers/scale_swe/verification.py
@@ -0,0 +1,320 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Run one AweAI-Team/Scale-SWE instance's tests in a sandbox and grade the result.
+
+Scale-SWE is 20,181 rows and entirely Python, so unlike the multi-language sets there is one
+test runner (pytest) and one log format. That removes the parser-dispatch problem completely.
+
+Each row carries its own image, an explicit ``workdir``, and a ``pre_commands`` string that
+performs the checkout of ``parent_commit`` and scrubs the repo's git history so the fix commit
+is not reachable. The failing tests arrive one of two ways -- a literal test file in
+``f2p_script`` (92% of rows) or a patch in ``f2p_patch`` (69%) -- and many rows have both.
+"""
+
+from __future__ import annotations
+
+import asyncio
+import json
+import re
+import shlex
+from dataclasses import dataclass, field
+from pathlib import Path
+from typing import Any, Iterable, Sequence
+
+
+TEST_OUTPUT_BEGIN = "___NEMO_GYM_SCALE_SWE_TEST_BEGIN___"
+TEST_OUTPUT_END = "___NEMO_GYM_SCALE_SWE_TEST_END___"
+
+# Where f2p_script is written. The dataset's own FAIL_TO_PASS ids name this file, so the path
+# is part of the data contract rather than a choice.
+F2P_SCRIPT_NAME = "test_fail_to_pass.py"
+
+PASSED = "PASSED"
+
+_STATUS_WORDS = ("PASSED", "FAILED", "ERROR", "XFAIL", "XPASS")
+
+
+def extract_statuses(log: str, target_ids: Iterable[str]) -> dict[str, str]:
+ """Map each of ``target_ids`` to its pytest status, read from a ``-rA`` short summary.
+
+ A naive ``STATUS `` regex (``\\S+`` up to the first whitespace) is wrong here: this
+ dataset parametrizes tests over literal address strings, so a real summary line looks like
+ ``PASSED tests/test_parser.py::test_parse_address[No address here-None]`` -- the id itself
+ contains spaces. Worse, ``FAILED``/``ERROR`` lines append `` - ``, and some of the
+ same ids ALSO contain a literal `` - `` inside their brackets (e.g.
+ ``test_parse_address[2590 Elm Road NE - Warren, OH 44483-expected1]``), so no fixed
+ delimiter reliably separates "the id" from "the reason" in general.
+
+ Measured cost of getting this wrong: one row in a 200-row sample had 954/954 tests pass,
+ with every PASSED line truncated at the first space by the naive parser -- 494 of that
+ row's PASS_TO_PASS ids then read as "absent" (not passing), scoring a fully green run as a
+ near-total regression.
+
+ The fix sidesteps the ambiguity: rather than parsing an id out of free text, check whether
+ the text after the status word STARTS WITH one of the ids we already know we need (the
+ row's own FAIL_TO_PASS/PASS_TO_PASS). Real ids always end at a syntactic boundary --
+ ``]`` for a parametrized id, an identifier character otherwise -- so a full-string
+ ``startswith`` match is exact there; it is only ambiguous for two candidate ids where one
+ is a literal prefix of the other (e.g. ``test_foo`` vs. ``test_foo_extra``), which trying
+ the longest ids first resolves.
+ """
+ ids_by_length = sorted(set(target_ids), key=len, reverse=True)
+ statuses: dict[str, str] = {}
+ for line in log.splitlines():
+ for status in _STATUS_WORDS:
+ prefix = status + " "
+ if not line.startswith(prefix):
+ continue
+ rest = line[len(prefix) :]
+ for node_id in ids_by_length:
+ if rest.startswith(node_id) and (len(rest) == len(node_id) or rest[len(node_id)] in " \t-"):
+ # Later occurrences win: pytest prints progress first and the summary
+ # last, and the summary is authoritative.
+ statuses[node_id] = status
+ break
+ break
+ return statuses
+
+
+def as_id_list(value: Any) -> list[str]:
+ """FAIL_TO_PASS / PASS_TO_PASS arrive as JSON-encoded strings in this dataset."""
+ if not value:
+ return []
+ if isinstance(value, str):
+ try:
+ decoded = json.loads(value)
+ except json.JSONDecodeError:
+ return [value]
+ return [str(item) for item in decoded] if isinstance(decoded, list) else []
+ return [str(item) for item in value]
+
+
+def unique_test_files(node_ids: Iterable[str]) -> list[str]:
+ """Unique test files named by a set of node ids, order preserved.
+
+ pytest is pointed at files rather than the ids themselves: a row can carry hundreds of ids
+ across up to ~69 files, which risks the command-line length limit, and running the file and
+ grading by id afterwards gives the same verdict without that fragility.
+ """
+ files: list[str] = []
+ for node_id in node_ids:
+ path = node_id.split("::", 1)[0].strip()
+ if path and path not in files:
+ files.append(path)
+ return files
+
+
+@dataclass
+class VerificationInputs:
+ instance_id: str
+ workdir: str
+ patch: str
+ pre_commands: str = ""
+ f2p_patch: str = ""
+ f2p_script: str = ""
+ fail_to_pass: Sequence[str] = field(default_factory=tuple)
+ pass_to_pass: Sequence[str] = field(default_factory=tuple)
+
+
+@dataclass
+class VerificationResult:
+ completed: bool
+ resolved: bool
+ patch_applied: bool
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None = None
+
+
+def clean_commands(value: str) -> str:
+ """``pre_commands`` ends with a literal backslash-n in the published data."""
+ return value.replace("\\n", "\n").strip()
+
+
+def patch_section_path(section: str) -> str | None:
+ """Return the repository-relative path one ``diff --git`` section targets."""
+ a_path: str | None = None
+ b_path: str | None = None
+ for line in section.splitlines():
+ if line.startswith("@@"):
+ break
+ if line.startswith("--- ") and a_path is None:
+ value = line[4:].strip()
+ a_path = None if value == "/dev/null" else value.removeprefix("a/")
+ elif line.startswith("+++ ") and b_path is None:
+ value = line[4:].strip()
+ b_path = None if value == "/dev/null" else value.removeprefix("b/")
+
+ if b_path or a_path:
+ return b_path or a_path
+
+ header = re.match(r"^diff --git a/(.+?) b/(.+)$", section.splitlines()[0] if section else "")
+ return header.group(2) if header else None
+
+
+def drop_patch_sections(patch: str, paths: Iterable[str]) -> str:
+ """Drop the diff sections targeting ``paths``.
+
+ ``git add -N . && git diff`` picks up every untracked file, including ones that were already
+ untracked before the agent touched anything. Excluding those paths keeps the extracted patch
+ to what the agent actually changed.
+ """
+ dropped = set(paths)
+ if not patch or not dropped:
+ return patch
+
+ kept: list[str] = []
+ for section in re.split(r"(?=^diff --git )", patch, flags=re.MULTILINE):
+ if not section.strip():
+ continue
+ path = patch_section_path(section)
+ if path is not None and path in dropped:
+ continue
+ kept.append(section)
+
+ return "".join(kept)
+
+
+def build_eval_script(inputs: VerificationInputs) -> str:
+ """The script run inside the sandbox.
+
+ ``pre_commands`` runs FIRST and unconditionally: it performs the checkout of parent_commit
+ and rewrites git history, so applying a patch before it would be undone immediately.
+ """
+ files = unique_test_files(list(inputs.fail_to_pass) + list(inputs.pass_to_pass))
+ pytest_targets = " ".join(shlex.quote(path) for path in files)
+
+ pre = clean_commands(inputs.pre_commands)
+ apply_patch = (
+ "git apply --reject --recount --ignore-space-change --whitespace=nowarn /tmp/nemo_gym_patch.diff || true"
+ if inputs.patch.strip()
+ else ""
+ )
+ apply_f2p_patch = (
+ "git apply --reject --recount --ignore-space-change --whitespace=nowarn /tmp/nemo_gym_f2p.diff || true"
+ if inputs.f2p_patch.strip()
+ else ""
+ )
+ # The script is uploaded to /tmp and copied in, rather than written into the repo before
+ # pre_commands, because `git clean -fd` there would delete it.
+ install_f2p_script = (
+ f"cp /tmp/nemo_gym_f2p_script.py {shlex.quote(F2P_SCRIPT_NAME)}" if inputs.f2p_script.strip() else ""
+ )
+
+ return f"""#!/bin/bash
+cd {shlex.quote(inputs.workdir)} || exit 97
+
+# Checkout and history scrub, from the dataset. Non-fatal: a partial setup that still reaches
+# the tests yields a real verdict, which is more informative than an unexplained infra error.
+set +e
+{pre}
+
+{apply_patch}
+{apply_f2p_patch}
+{install_f2p_script}
+
+echo "{TEST_OUTPUT_BEGIN}"
+python -m pytest -rA --tb=no -p no:cacheprovider {pytest_targets}
+__test_exit=$?
+echo "{TEST_OUTPUT_END}"
+exit $__test_exit
+"""
+
+
+def slice_test_output(log: str) -> str:
+ start = log.find(TEST_OUTPUT_BEGIN)
+ if start == -1:
+ return log
+ start += len(TEST_OUTPUT_BEGIN)
+ end = log.find(TEST_OUTPUT_END, start)
+ return log[start:end] if end != -1 else log[start:]
+
+
+def grade(statuses: dict[str, str], fail_to_pass: Iterable[str], pass_to_pass: Iterable[str]) -> dict[str, Any]:
+ """Resolved only when every required test is observed AND passing.
+
+ A test absent from the output counts as not passing: treating "absent" as success is how a
+ test command that never ran scores as a resolved instance.
+ """
+
+ def split(names: Iterable[str]) -> tuple[list[str], list[str]]:
+ passed, failed = [], []
+ for name in names:
+ (passed if statuses.get(name) == PASSED else failed).append(name)
+ return passed, failed
+
+ f2p_passed, f2p_failed = split(fail_to_pass)
+ p2p_passed, p2p_failed = split(pass_to_pass)
+ return {
+ "FAIL_TO_PASS": {"success": f2p_passed, "failure": f2p_failed},
+ "PASS_TO_PASS": {"success": p2p_passed, "failure": p2p_failed},
+ "tests_observed": len(statuses),
+ "resolved": not f2p_failed and not p2p_failed,
+ }
+
+
+def verification_files(inputs: VerificationInputs) -> dict[str, str]:
+ """Files the sandbox is created with; see build_eval_script for why they live in /tmp."""
+ files = {"/tmp/nemo_gym_eval.sh": build_eval_script(inputs)}
+ if inputs.patch.strip():
+ files["/tmp/nemo_gym_patch.diff"] = inputs.patch
+ if inputs.f2p_patch.strip():
+ files["/tmp/nemo_gym_f2p.diff"] = inputs.f2p_patch
+ if inputs.f2p_script.strip():
+ files["/tmp/nemo_gym_f2p_script.py"] = inputs.f2p_script
+ return files
+
+
+async def run_verification(
+ sandbox: Any,
+ inputs: VerificationInputs,
+ timeout_s: float | None = None,
+ log_dir: Path | None = None,
+) -> VerificationResult:
+ """Run the eval script in a sandbox already seeded with ``verification_files``."""
+ result = await sandbox.exec("bash /tmp/nemo_gym_eval.sh", timeout_s=timeout_s)
+ output = (result.stdout or "") + (("\n" + result.stderr) if result.stderr else "")
+
+ if log_dir is not None:
+ # Off the loop: a shared-filesystem write per task stalls every concurrent verification.
+ def _persist() -> None:
+ try:
+ log_dir.mkdir(parents=True, exist_ok=True)
+ (log_dir / "test_output.log").write_text(output, errors="replace")
+ except OSError:
+ pass
+
+ await asyncio.to_thread(_persist)
+
+ if result.return_code == 97:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output=output,
+ error=f"workdir {inputs.workdir} not present in the image",
+ )
+
+ target_ids = list(inputs.fail_to_pass) + list(inputs.pass_to_pass)
+ statuses = await asyncio.to_thread(extract_statuses, slice_test_output(output), target_ids)
+ report = grade(statuses, inputs.fail_to_pass, inputs.pass_to_pass)
+ return VerificationResult(
+ completed=True,
+ resolved=bool(report["resolved"]),
+ patch_applied=True,
+ test_results=report,
+ test_output=output,
+ )
diff --git a/resources_servers/swe_next/.gitignore b/resources_servers/swe_next/.gitignore
new file mode 100644
index 00000000000..c39f6d3d27c
--- /dev/null
+++ b/resources_servers/swe_next/.gitignore
@@ -0,0 +1,2 @@
+# This is where verification logs are stored locally
+logs
diff --git a/resources_servers/swe_next/README.md b/resources_servers/swe_next/README.md
new file mode 100644
index 00000000000..5680e803250
--- /dev/null
+++ b/resources_servers/swe_next/README.md
@@ -0,0 +1,57 @@
+# SWE-Next resources server
+
+Verification for [TIGER-Lab/SWE-Next](https://huggingface.co/datasets/TIGER-Lab/SWE-Next): Python
+software-engineering tasks generated by the R2E ("Repo-to-Environment") pipeline.
+
+Every row ships its own prebuilt image (`docker_image`), a workdir fixed at `/testbed`, and the same
+test command across the whole dataset, so there is no per-row test-command construction.
+
+Sandboxes come from `nemo_gym.sandbox`, so the same server runs on OpenSandbox or any other
+configured provider.
+
+## Grading
+
+Verification applies the candidate patch and the held-out `test_patch`, runs the fixed R2E test
+command, and grades against `expected_output_json` (a whole-suite PASSED/FAILED/ERROR snapshot from
+the golden-patched instance), matching upstream's `DockerRuntime._calculate_reward_r2e`. This is not
+a FAIL_TO_PASS/PASS_TO_PASS check; see `verification.py` for why.
+
+## Prepare the data
+
+`prepare_swe_next.py` only writes rows on `data/supported_instance_ids.txt` (1,998 instances whose
+golden patch resolved in all three passes of a full-set golden-patch sweep).
+
+```bash
+SWE_NEXT_LIMIT=200 python -m resources_servers.swe_next.prepare_swe_next
+```
+
+## Golden-patch validation
+
+Grades each task with the dataset's own patch, which measures the dataset rather than a model.
+
+```bash
+gym env start \
+ --config resources_servers/swe_next/configs/swe_next.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+python resources_servers/swe_next/apply_golden_patch.py \
+ +training_jsonl=resources_servers/swe_next/data/swe_next_training.jsonl \
+ +output_jsonl=results/swe_next_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+```
+
+`aggregate_golden_patch.py` joins repeated passes into supported / flaky / broken / inconclusive
+buckets, and `diagnose_failures.py` separates infra faults from row failures.
+
+## Running an agent
+
+`configs/swe_next_opencode.yaml` wires the opencode sandboxed agent to `swe_next_resources_server`,
+pointed at `data/swe_next_training.jsonl`.
+
+```bash
+gym env start \
+ --config resources_servers/swe_next/configs/swe_next_opencode.yaml \
+ --config responses_api_models/vllm_model/configs/vllm_model.yaml
+```
+
+The SWE-Next dataset is MIT licensed. This adapter is Apache-2.0.
diff --git a/resources_servers/swe_next/__init__.py b/resources_servers/swe_next/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/swe_next/aggregate_golden_patch.py b/resources_servers/swe_next/aggregate_golden_patch.py
new file mode 100644
index 00000000000..53894f35992
--- /dev/null
+++ b/resources_servers/swe_next/aggregate_golden_patch.py
@@ -0,0 +1,136 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Join repeated golden-patch passes into the set of rows that are actually usable.
+
+A row is SUPPORTED when its golden patch resolved in every pass. That is the point of
+repeating: a row that resolves only sometimes has a nondeterministic test, and its reward is
+noise whether it is used for evaluation or for training.
+
+The one distinction that matters, and the reason this is not a single boolean: a pass can fail
+to produce a verdict at all (image pull, timeout, provider fault). That is evidence about the
+infrastructure, not about the row. Collapsing the two would discard good tasks for an unrelated
+hiccup, so incomplete passes are counted separately and those rows are reported as needing more
+evidence rather than as broken.
+
+ python resources_servers/swe_next/aggregate_golden_patch.py \
+ +runs=results/swe_next_golden_patch_full \
+ +output_jsonl=results/swe_next_supported.jsonl
+"""
+
+import json
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+from nemo_gym.global_config import get_global_config_dict
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def classify(observations: list[dict[str, Any]], expected_passes: int) -> str:
+ """Bucket one row from its per-pass observations."""
+ completed = [o for o in observations if o.get("evaluation_completed")]
+ resolved = sum(1 for o in completed if o.get("resolved"))
+
+ if len(completed) < expected_passes:
+ # Not enough verdicts to judge the row. Distinguished from a genuine failure so an
+ # image-pull fault does not quietly delete a usable task.
+ return "inconclusive"
+ if resolved == len(completed):
+ return "supported"
+ if resolved == 0:
+ return "broken"
+ return "flaky"
+
+
+def main() -> None:
+ config = get_global_config_dict()
+ runs_dir = Path(config["runs"])
+ output_fpath = Path(config.get("output_jsonl") or "results/swe_next_supported.jsonl")
+
+ pass_files = sorted(p for p in runs_dir.glob("*.jsonl") if p.is_file())
+ if not pass_files:
+ raise SystemExit(f"no pass jsonl files under {runs_dir}")
+
+ by_instance: dict[str, list[dict[str, Any]]] = defaultdict(list)
+ language: dict[str, str] = {}
+ for pass_file in pass_files:
+ for row in _rows(pass_file):
+ instance_id = row.get("instance_id")
+ if not instance_id or instance_id == "?":
+ continue
+ by_instance[instance_id].append(row)
+ if row.get("language"):
+ language[instance_id] = row["language"]
+
+ expected = len(pass_files)
+ buckets: Counter[str] = Counter()
+ per_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ with output_fpath.open("w", encoding="utf-8") as out:
+ for instance_id, observations in sorted(by_instance.items()):
+ verdict = classify(observations, expected)
+ buckets[verdict] += 1
+ per_language[language.get(instance_id, "unknown")][verdict] += 1
+ out.write(
+ json.dumps(
+ {
+ "instance_id": instance_id,
+ "language": language.get(instance_id, ""),
+ "verdict": verdict,
+ "passes_observed": len(observations),
+ "passes_completed": sum(1 for o in observations if o.get("evaluation_completed")),
+ "passes_resolved": sum(1 for o in observations if o.get("resolved")),
+ "expected_passes": expected,
+ }
+ )
+ + "\n"
+ )
+
+ total = sum(buckets.values())
+ print(f"golden-patch aggregation over {total} row(s) from {expected} pass(es)\n")
+ for verdict, description in (
+ ("supported", "resolved in every pass - usable"),
+ ("flaky", "resolved in some passes only - nondeterministic test"),
+ ("broken", "never resolved - golden patch does not work"),
+ ("inconclusive", "too few verdicts - re-run before judging"),
+ ):
+ count = buckets.get(verdict, 0)
+ print(f" {verdict:<13} {count:>6} ({100 * count / max(total, 1):5.1f}%) {description}")
+
+ print("\n by language (supported / total):")
+ for lang, counts in sorted(per_language.items(), key=lambda kv: -sum(kv[1].values())):
+ rows_total = sum(counts.values())
+ supported = counts.get("supported", 0)
+ print(
+ f" {lang:<10} {supported:>5} / {rows_total:<6} ({100 * supported / rows_total:5.1f}%)"
+ f" flaky={counts.get('flaky', 0)} broken={counts.get('broken', 0)}"
+ f" inconclusive={counts.get('inconclusive', 0)}"
+ )
+ print(f"\nper-row verdicts: {output_fpath}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/resources_servers/swe_next/app.py b/resources_servers/swe_next/app.py
new file mode 100644
index 00000000000..a3a33e6d2ac
--- /dev/null
+++ b/resources_servers/swe_next/app.py
@@ -0,0 +1,343 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Resources server for TIGER-Lab/SWE-Next.
+
+SWE-Next is 2,306 rows, entirely Python, generated by the R2E ("Repo-to-Environment") pipeline:
+every row ships its own prebuilt image (``docker_image``), a workdir fixed at ``/testbed``, and a
+byte-identical test command across the whole dataset (see ``verification.py``) -- so there is no
+per-row test-command construction, only a fixed recipe.
+
+Verification: apply the candidate patch and the dataset's held-out ``test_patch``, run the fixed
+R2E test command, and grade against ``expected_output_json`` (a whole-suite PASSED/FAILED/ERROR
+snapshot from the golden-patched instance) exactly the way upstream's own
+``DockerRuntime._calculate_reward_r2e`` does -- NOT a FAIL_TO_PASS/PASS_TO_PASS check, see
+``verification.py``'s module docstring for why.
+
+Set ``is_verifying_golden_patch: true`` to grade the dataset's own patch instead of an agent's,
+the dataset-health check: a row whose golden patch does not resolve is a broken row.
+"""
+
+import shlex
+import sys
+from pathlib import Path
+from time import time
+from traceback import format_exc
+from typing import Any
+
+from fastapi import Request
+from pydantic import BaseModel, ConfigDict
+
+from nemo_gym.base_resources_server import (
+ BaseResourcesServerConfig,
+ BaseSeedSessionRequest,
+ BaseSeedSessionResponse,
+ BaseVerifyRequest,
+ BaseVerifyResponse,
+ SimpleResourcesServer,
+)
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.sandbox import AsyncSandbox, SandboxResources, SandboxSpec
+from nemo_gym.sandbox.config import resolve_provider_config, resolve_provider_metadata
+from nemo_gym.sandbox.utils import cpu_cap_env
+from nemo_gym.server_utils import SESSION_ID_KEY, is_nemo_gym_fastapi_entrypoint
+from resources_servers.swe_next.verification import (
+ VerificationInputs,
+ VerificationResult,
+ drop_patch_sections,
+ run_verification,
+ verification_files,
+)
+from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup
+
+
+class SWENextResourcesServerConfig(BaseResourcesServerConfig):
+ is_verifying_golden_patch: bool = False
+ evaluation_timeout: int | None = 1200
+ # A verdict-less run is retried on a fresh sandbox: an image pull or a flaky provider start
+ # is not evidence about the patch.
+ inconclusive_verification_retries: int = 1
+ apply_anti_cheating: bool = True
+ sandbox_provider: str
+ sandbox_config: dict[str, Any]
+
+
+class SWENextInstanceRequest(BaseModel):
+ """One row of TIGER-Lab/SWE-Next."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str
+ repo: str = ""
+ language: str = "python"
+ workdir: str = "/testbed"
+ image_ref: str
+ base_commit: str = ""
+ patch: str = ""
+ test_patch: str = ""
+ problem_statement: str = ""
+ # Carried for provenance only now -- grading uses expected_output_json (see verification.py).
+ FAIL_TO_PASS: list[str] = []
+ PASS_TO_PASS: list[str] = []
+ expected_output_json: str = "{}"
+
+
+class SWENextSeedSessionRequest(SWENextInstanceRequest, BaseSeedSessionRequest):
+ sandbox_spec: dict[str, Any] | None = None
+
+
+class SWENextSeedSessionResponse(BaseSeedSessionResponse):
+ sandbox_handle: str
+
+
+class SWENextVerifyRequest(SWENextInstanceRequest, BaseVerifyRequest):
+ pass
+
+
+class SWENextVerifyResponse(BaseVerifyResponse):
+ evaluation_completed: bool
+ resolved: bool
+ patch_applied: bool
+ instance_id: str
+ language: str
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None
+ eval_sandbox_start_time_taken: float
+ patch_verification_time_taken: float
+
+
+class SWENextResourcesServer(SimpleResourcesServer):
+ config: SWENextResourcesServerConfig
+
+ def model_post_init(self, context: Any, /) -> None:
+ super().model_post_init(context)
+ self._session_id_to_sandbox: dict[str, AsyncSandbox] = {}
+ self._session_id_to_pristine_untracked: dict[str, frozenset[str]] = {}
+ self._session_id_to_base_commit: dict[str, str] = {}
+
+ def _inputs(self, body: SWENextInstanceRequest, patch: str) -> VerificationInputs:
+ return VerificationInputs(
+ instance_id=body.instance_id,
+ workdir=body.workdir,
+ patch=patch,
+ test_patch=body.test_patch,
+ expected_output_json=body.expected_output_json,
+ )
+
+ async def _create_sandbox(self, body: SWENextInstanceRequest, files: dict[str, str] | None = None) -> AsyncSandbox:
+ global_config_dict = get_global_config_dict()
+ provider_config = resolve_provider_config(self.config.sandbox_provider, global_config_dict)
+ provider_metadata = resolve_provider_metadata(self.config.sandbox_provider, global_config_dict)
+
+ sandbox_resources = SandboxResources.from_mapping(self.config.sandbox_config.get("resources", {}))
+ env = dict(self.config.sandbox_config.get("env", {}))
+ if self.config.sandbox_config.get("derive_cpu_env", True):
+ env = cpu_cap_env(sandbox_resources.cpu) | env
+
+ spec = SandboxSpec(
+ # The row names its own image; there is no repository template to apply.
+ image=body.image_ref,
+ ttl_s=self.config.sandbox_config.get("ttl_s"),
+ ready_timeout_s=self.config.sandbox_config.get("ready_timeout_s"),
+ # `/testbed` (`body.workdir`) is a symlink to `/workspace` that the R2E image's own
+ # entrypoint normally creates on container start -- the sandbox provider never runs
+ # that entrypoint, so `/testbed` does not exist yet and cannot be used as the spec's
+ # workdir (every exec validates it against the live filesystem). `/workspace` is the
+ # real directory the image bakes in; recreate the symlink ourselves right after start.
+ workdir="/workspace",
+ env=env,
+ files=files or {},
+ metadata=provider_metadata
+ | self.config.sandbox_config.get("metadata", {})
+ | {
+ "nemo_gym_agent": self.config.name,
+ "instance_id": body.instance_id[:63],
+ },
+ resources=sandbox_resources,
+ provider_options=self.config.sandbox_config.get("provider_options", {}),
+ )
+ sandbox = AsyncSandbox(provider_config)
+ await sandbox.start(spec)
+ await sandbox.exec(f"ln -sfn /workspace {shlex.quote(body.workdir)}")
+ return sandbox
+
+ async def _stop_sandbox(self, sandbox: AsyncSandbox | None) -> None:
+ if sandbox is None:
+ return
+ try:
+ await sandbox.stop()
+ except Exception:
+ print("Failed to stop SWE-Next sandbox", format_exc(), file=sys.stderr)
+
+ async def _init_git_repo(self, sandbox: AsyncSandbox, workdir: str) -> None:
+ """These images have no git history at all -- init one fresh so ``seed_session`` has a
+ real base commit to diff the agent's changes against, and the anti-cheat scrub has an
+ actual repo to act on.
+ """
+ result = await sandbox.exec(
+ f"cd {shlex.quote(workdir)} && git init -q "
+ f"&& git config user.email nemo-gym@nvidia.com && git config user.name nemo-gym "
+ f"&& git add -A && git commit -q -m 'nemo_gym: initial snapshot' --allow-empty"
+ )
+ if result.return_code != 0:
+ print(f"Failed to init git repo at {workdir}: {result.stdout}\n{result.stderr}", file=sys.stderr)
+
+ async def _pristine_untracked_files(self, sandbox: AsyncSandbox, workdir: str) -> frozenset[str]:
+ """List of files ``workdir`` holds untracked before the agent touches it."""
+ try:
+ result = await sandbox.exec(f"git -C {shlex.quote(workdir)} ls-files --others --exclude-standard")
+ if result.return_code != 0:
+ print(f"Failed to list pristine untracked files: {result.stderr}", file=sys.stderr)
+ return frozenset()
+ return frozenset(line.strip() for line in (result.stdout or "").splitlines() if line.strip())
+ except Exception:
+ print("Failed to list pristine untracked files", format_exc(), file=sys.stderr)
+ return frozenset()
+
+ async def _extract_model_patch(self, session_id: str, workdir: str, base_commit: str) -> str:
+ """Diff the agent's own sandbox against ``base_commit``, then stop it.
+
+ ``git add -N`` (intent-to-add) is what makes brand-new files show up in ``git diff`` too,
+ not just edits to already-tracked files.
+ """
+ original_sandbox = self._session_id_to_sandbox.pop(session_id)
+ pristine_untracked = self._session_id_to_pristine_untracked.pop(session_id, frozenset())
+ try:
+ result = await original_sandbox.exec(
+ f"git -C {shlex.quote(workdir)} add -N . "
+ f"&& git -C {shlex.quote(workdir)} --no-pager diff {shlex.quote(base_commit)}"
+ )
+ if result.return_code != 0:
+ raise RuntimeError(result.stderr or "git diff failed")
+ return drop_patch_sections(result.stdout or "", pristine_untracked)
+ finally:
+ await self._stop_sandbox(original_sandbox)
+
+ async def seed_session(self, request: Request, body: SWENextSeedSessionRequest) -> SWENextSeedSessionResponse:
+ """Start the instance's image so an agent can work in it."""
+ session_id = request.session[SESSION_ID_KEY]
+ await self._stop_sandbox(self._session_id_to_sandbox.pop(session_id, None))
+ self._session_id_to_pristine_untracked.pop(session_id, None)
+ self._session_id_to_base_commit.pop(session_id, None)
+
+ sandbox = await self._create_sandbox(body)
+ await self._init_git_repo(sandbox, body.workdir)
+ if self.config.apply_anti_cheating:
+ await apply_anti_cheat_setup(sandbox, body.workdir, body.instance_id, "swe_next")
+
+ head_result = await sandbox.exec(f"git -C {shlex.quote(body.workdir)} rev-parse HEAD")
+ self._session_id_to_base_commit[session_id] = (head_result.stdout or "").strip()
+ self._session_id_to_pristine_untracked[session_id] = await self._pristine_untracked_files(
+ sandbox, body.workdir
+ )
+ self._session_id_to_sandbox[session_id] = sandbox
+ return SWENextSeedSessionResponse(sandbox_handle=str(sandbox._handle.sandbox_id))
+
+ async def verify(self, request: Request, body: SWENextVerifyRequest) -> SWENextVerifyResponse:
+ session_id = request.session[SESSION_ID_KEY]
+ extraction_error = None
+ if self.config.is_verifying_golden_patch:
+ patch = body.patch
+ else:
+ base_commit = self._session_id_to_base_commit.pop(session_id, "")
+ if not base_commit:
+ patch = ""
+ extraction_error = "Failed to extract model patch: no base commit recorded (seed_session did not run for this session)"
+ else:
+ try:
+ patch = await self._extract_model_patch(session_id, body.workdir, base_commit)
+ except Exception as exc:
+ patch = ""
+ extraction_error = f"Failed to extract model patch: {exc}"
+
+ inputs = self._inputs(body, patch)
+ log_dir = Path(__file__).parent / "logs" / body.instance_id
+
+ files = verification_files(inputs)
+ attempts = 1 + max(self.config.inconclusive_verification_retries, 0)
+ start_time_taken = 0.0
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error="unattempted",
+ )
+ for attempt in range(1, attempts + 1):
+ sandbox: AsyncSandbox | None = None
+ started = time()
+ try:
+ sandbox = await self._create_sandbox(body, files=files)
+ start_time_taken = time() - started
+ verification_started = time()
+ result = await run_verification(
+ sandbox=sandbox,
+ inputs=inputs,
+ timeout_s=self.config.evaluation_timeout,
+ log_dir=log_dir,
+ )
+ verification_time_taken = time() - verification_started
+ except Exception as exc:
+ start_time_taken = time() - started
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error=f"Verification failed: {exc}",
+ )
+ finally:
+ await self._stop_sandbox(sandbox)
+ if result.completed:
+ break
+ if attempt < attempts:
+ print(
+ f"[swe_next] {body.instance_id}: inconclusive ({result.error}); "
+ f"retrying on a fresh sandbox ({attempt}/{attempts - 1})",
+ flush=True,
+ )
+
+ return SWENextVerifyResponse.model_validate(
+ body.model_dump()
+ | {
+ # An unresolved-but-completed run is a real 0. An incomplete run is also 0, but
+ # evaluation_completed distinguishes them so a broken row is not read as a hard task.
+ "reward": 1.0 if result.resolved else 0.0,
+ "evaluation_completed": result.completed,
+ "resolved": result.resolved,
+ "patch_applied": result.patch_applied,
+ "instance_id": body.instance_id,
+ "language": body.language,
+ "test_results": result.test_results,
+ "test_output": result.test_output[-100_000:],
+ "error": extraction_error or result.error,
+ "eval_sandbox_start_time_taken": start_time_taken,
+ "patch_verification_time_taken": verification_time_taken,
+ }
+ )
+
+
+if __name__ == "__main__":
+ SWENextResourcesServer.run_webserver()
+elif is_nemo_gym_fastapi_entrypoint(__file__):
+ # Required whenever num_workers > 1. Multi-worker uvicorn re-imports this entrypoint BY PATH
+ # in each forked child and expects a module-level `app`; without it every child exits, and
+ # uvicorn responds by stopping the parent. The server then never binds, so the symptom is not
+ # an import error but a flood of connection failures from clients talking to a dead port.
+ app = SWENextResourcesServer.run_webserver() # noqa: F401
diff --git a/resources_servers/swe_next/apply_golden_patch.py b/resources_servers/swe_next/apply_golden_patch.py
new file mode 100644
index 00000000000..6807bb1087e
--- /dev/null
+++ b/resources_servers/swe_next/apply_golden_patch.py
@@ -0,0 +1,160 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Grade every task with the dataset's own golden patch.
+
+This measures the dataset, not a model. A row whose golden patch does not make FAIL_TO_PASS
+pass is unusable for evaluation or training, so this is the check to run before trusting any
+score from SWE-Next.
+
+ gym env start --config resources_servers/swe_next/configs/swe_next.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+ python resources_servers/swe_next/apply_golden_patch.py \
+ +training_jsonl=resources_servers/swe_next/data/swe_next_training.jsonl \
+ +output_jsonl=results/swe_next_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+"""
+
+import asyncio
+import json
+from collections import Counter
+from pathlib import Path
+
+from tqdm.auto import tqdm
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+SERVER_NAME = "swe_next_golden_patch_resources_server"
+
+
+def _stream_examples(path: Path, limit: int):
+ """Yield rows lazily rather than materialising the whole training file."""
+ with open(path, encoding="utf-8") as training:
+ for index, line in enumerate(training):
+ if limit and index >= limit:
+ return
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ limit = int(config.get("limit") or 0)
+ concurrency = int(config.get("concurrency") or 16)
+ training_fpath = Path(config["training_jsonl"])
+ output_fpath = Path(config.get("output_jsonl") or "results/swe_next_golden_patch.jsonl")
+
+ total = sum(1 for _ in _stream_examples(training_fpath, limit))
+ client = ServerClient.load_from_global_config()
+
+ # Bounded: the queue holds at most one row per worker, so resident rows track concurrency
+ # rather than dataset size.
+ queue: asyncio.Queue = asyncio.Queue(maxsize=concurrency)
+ resolved = 0
+ incomplete = 0
+ by_framework: Counter[str] = Counter()
+ resolved_by_framework: Counter[str] = Counter()
+ finished = 0
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ progress = tqdm(total=total, desc="golden patch")
+
+ with output_fpath.open("w", encoding="utf-8") as output:
+
+ async def worker() -> None:
+ nonlocal resolved, incomplete, finished
+ while True:
+ example = await queue.get()
+ if example is None:
+ queue.task_done()
+ return
+ try:
+ payload = example | {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+ try:
+ response = await client.post(server_name=SERVER_NAME, url_path="/verify", json=payload)
+ result = await response.json()
+ except Exception as exc:
+ # One unreachable task must not abandon the sweep; record it and carry on.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "test_framework": example.get("test_framework", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"request failed: {exc}",
+ }
+ if not isinstance(result, dict):
+ # Gym middleware returns repr(exc) as a bare JSON string when a handler
+ # raises, so a server-side fault arrives as a str.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "test_framework": example.get("test_framework", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"server returned a non-object response: {str(result)[:300]}",
+ }
+
+ framework = str(result.get("test_framework") or example.get("test_framework") or "unknown")
+ by_framework[framework] += 1
+ if result.get("resolved"):
+ resolved += 1
+ resolved_by_framework[framework] += 1
+ if not result.get("evaluation_completed", False):
+ incomplete += 1
+ output.write(json.dumps(result) + "\n")
+ finished += 1
+ if finished % 50 == 0:
+ output.flush() # a multi-hour run must leave usable rows if it is cut short
+ progress.update(1)
+ progress.set_description(
+ f"resolved {resolved}/{finished} ({100 * resolved / max(finished, 1):.1f}%) "
+ f"incomplete={incomplete}"
+ )
+ finally:
+ queue.task_done()
+
+ workers = [asyncio.create_task(worker()) for _ in range(concurrency)]
+ for example in _stream_examples(training_fpath, limit):
+ await queue.put(example)
+ for _ in workers:
+ await queue.put(None)
+ await asyncio.gather(*workers)
+
+ progress.close()
+ print(f"\ngolden-patch validation over {total} task(s)")
+ print(f" resolved: {resolved}/{total} ({100 * resolved / max(total, 1):.1f}%)")
+ print(f" incomplete: {incomplete}/{total} (no verdict: image pull, timeout, or setup failure)")
+ print("\n by framework (resolved / total):")
+ for framework, count in by_framework.most_common():
+ got = resolved_by_framework[framework]
+ print(f" {framework:<10} {got:>5} / {count:<6} ({100 * got / count:5.1f}%)")
+ print(f"\nper-task rows: {output_fpath}")
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/swe_next/client.py b/resources_servers/swe_next/client.py
new file mode 100644
index 00000000000..c362a13b9be
--- /dev/null
+++ b/resources_servers/swe_next/client.py
@@ -0,0 +1,52 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Verify a single SWE-Next row, for a quick smoke test of the server."""
+
+import asyncio
+import json
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ with open(config["training_jsonl"], encoding="utf-8") as training:
+ example = json.loads(next(training))
+ example |= {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+
+ client = ServerClient.load_from_global_config()
+ result = await client.post(
+ server_name=config.get("resources_server_name", "swe_next_golden_patch_resources_server"),
+ url_path="/verify",
+ json=example,
+ )
+ print(json.dumps(await result.json(), indent=4))
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/swe_next/configs/swe_next.yaml b/resources_servers/swe_next/configs/swe_next.yaml
new file mode 100644
index 00000000000..4878fbf6591
--- /dev/null
+++ b/resources_servers/swe_next/configs/swe_next.yaml
@@ -0,0 +1,61 @@
+# Resources server for TIGER-Lab/SWE-Next.
+#
+# Every row carries its own prebuilt image (docker_image) and a byte-identical R2E-pipeline test
+# command across the whole dataset -- so there is no image repository or per-row test-command
+# construction here. 2,306 rows, entirely Python, one test runner (pytest).
+swe_next_resources_server:
+ resources_servers:
+ swe_next:
+ allowed_agents: [opencode_sandboxed_agent]
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ evaluation_timeout: 1200
+ is_verifying_golden_patch: false
+ apply_anti_cheating: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: swe-next
+
+# Golden-patch validation: grade the dataset's own patch instead of an agent's. A row whose
+# golden patch does not resolve is a broken row, and scoring an agent against it measures noise.
+# Run it with resources_servers/swe_next/apply_golden_patch.py.
+swe_next_golden_patch_resources_server:
+ resources_servers:
+ swe_next:
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ evaluation_timeout: 1200
+ is_verifying_golden_patch: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ resources:
+ cpu: 4
+ memory_mib: 16384
+ disk_gib: 20
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 20
+ metadata:
+ benchmark: swe-next-golden-patch
diff --git a/resources_servers/swe_next/configs/swe_next_example.yaml b/resources_servers/swe_next/configs/swe_next_example.yaml
new file mode 100644
index 00000000000..10330aa8643
--- /dev/null
+++ b/resources_servers/swe_next/configs/swe_next_example.yaml
@@ -0,0 +1,25 @@
+# swe_next's CI "example" data-validation config -- separate from swe_next.yaml so starting the
+# base/golden-patch servers for golden-patch validation never needs to pull in an agent+model
+# config (mirrors the *_opencode.yaml split, same reasoning).
+config_paths:
+ - resources_servers/swe_next/configs/swe_next.yaml
+
+# CI's "example" data-validation gate (gym env test +should_validate_data=true): grades the
+# dataset's own golden patch for 5 rows via a plain simple_agent (not opencode_sandboxed_agent --
+# this only needs a real verify() round-trip to exercise data/example.jsonl's shape, not an agent
+# that can actually solve the task). See resources_servers/swebench_pro/configs/swebench_pro.yaml
+# for the same pattern.
+swe_next_example_agent:
+ responses_api_agents:
+ simple_agent:
+ entrypoint: app.py
+ resources_server:
+ type: resources_servers
+ name: swe_next_golden_patch_resources_server
+ model_server:
+ type: responses_api_models
+ name: policy_model
+ datasets:
+ - name: example
+ type: example
+ jsonl_fpath: resources_servers/swe_next/data/example.jsonl
diff --git a/resources_servers/swe_next/configs/swe_next_opencode.yaml b/resources_servers/swe_next/configs/swe_next_opencode.yaml
new file mode 100644
index 00000000000..6b52c9ed263
--- /dev/null
+++ b/resources_servers/swe_next/configs/swe_next_opencode.yaml
@@ -0,0 +1,32 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Wires the opencode sandboxed agent to swe_next_resources_server for a training run --
+# `swe_next.yaml` alone only defines the resources server, which is enough for golden-patch
+# validation (apply_golden_patch.py talks to it directly, no agent involved) but not enough to
+# actually run an agent against the dataset. This is a separate file, not folded into
+# swe_next.yaml, so golden-patch validation keeps working without pulling in the agent's (much
+# larger) opencode/sandbox config.
+#
+# This is training data (data/swe_next_training.jsonl, only the already-supported instances --
+# see the README), not a fixed eval benchmark.
+#
+# gym env start --config resources_servers/swe_next/configs/swe_next_opencode.yaml
+
+config_paths:
+ - responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+ - resources_servers/swe_next/configs/swe_next.yaml
+
+swe_next_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swe_next_resources_server
+ datasets:
+ - name: swe_next
+ type: train
+ jsonl_fpath: resources_servers/swe_next/data/swe_next_training.jsonl
+ num_repeats: 1
+ license: MIT
diff --git a/resources_servers/swe_next/data/.gitignore b/resources_servers/swe_next/data/.gitignore
new file mode 100644
index 00000000000..57cc66ad27c
--- /dev/null
+++ b/resources_servers/swe_next/data/.gitignore
@@ -0,0 +1,5 @@
+# Prepared training JSONL is a large filtered slice of the Hub dataset (patch/test content for
+# every supported instance). Regenerate with prepare_swe_next.py.
+*.jsonl
+!example.jsonl
+!example_rollouts.jsonl
diff --git a/resources_servers/swe_next/data/example.jsonl b/resources_servers/swe_next/data/example.jsonl
new file mode 100644
index 00000000000..3d6298c2109
--- /dev/null
+++ b/resources_servers/swe_next/data/example.jsonl
@@ -0,0 +1,5 @@
+{"instance_id": "snok__django-swagger-tester-3640761da93ec8921419fe717d72355d84a7cff7", "repo": "snok/django-swagger-tester", "language": "python", "workdir": "/testbed", "image_ref": "lllqaq/snok_django-swagger-tester-final:3640761da93ec8921419fe717d72355d84a7cff7", "base_commit": "0f1be141b042041e022b21c1c52e7cf33d5315f2", "patch": "diff --git a/django_swagger_tester/__init__.py b/django_swagger_tester/__init__.py\nindex ae12778..29a177e 100644\n--- a/django_swagger_tester/__init__.py\n+++ b/django_swagger_tester/__init__.py\n@@ -1,2 +1,2 @@\n-__version__ = '1.0.3' # Remember to also change in pyproject.toml\n+__version__ = '1.0.4' # Remember to also change in pyproject.toml\n __author__ = 'Sondre Lilleb\u00f8 Gundersen'\n", "test_patch": "diff --git a/tests/test_version.py b/tests/test_version.py\nindex e14e88e..c5a2fcd 100644\n--- a/tests/test_version.py\n+++ b/tests/test_version.py\n@@ -2,4 +2,4 @@ from django_swagger_tester import __version__\n \r\n \r\n def test_version():\r\n- assert __version__ == '1.0.3'\r\n+ assert __version__ == '1.0.4'\r\n \n", "problem_statement": "Title: Version number mismatch causes incorrect version reporting\n\nDescription: \nThe reported version of the package does not match the expected version after a version bump. For example, when checking the version string, the code expects it to be `'1.0.4'` but it still reports `'1.0.3'`. This discrepancy can cause confusion about which version is actually installed or running.\n\nExample code demonstrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # This should reflect the latest version after an update\n current_version = __version__\n # Expected: '1.0.4'\n # Actual: '1.0.3' before the fix\n print(f\"Current version is {current_version}\")\n```\n\nExpected behavior: \nThe version string should correctly reflect the updated version number, e.g., `'1.0.4'` after the version bump.\n\nActual behavior: \nThe version string remains at the previous version `'1.0.3'`, causing tests or checks that rely on the version to fail or report incorrect information.", "FAIL_TO_PASS": ["test_version"], "PASS_TO_PASS": [], "expected_output_json": "{\"test_version\":\"PASSED\"}", "responses_create_params": {"input": [{"role": "user", "content": "Title: Version number mismatch causes incorrect version reporting\n\nDescription: \nThe reported version of the package does not match the expected version after a version bump. For example, when checking the version string, the code expects it to be `'1.0.4'` but it still reports `'1.0.3'`. This discrepancy can cause confusion about which version is actually installed or running.\n\nExample code demonstrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # This should reflect the latest version after an update\n current_version = __version__\n # Expected: '1.0.4'\n # Actual: '1.0.3' before the fix\n print(f\"Current version is {current_version}\")\n```\n\nExpected behavior: \nThe version string should correctly reflect the updated version number, e.g., `'1.0.4'` after the version bump.\n\nActual behavior: \nThe version string remains at the previous version `'1.0.3'`, causing tests or checks that rely on the version to fail or report incorrect information."}]}}
+{"instance_id": "snok__drf-openapi-tester-d7ff46410a0e47572086eb5cf1ee13f396bee3c3", "repo": "snok/drf-openapi-tester", "language": "python", "workdir": "/testbed", "image_ref": "lllqaq/snok_drf-openapi-tester-final:d7ff46410a0e47572086eb5cf1ee13f396bee3c3", "base_commit": "96ded63587a0fba09ab5e1b1d9a3c08037705691", "patch": "diff --git a/django_swagger_tester/__init__.py b/django_swagger_tester/__init__.py\nindex 5bda0b6..8407804 100644\n--- a/django_swagger_tester/__init__.py\n+++ b/django_swagger_tester/__init__.py\n@@ -1,2 +1,2 @@\n-__version__ = '1.0.1' # Remember to also change in pyproject.toml\n+__version__ = '1.0.2' # Remember to also change in pyproject.toml\n __author__ = 'Sondre Lilleb\u00f8 Gundersen'\n", "test_patch": "diff --git a/tests/test_version.py b/tests/test_version.py\nindex a51da57..ab33e11 100644\n--- a/tests/test_version.py\n+++ b/tests/test_version.py\n@@ -2,4 +2,4 @@ from django_swagger_tester import __version__\n \r\n \r\n def test_version():\r\n- assert __version__ == '1.0.1'\r\n+ assert __version__ == '1.0.2'\r\n \n", "problem_statement": "Title: Version number mismatch causes failures in version consistency checks\n\nDescription: \nThere is an inconsistency between the declared version in the package and the expected version in version checks. For example, when checking the current version string, the test expects it to be `'1.0.2'`, but the actual version remains `'1.0.1'`. This causes version validation to fail, indicating that the version bump was not properly applied.\n\nExample code illustrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # This check expects the version to be '1.0.2'\n if __version__ != '1.0.2':\n raise ValueError(f\"Version mismatch: expected '1.0.2', got '{__version__}'\")\n```\n\nExpected behavior: \nThe version string should reflect the latest version `'1.0.2'` so that version checks pass without errors.\n\nActual behavior: \nThe version string remains at `'1.0.1'`, causing version checks to fail with a mismatch error.\n\nThis discrepancy suggests that the version update was not fully applied or synchronized across all relevant files, leading to test failures related to version consistency.", "FAIL_TO_PASS": ["test_version"], "PASS_TO_PASS": [], "expected_output_json": "{\"test_version\":\"PASSED\"}", "responses_create_params": {"input": [{"role": "user", "content": "Title: Version number mismatch causes failures in version consistency checks\n\nDescription: \nThere is an inconsistency between the declared version in the package and the expected version in version checks. For example, when checking the current version string, the test expects it to be `'1.0.2'`, but the actual version remains `'1.0.1'`. This causes version validation to fail, indicating that the version bump was not properly applied.\n\nExample code illustrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # This check expects the version to be '1.0.2'\n if __version__ != '1.0.2':\n raise ValueError(f\"Version mismatch: expected '1.0.2', got '{__version__}'\")\n```\n\nExpected behavior: \nThe version string should reflect the latest version `'1.0.2'` so that version checks pass without errors.\n\nActual behavior: \nThe version string remains at `'1.0.1'`, causing version checks to fail with a mismatch error.\n\nThis discrepancy suggests that the version update was not fully applied or synchronized across all relevant files, leading to test failures related to version consistency."}]}}
+{"instance_id": "masoniteframework__orm-f3874caf9c7fd3ff535116b6c1066c90cab95ec7", "repo": "masoniteframework/orm", "language": "python", "workdir": "/testbed", "image_ref": "lllqaq/masoniteframework_orm-final:f3874caf9c7fd3ff535116b6c1066c90cab95ec7", "base_commit": "250509a39682b5639468d98c91a156c3a0628740", "patch": "diff --git a/src/masonite/orm/collection/Collection.py b/src/masonite/orm/collection/Collection.py\nindex 466d70d7..ac7a0ae3 100644\n--- a/src/masonite/orm/collection/Collection.py\n+++ b/src/masonite/orm/collection/Collection.py\n@@ -77,7 +77,8 @@ class Collection:\n return attributes\n \n def pop(self):\n- pass\n+ last = self.items.pop()\n+ return last\n \n def prepend(self):\n pass\n", "test_patch": "diff --git a/tests/collection/test_collection.py b/tests/collection/test_collection.py\nindex ac64293d..a3855839 100644\n--- a/tests/collection/test_collection.py\n+++ b/tests/collection/test_collection.py\n@@ -28,3 +28,8 @@ class TestCollection(unittest.TestCase):\n ]\n )\n self.assertEqual(len(collection.where(\"name\", \"Joe\")), 2)\n+\n+ def test_pop(self):\n+ collection = Collection([1, 2, 3])\n+ self.assertEqual(collection.pop(), 3)\n+ self.assertEqual(collection.all(), [1, 2])\n \n", "problem_statement": "Title: Collection pop method returns None instead of the last item\n\nDescription: \nWhen calling the pop method on a collection initialized with a list of items, the method returns None instead of the last item in the collection. This causes unexpected behavior when trying to retrieve and remove the last element.\n\nExample code demonstrating the issue:\n\n```python\ncollection = Collection([1, 2, 3])\nlast_item = collection.pop()\nprint(last_item) # Expected to print 3, but prints None\nprint(collection.all()) # Expected to print [1, 2]\n```\n\nExpected behavior: \nThe pop method should remove and return the last item from the collection. In the example above, calling pop should return 3 and the collection should then contain [1, 2].\n\nActual behavior: \nThe pop method returns None, and the last item is not returned as expected, leading to incorrect results when using this method.", "FAIL_TO_PASS": ["TestCollection::test_pop"], "PASS_TO_PASS": ["TestCollection::test_first", "TestCollection::test_last", "TestCollection::test_pluck", "TestCollection::test_take", "TestCollection::test_where"], "expected_output_json": "{\"TestCollection::test_first\":\"PASSED\",\"TestCollection::test_last\":\"PASSED\",\"TestCollection::test_pluck\":\"PASSED\",\"TestCollection::test_pop\":\"PASSED\",\"TestCollection::test_take\":\"PASSED\",\"TestCollection::test_where\":\"PASSED\"}", "responses_create_params": {"input": [{"role": "user", "content": "Title: Collection pop method returns None instead of the last item\n\nDescription: \nWhen calling the pop method on a collection initialized with a list of items, the method returns None instead of the last item in the collection. This causes unexpected behavior when trying to retrieve and remove the last element.\n\nExample code demonstrating the issue:\n\n```python\ncollection = Collection([1, 2, 3])\nlast_item = collection.pop()\nprint(last_item) # Expected to print 3, but prints None\nprint(collection.all()) # Expected to print [1, 2]\n```\n\nExpected behavior: \nThe pop method should remove and return the last item from the collection. In the example above, calling pop should return 3 and the collection should then contain [1, 2].\n\nActual behavior: \nThe pop method returns None, and the last item is not returned as expected, leading to incorrect results when using this method."}]}}
+{"instance_id": "pydantic__pydantic-68784f63c0219aeb2c2d816347c41222fa48cdd4", "repo": "pydantic/pydantic", "language": "python", "workdir": "/testbed", "image_ref": "lllqaq/pydantic_pydantic-final:68784f63c0219aeb2c2d816347c41222fa48cdd4", "base_commit": "31c4efb7f05d9c45e187591af7bf331e72719b71", "patch": "diff --git a/pydantic/__init__.py b/pydantic/__init__.py\nindex 2e7aab406b..19e54329a9 100644\n--- a/pydantic/__init__.py\n+++ b/pydantic/__init__.py\n@@ -14,6 +14,8 @@ from .tools import *\n from .types import *\n from .version import VERSION\n \n+__version__ = VERSION\n+\n # WARNING __all__ from .errors is not included here, it will be removed as an export here in v2\n # please use \"from pydantic.errors import ...\" instead\n __all__ = [\n", "test_patch": "diff --git a/tests/test_version.py b/tests/test_version.py\nnew file mode 100644\nindex 0000000000..ef7c928806\n--- /dev/null\n+++ b/tests/test_version.py\n@@ -0,0 +1,9 @@\n+import pydantic\n+\n+\n+def test_version_attribute_is_present():\n+ assert hasattr(pydantic, '__version__')\n+\n+\n+def test_version_attribute_is_a_string():\n+ assert isinstance(pydantic.__version__, str)\n \n", "problem_statement": "Title: Missing `__version__` attribute on the main module causes attribute errors\n\nDescription: \nWhen importing the main module and trying to access its version information, the `__version__` attribute is missing. This leads to errors in environments or tools that expect this attribute to be present, such as PyInstaller packaging scripts that rely on it.\n\nExample code demonstrating the issue:\n\n```python\nimport pydantic\n\n# Check if the version attribute exists\nhas_version = hasattr(pydantic, '__version__')\n\n# Check the type of the version attribute if it exists\nif has_version:\n version_type = type(pydantic.__version__)\nelse:\n version_type = None\n```\n\nIn the current state, `has_version` is False, and attempting to access `pydantic.__version__` raises an AttributeError.\n\nExpected behavior: \nThe main module should expose a `__version__` attribute as a string, allowing users and tools to reliably query the package version without errors.\n\nActual behavior: \nThe `__version__` attribute is not present on the main module, causing attribute errors when accessed and failing checks for its existence.", "FAIL_TO_PASS": ["test_version_attribute_is_present", "test_version_attribute_is_a_string"], "PASS_TO_PASS": [], "expected_output_json": "{\"test_version_attribute_is_present\":\"PASSED\",\"test_version_attribute_is_a_string\":\"PASSED\"}", "responses_create_params": {"input": [{"role": "user", "content": "Title: Missing `__version__` attribute on the main module causes attribute errors\n\nDescription: \nWhen importing the main module and trying to access its version information, the `__version__` attribute is missing. This leads to errors in environments or tools that expect this attribute to be present, such as PyInstaller packaging scripts that rely on it.\n\nExample code demonstrating the issue:\n\n```python\nimport pydantic\n\n# Check if the version attribute exists\nhas_version = hasattr(pydantic, '__version__')\n\n# Check the type of the version attribute if it exists\nif has_version:\n version_type = type(pydantic.__version__)\nelse:\n version_type = None\n```\n\nIn the current state, `has_version` is False, and attempting to access `pydantic.__version__` raises an AttributeError.\n\nExpected behavior: \nThe main module should expose a `__version__` attribute as a string, allowing users and tools to reliably query the package version without errors.\n\nActual behavior: \nThe `__version__` attribute is not present on the main module, causing attribute errors when accessed and failing checks for its existence."}]}}
+{"instance_id": "snok__django-swagger-tester-aacde4d5b80326a9d4155a49936dcfaea27a14cf", "repo": "snok/django-swagger-tester", "language": "python", "workdir": "/testbed", "image_ref": "lllqaq/snok_django-swagger-tester-final:aacde4d5b80326a9d4155a49936dcfaea27a14cf", "base_commit": "2a5ac45f274f7d00f2b3f78b20deeb29181a1f0c", "patch": "diff --git a/django_swagger_tester/__init__.py b/django_swagger_tester/__init__.py\nindex d25e607..ddd0881 100644\n--- a/django_swagger_tester/__init__.py\n+++ b/django_swagger_tester/__init__.py\n@@ -1,2 +1,2 @@\n-__version__ = '0.2.2'\n+__version__ = '0.2.3'\n __author__ = 'Sondre Lilleb\u00f8 Gundersen'\ndiff --git a/django_swagger_tester/response_validation/base/swagger_tester.py b/django_swagger_tester/response_validation/base/swagger_tester.py\nindex 7b94c25..a93fa09 100644\n--- a/django_swagger_tester/response_validation/base/swagger_tester.py\n+++ b/django_swagger_tester/response_validation/base/swagger_tester.py\n@@ -106,7 +106,7 @@ class SwaggerTester(object):\n elif not schema['items'] and not data:\r\n return\r\n elif '$ref' in schema['items']:\r\n- item = self.definitions[schema['items']['$ref']]\r\n+ item = self.definitions[schema['items']['$ref'].split('/')[-1]]\r\n else:\r\n item = schema['items']\r\n \r\n", "test_patch": "diff --git a/tests/test_version.py b/tests/test_version.py\nindex 3754c8e..8a18a08 100644\n--- a/tests/test_version.py\n+++ b/tests/test_version.py\n@@ -2,4 +2,4 @@ from django_swagger_tester import __version__\n \r\n \r\n def test_version():\r\n- assert __version__ == '0.2.2'\r\n+ assert __version__ == '0.2.3'\r\n \n", "problem_statement": "Title: Version number does not update correctly after changes\n\nDescription: \nWhen updating the version number in the package, the new version is not reflected correctly in the code. For example, after changing the version string from `'0.2.2'` to `'0.2.3'`, the code still reports the old version `'0.2.2'`. This causes confusion about which version is actually in use.\n\nExample code snippet demonstrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # Expected to print '0.2.3' after version update\n print(\"Current version:\", __version__)\n```\n\nExpected behavior: \nThe printed version should match the updated version string `'0.2.3'`.\n\nActual behavior: \nThe printed version remains `'0.2.2'` even after the version string is updated in the source code.\n\nThis discrepancy indicates that the version reference handling is not correctly updated, leading to outdated version information being reported.", "FAIL_TO_PASS": ["test_version"], "PASS_TO_PASS": [], "expected_output_json": "{\"test_version\":\"PASSED\"}", "responses_create_params": {"input": [{"role": "user", "content": "Title: Version number does not update correctly after changes\n\nDescription: \nWhen updating the version number in the package, the new version is not reflected correctly in the code. For example, after changing the version string from `'0.2.2'` to `'0.2.3'`, the code still reports the old version `'0.2.2'`. This causes confusion about which version is actually in use.\n\nExample code snippet demonstrating the issue:\n\n```python\nfrom django_swagger_tester import __version__\n\ndef check_version():\n # Expected to print '0.2.3' after version update\n print(\"Current version:\", __version__)\n```\n\nExpected behavior: \nThe printed version should match the updated version string `'0.2.3'`.\n\nActual behavior: \nThe printed version remains `'0.2.2'` even after the version string is updated in the source code.\n\nThis discrepancy indicates that the version reference handling is not correctly updated, leading to outdated version information being reported."}]}}
diff --git a/resources_servers/swe_next/data/example_metrics.json b/resources_servers/swe_next/data/example_metrics.json
new file mode 100644
index 00000000000..b06db51952b
--- /dev/null
+++ b/resources_servers/swe_next/data/example_metrics.json
@@ -0,0 +1,87 @@
+{
+ "name": "example",
+ "type": "example",
+ "jsonl_fpath": "resources_servers/swe_next/data/example.jsonl",
+ "num_repeats": 1,
+ "source": null,
+ "gitlab_identifier": null,
+ "huggingface_identifier": null,
+ "license": null,
+ "Number of examples": 5,
+ "Number of tools": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "Json-dumped number of words (proxy for token count)": {
+ "Total # non-null values": 5,
+ "Average": 138.8,
+ "Min": 126.0,
+ "Max": 153.0,
+ "Standard deviation": 11.03
+ },
+ "Number of turns": {
+ "Total # non-null values": 5,
+ "Average": 1.0,
+ "Min": 1.0,
+ "Max": 1.0,
+ "Standard deviation": 0.0
+ },
+ "Temperature": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "instance_id": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "repo": {
+ "unique_count": 4,
+ "total_count": 5
+ },
+ "language": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "workdir": {
+ "unique_count": 1,
+ "total_count": 5
+ },
+ "image_ref": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "base_commit": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "test_patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "problem_statement": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "FAIL_TO_PASS": {
+ "unique_count": 4,
+ "total_count": 6
+ },
+ "expected_output_json": {
+ "unique_count": 3,
+ "total_count": 5
+ },
+ "PASS_TO_PASS": {
+ "unique_count": 5,
+ "total_count": 5
+ }
+}
\ No newline at end of file
diff --git a/resources_servers/swe_next/data/example_rollouts.jsonl b/resources_servers/swe_next/data/example_rollouts.jsonl
new file mode 100644
index 00000000000..92435a1cf65
--- /dev/null
+++ b/resources_servers/swe_next/data/example_rollouts.jsonl
@@ -0,0 +1,5 @@
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "snok__django-swagger-tester-3640761da93ec8921419fe717d72355d84a7cff7", "language": "python", "test_results": {"expected_total": 1, "parsed_total": 1, "required_pass_total": 1, "missing": [], "missing_total": 0, "mismatched": [], "mismatched_total": 0, "resolved": true}, "test_output": "Checking patch django_swagger_tester/__init__.py...\nApplied patch django_swagger_tester/__init__.py cleanly.\nChecking patch tests/test_version.py...\nerror: while searching for:\n?\n?\ndef test_version():?\n assert __version__ == '1.0.3'?\n\n\nerror: patch failed: tests/test_version.py:2\nApplying patch tests/test_version.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SWE_NEXT_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.5, pluggy-1.5.0\nrootdir: /workspace\nconfigfile: pytest.ini\ncollected 1 item\n\nr2e_tests/test_1.py . [100%]\n\n=============================== warnings summary ===============================\n.venv/lib/python3.8/site-packages/_pytest/config/__init__.py:1441\n /workspace/.venv/lib/python3.8/site-packages/_pytest/config/__init__.py:1441: PytestConfigWarning: Unknown config option: DJANGO_SETTINGS_MODULE\n \n self._warn_or_fail_if_strict(f\"Unknown config option: {key}\\n\")\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::test_version\n========================= 1 passed, 1 warning in 0.01s =========================\n___NEMO_GYM_SWE_NEXT_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 13.37625503540039, "patch_verification_time_taken": 6.0666663646698, "_ng_task_index": 0, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "snok__drf-openapi-tester-d7ff46410a0e47572086eb5cf1ee13f396bee3c3", "language": "python", "test_results": {"expected_total": 1, "parsed_total": 1, "required_pass_total": 1, "missing": [], "missing_total": 0, "mismatched": [], "mismatched_total": 0, "resolved": true}, "test_output": "Checking patch django_swagger_tester/__init__.py...\nApplied patch django_swagger_tester/__init__.py cleanly.\nChecking patch tests/test_version.py...\nerror: while searching for:\n?\n?\ndef test_version():?\n assert __version__ == '1.0.1'?\n\n\nerror: patch failed: tests/test_version.py:2\nApplying patch tests/test_version.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SWE_NEXT_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0\nrootdir: /workspace\nconfigfile: pytest.ini\ncollected 1 item\n\nr2e_tests/test_1.py . [100%]\n\n=============================== warnings summary ===============================\n.venv/lib/python3.11/site-packages/_pytest/config/__init__.py:1428\n /workspace/.venv/lib/python3.11/site-packages/_pytest/config/__init__.py:1428: PytestConfigWarning: Unknown config option: DJANGO_SETTINGS_MODULE\n \n self._warn_or_fail_if_strict(f\"Unknown config option: {key}\\n\")\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::test_version\n========================= 1 passed, 1 warning in 0.01s =========================\n___NEMO_GYM_SWE_NEXT_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 12.36241102218628, "patch_verification_time_taken": 4.125223398208618, "_ng_task_index": 1, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "masoniteframework__orm-f3874caf9c7fd3ff535116b6c1066c90cab95ec7", "language": "python", "test_results": {"expected_total": 6, "parsed_total": 6, "required_pass_total": 6, "missing": [], "missing_total": 0, "mismatched": [], "mismatched_total": 0, "resolved": true}, "test_output": "Checking patch src/masonite/orm/collection/Collection.py...\nApplied patch src/masonite/orm/collection/Collection.py cleanly.\nChecking patch tests/collection/test_collection.py...\nerror: while searching for:\n ]\n )\n self.assertEqual(len(collection.where(\"name\", \"Joe\")), 2)\n\n\nerror: patch failed: tests/collection/test_collection.py:28\nApplying patch tests/collection/test_collection.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SWE_NEXT_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0\nrootdir: /workspace\ncollected 6 items\n\nr2e_tests/test_1.py ...... [100%]\n\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::TestCollection::test_first\nPASSED r2e_tests/test_1.py::TestCollection::test_last\nPASSED r2e_tests/test_1.py::TestCollection::test_pluck\nPASSED r2e_tests/test_1.py::TestCollection::test_pop\nPASSED r2e_tests/test_1.py::TestCollection::test_take\nPASSED r2e_tests/test_1.py::TestCollection::test_where\n============================== 6 passed in 0.17s ===============================\n___NEMO_GYM_SWE_NEXT_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 11.048015117645264, "patch_verification_time_taken": 6.038610935211182, "_ng_task_index": 2, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "pydantic__pydantic-68784f63c0219aeb2c2d816347c41222fa48cdd4", "language": "python", "test_results": {"expected_total": 2, "parsed_total": 2, "required_pass_total": 2, "missing": [], "missing_total": 0, "mismatched": [], "mismatched_total": 0, "resolved": true}, "test_output": "Checking patch pydantic/__init__.py...\nApplied patch pydantic/__init__.py cleanly.\nerror: new file tests/test_version.py depends on old contents\n___NEMO_GYM_SWE_NEXT_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0\nrootdir: /workspace\nconfigfile: setup.cfg\ncollected 2 items\n\nr2e_tests/test_1.py .. [100%]\n\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::test_version_attribute_is_present\nPASSED r2e_tests/test_1.py::test_version_attribute_is_a_string\n============================== 2 passed in 0.27s ===============================\n___NEMO_GYM_SWE_NEXT_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 12.817518711090088, "patch_verification_time_taken": 1.8118960857391357, "_ng_task_index": 3, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}}
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "snok__django-swagger-tester-aacde4d5b80326a9d4155a49936dcfaea27a14cf", "language": "python", "test_results": {"expected_total": 1, "parsed_total": 1, "required_pass_total": 1, "missing": [], "missing_total": 0, "mismatched": [], "mismatched_total": 0, "resolved": true}, "test_output": "Checking patch django_swagger_tester/__init__.py...\nChecking patch django_swagger_tester/response_validation/base/swagger_tester.py...\nApplied patch django_swagger_tester/__init__.py cleanly.\nApplied patch django_swagger_tester/response_validation/base/swagger_tester.py cleanly.\nChecking patch tests/test_version.py...\nerror: while searching for:\n?\n?\ndef test_version():?\n assert __version__ == '0.2.2'?\n\n\nerror: patch failed: tests/test_version.py:2\nApplying patch tests/test_version.py with 1 reject...\nRejected hunk #1.\n___NEMO_GYM_SWE_NEXT_TEST_BEGIN___\n============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.5, pluggy-1.5.0\nrootdir: /workspace\nconfigfile: pytest.ini\ncollected 1 item\n\nr2e_tests/test_1.py . [100%]\n\n=============================== warnings summary ===============================\n.venv/lib/python3.8/site-packages/_pytest/config/__init__.py:1441\n /workspace/.venv/lib/python3.8/site-packages/_pytest/config/__init__.py:1441: PytestConfigWarning: Unknown config option: DJANGO_SETTINGS_MODULE\n \n self._warn_or_fail_if_strict(f\"Unknown config option: {key}\\n\")\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::test_version\n========================= 1 passed, 1 warning in 0.01s =========================\n___NEMO_GYM_SWE_NEXT_TEST_END___\n", "error": null, "eval_sandbox_start_time_taken": 13.6364266872406, "patch_verification_time_taken": 8.771625995635986, "_ng_task_index": 4, "_ng_rollout_index": 0, "agent_ref": {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}}
diff --git a/resources_servers/swe_next/data/supported_instance_ids.txt b/resources_servers/swe_next/data/supported_instance_ids.txt
new file mode 100644
index 00000000000..ea15eeca1ea
--- /dev/null
+++ b/resources_servers/swe_next/data/supported_instance_ids.txt
@@ -0,0 +1,1998 @@
+23andMe__Yamale-e5a62d03a39fdd6f64d80c22caad608ac3730c92
+Amaindex__asyncio-socks-server-1fac2d2d87bdff1e7978dea57f52791b67739585
+Blazemeter__taurus-05bc7851daa45401a2a197a6deecd8d50ad4b8a7
+Blazemeter__taurus-1d3791aac8231ff3bcfb25299edc3050cd018f93
+Blazemeter__taurus-2a64e4dea5ffde02ed55cb5d53e554bc542cee13
+Blazemeter__taurus-2d58754ad252fc4a32978ef09651bd37a03847e1
+Blazemeter__taurus-2e78290eed086f45eb1a1b0978e4aa3ea077044b
+Blazemeter__taurus-3c40f6a6d8eafb2aba0ffc66f20ba72d4afc7ff1
+Blazemeter__taurus-3ced197c48dac4182484fa0cdf0829a685ea5b0c
+Blazemeter__taurus-40b54fd5471610d00e8622775a7f1958d68e4604
+Blazemeter__taurus-48aed93bbdecc37fb4ca7a2c608eca3dc84d98cb
+Blazemeter__taurus-4b3e090b71ff14ad92f17610d1dc42e553efa91b
+Blazemeter__taurus-79fb8b63dcd0f5047e527e596740c8f52996947b
+Blazemeter__taurus-96a6ff026b6f8b69a9e6bb8a8f8351005aabdacf
+Blazemeter__taurus-a1b11d3a77d9585e4d3c1010dbc8286117607af1
+Blazemeter__taurus-a2914bb123cc6489a7bc179fc4624b0d7157b7ce
+Blazemeter__taurus-c1ae549281ba2d6f36cf92a4f0b0a9d9a9de1adf
+Blazemeter__taurus-c348ee3b2b14a49d0eb6b2a6f4f06aad710708ea
+Blazemeter__taurus-d3da75357426a1a875ca691552a82041ee126918
+Blazemeter__taurus-d76114726dc2ae947eb33aaf77828dcbce768b96
+Blazemeter__taurus-dff962b7cef78fa587995a4bf8f365a236d6d9d1
+Blazemeter__taurus-e4646b5acf5336399f0b17a2f5a193c88eefb9ca
+Blazemeter__taurus-f396a01af74d53c0960f232e3db1e001e20a3275
+BritishGeologicalSurvey__etlhelper-b69627f4d31ff9f9ebc7264252c52f54b0b522a6
+BritishGeologicalSurvey__etlhelper-dabe89e64c3436e79ef6f4a9d4a380342fa090e1
+BritishGeologicalSurvey__etlhelper-e001791b3db2d2efb6ac30cf85ab21534a03873b
+CenterForOpenScience__pydocx-361dbdcac96fb597891e2c46657509fd220e60de
+CenterForOpenScience__pydocx-6a5188845ad0c5aa91350de9895adcf99b067379
+Ch00k__ffmpy-5941c92a4305a0924cd2554617c22d068f65c5fd
+CheetahTemplate3__cheetah3-34918b158bc58ed5b15844e94c7a82bedf5b54bb
+Delgan__loguru-086126fd8d0065336e40f7ea05546c5e62313e1b
+Delgan__loguru-3b66fb5b2ff38909dbeb817cb50e24f27677db8e
+Delgan__loguru-ab794fe877aec731a6ef7d6e59acee35f1dd4530
+Delgan__loguru-b02ef7ab6efa852e2a6cd859a90bbbe3b22698c1
+Delgan__loguru-f64b9e37ab23bfde663043643d7ed92adf243cc6
+Doist__todoist-api-python-8afab84c2fd72b89a78b550beaa420109989f842
+Ericsson__CodeChecker-70eb94ab96d0c91408acc3464d3aef423adf3f09
+GNS3__gns3-server-41f02dad54b50da07f12a24ad493fe599ffcf578
+GiacomoPope__dilithium-py-08b01de9c4d90dced0e9d3fdebfae5f528a6e409
+GiacomoPope__dilithium-py-22f0d83b4adce643e570cc59bd8db14e322c1bf2
+GiacomoPope__dilithium-py-56874ed3521d2f1899851e5d8c2b8521ce3bdd1b
+GiacomoPope__kyber-py-6f6e14ec598040e34979c9fbf407af52af3299b1
+GoogleCloudPlatform__snapshot-debugger-362d960e6f47014dfe907208aa32a657daeea0fc
+GoogleCloudPlatform__snapshot-debugger-50a5b3edcb20c4744d10116022277b2db50338dc
+GoogleCloudPlatform__snapshot-debugger-518e3db0faf0b16ecaefc3187c305317b93f9467
+GoogleCloudPlatform__snapshot-debugger-546114b6490f21c7b96f996c56304caa5ab153ec
+GoogleCloudPlatform__snapshot-debugger-54b725a9d01660427b4a0a564fff87f4b9ff5eea
+GoogleCloudPlatform__snapshot-debugger-62e87b58f8d93c94a24dcdee91bac116e67aedb1
+GoogleCloudPlatform__snapshot-debugger-80fdb63d3aa4417117f968b7207df2f4ff4f8cd3
+GoogleCloudPlatform__snapshot-debugger-873fbd339406c38157716febf4932c592de03878
+GoogleCloudPlatform__snapshot-debugger-8745caab715c8c917bd3fe2128fffd1102fa1bd3
+GoogleCloudPlatform__snapshot-debugger-8c69338c0296f34d5a3a8d5c91bf8fd7b520deb9
+GoogleCloudPlatform__snapshot-debugger-91506b20a8af176f06c025b11cd48c8eb534d2e2
+GoogleCloudPlatform__snapshot-debugger-a73dd5990b3132fb3b57b737af0548dc7544b5ea
+GoogleCloudPlatform__snapshot-debugger-c06dcbae8084e0899bdebff3e1d5f166aa59f89b
+GoogleCloudPlatform__snapshot-debugger-d721f03a35167a1c1e67e4dfd9cc82a61c06d653
+GoogleCloudPlatform__snapshot-debugger-e50a45ec09a728763b57ec30f57de5a0b8cbbda6
+GoogleCloudPlatform__snapshot-debugger-eb6628826ba2c72f3e7d7b87af44411cd3e5ffbc
+GoogleCloudPlatform__snapshot-debugger-fb22c1ab0a82e0f1c273e5b98129b7a6ea0ea474
+Instagram__LibCST-b0d145dddd32b312b90c1e8550ce68f35643a58a
+Instagram__LibCST-de5635394b5627cb86656147ba2f96e835ed3d44
+Knio__dominate-0d26dcb5293933deec3c3d58cf9e8ea274b14f68
+Knio__dominate-30da370bb56c88be3b728c481ae10113fe0877aa
+Knio__dominate-7d6026c6a260dcf102a58cbda51b98bcb7c68d7e
+Knio__dominate-fc81c805622ba9282afb8dcef857a886a6483392
+Lawouach__WebSocket-for-Python-a4b059c0f42c085ceb179140e7dc52fe539d454e
+Michael-F-Bryan__auto-changelog-6922b4f3872783af1d3edb7ef073e42e6cbda760
+Microsoft__ptvsd-33f49c3778d78699b4c0a5de0bc3a60a5cc34506
+Microsoft__ptvsd-bd220d033355ed626647f419c8f63f0ab5fe47c6
+MycroftAI__adapt-0b86fdc932497c5776622391b9a5bfd18affaed5
+MycroftAI__adapt-4670b0fa7dcec472b7d0f497fb52637e98dd6649
+MycroftAI__adapt-a9e0df000163ba1d80862428d681504e635de945
+MycroftAI__adapt-e6517746561e46e8e68da68dd561597033867a3f
+Neoteroi__rodi-1b9367b743597fc9ec5eab68d5c8e515d7d066bd
+Neoteroi__rodi-41037c7de92afb4398d914dbb36a93f10396d162
+Neoteroi__rodi-6043b5be9ffd48d5b7b7c9d2ce231106b54dab0e
+Neoteroi__rodi-95edd655130bc2694dbd7d42b7dd8d3e9939ae58
+Neoteroi__rodi-b26f1beefe5e040b7ce92196b8ee19fd3ead1f2a
+Neoteroi__rodi-cd488f4b568a2e4dbd2ab78bb5dd6378d58eeb0c
+Neoteroi__rodi-dd0e56e63b3cfda52b314e829278fa12a8844f2a
+NewFuture__DDNS-21539a6cb47fc08bb7ecdb232beb53bf68ed80f0
+NewFuture__DDNS-3bb6241c5b3588f8b88dc67f227d3b3b6d75b2bc
+NewFuture__DDNS-80813a07144ed1514a8448330ecdc2459dcfcb05
+NewFuture__DDNS-ae5e9d0dc82b9aad72f5e62e540c9c0aca56402f
+OSInside__kiwi-1c3e7643077dada100ef3607db118ba22d782653
+OSInside__kiwi-4fbb262c2525854d54f1be023d5d4d10fe69c7d7
+OSInside__kiwi-6b63666a875331535135ef8ea4cc0ce386d01ee3
+OSInside__kiwi-804beab07cfa2bc1e8e9414701c2a925caf104b1
+OSInside__kiwi-cedd7a835875a18200738cc206c06b548fe36eec
+OSInside__kiwi-dfda54c5b2d16547a4781e1e697c8f0649d17cef
+OSInside__kiwi-e40799bf6979f9aa08ba4de621781b93f48519ce
+PyCQA__autoflake-3aed3ddf852f6cd3135cd182f436c0509c884d78
+PyCQA__autoflake-459f5f53cf10109020fce0470b1cd456d4bfec46
+PyCQA__autoflake-51305338424ae90909dd1530df4193d0007b00f4
+PyCQA__autoflake-61b09b321a5604b643c581475827958c7c03ffcd
+PyCQA__autoflake-6d0f1c43848e628524f92ef6ea334943d843b7f6
+PyCQA__autoflake-780b44f036ab8715d1299b74b4fd3c7f04e8ed4f
+PyCQA__autoflake-92a02611d44d4f80e27490ba39123d231f222f7e
+PyCQA__autoflake-ad7cc648f0907e5a89b84ddaadae7c91653809a1
+PyCQA__autoflake-bc62215809ec62a07eb4e2b43b25166f2bed2d2f
+PyCQA__autoflake-c136ba5188d0daf408b7ecc83bb56cffcb0326d9
+PyCQA__autoflake-d3898701d5c372bddb0f63b55a09f2a51be91bb2
+PyCQA__autoflake-d90f8f4d3f0a0a62863dd9ae1e9504c3f356e1a6
+PyCQA__autoflake-db8a082af061c1d7bae8be9855c4a7a2eddb624d
+PyCQA__autoflake-e2266f33a452d4b5a93963d420daaed7e7d6b986
+PyCQA__autoflake-ea5f8c0cf44e0c1c0c653e9706670e719aaea92e
+PyCQA__autoflake-efcda0c149c3c162030ee5c03febfe6ea1159670
+PyThaiNLP__pythainlp-00f55ff4cebbbfe1524e4ede4a1a6a7c9e343c0f
+PyThaiNLP__pythainlp-1271452144f8cfe68af510f4ff98990d8bed4ac0
+PyThaiNLP__pythainlp-733298467695eea0fad93755142399bc168cd39e
+PyThaiNLP__pythainlp-836e7f1401dcd2dc2a3dc76ec3bfca65d1df7d6d
+PyThaiNLP__pythainlp-985231a7b68652182083bbcd3c2858ff75c5bf73
+PyThaiNLP__pythainlp-c68d7e0f849cd97b793049f3227d8e719e420402
+PyThaiNLP__pythainlp-cae175c35fe0af6a5bb84b2f5706d8ca3a18ed0c
+Python-Markdown__markdown-0394b26c61014feea4d5be4f543f2caa7f058b0b
+Python-Markdown__markdown-042bd0b10ee3f334e385db7bde5c53d847549e38
+Python-Markdown__markdown-1279074ea97807c0131a2b82893189bc07bf2dd8
+Python-Markdown__markdown-1f3ec538a2acf25607253fc7c7a992950463931d
+Python-Markdown__markdown-2b49115b1002142afbd84b3002f13c0e98a0f487
+Python-Markdown__markdown-2e0962ef1412b0cd566331954aff82711ce93acf
+Python-Markdown__markdown-33359faa385f59b84cd87df5f4b0996055a482e2
+Python-Markdown__markdown-4b20c168bc4afa0a3775080d803e38694fac17b3
+Python-Markdown__markdown-5fdf7d47aa90a0983fa356b577a2ff5e16e68147
+Python-Markdown__markdown-66517465786b90ccb7fcffeef7996b593374d889
+Python-Markdown__markdown-7334ecd4c747f9a36351a5073b55c2a606917ef9
+Python-Markdown__markdown-7daa6740e143aea914bf81f5f843eb8c5562f2ba
+Python-Markdown__markdown-82d2b253ca0943102a332e476f2b49a5139918fd
+Python-Markdown__markdown-8c0698b013edeb82586290e637df7c30ede81b5a
+Python-Markdown__markdown-939a2fe70580c8e6b7e10af82ebdd6c8c72e019a
+Python-Markdown__markdown-93d17b9cc4a3f53dc2059e44a691a28797422d21
+Python-Markdown__markdown-97c1edd5d0aba8b09afcf836777acc6935ed88e2
+Python-Markdown__markdown-9aa4586d92181a07d3c054d81ada9b100c879d68
+Python-Markdown__markdown-a11431539d08e14b0bd821ceb101fa59d6a74c8a
+Python-Markdown__markdown-a4b6ec9fcea353dd6f1c509ad6834aa6fd10564d
+Python-Markdown__markdown-a63e6f3416f2e4fc7c2d5edb2768ceed9218df20
+Python-Markdown__markdown-af38c42706f8dff93694d4a7572003dbd8b0ddc0
+Python-Markdown__markdown-be7ba7bfa17e7cb0c795e101662d1e490334ec84
+Python-Markdown__markdown-c70b2c4154d9b6e46f282c1f212c52e9fbfa5a07
+Python-Markdown__markdown-d60c16f712e5caf806e3c0ed40eac385a9d2e18a
+Python-Markdown__markdown-dbb9b3d766e847f1909fa0c92c6b997f0e7c868d
+Python-Markdown__markdown-dc434df776fe9af36fe07c4e782e51035ce30e1f
+Python-Markdown__markdown-e466f381d09692f484f8ff022273e2ac8cea0b16
+Python-Markdown__markdown-ec8c305fb14eb081bb874c917d8b91d3c5122334
+Snawoot__postfix-mta-sts-resolver-6ef4606665860220e675f8e1072fd1476e2dc9af
+SolarEdgeTech__pyctuator-2536697fab1da3c77f2903f302d02909929903c2
+Supervisor__supervisor-2076211d36292685e9311d539dc02a1f061d653e
+Supervisor__supervisor-7d39a0fea0aa69061c3d2d1474d01559cd18ddfd
+Supervisor__supervisor-b59f9f15bd9332b2cfebd0a8b6ebf68aedcb25aa
+Supervisor__supervisor-bcc3ca15f6f59e4117dd2bde1fdaaca2ca923473
+Supervisor__supervisor-d6119ea6e83bbbcc06881d0a4e7c2f5e1419396a
+Supervisor__supervisor-f3ec56dfe3a6d25ccfc594e12c2825ea0f48e2ba
+Tabviewer__tabview-7552451887c4fc08798f97ca476698771db4ab1b
+Turbo87__utm-9c7cc8f2aa79bde804637d694d881bc30b01be58
+Turbo87__utm-9cde6468d9a9b2d5b532f0630cdb230b80f52562
+Turbo87__utm-e175e7b0d8a0f7cfd559f962f6a850913472567e
+UCSBarchlab__PyRTL-27859c8355c866a3375cff6664862751fa2c4fd0
+UCSBarchlab__PyRTL-2a1aa8ae1e7bcbeb1f2f48a3b97c9d9946bd1b08
+UCSBarchlab__PyRTL-4c72f2d74afaff91ca84a3b69e89b1b970c37a4d
+UCSBarchlab__PyRTL-7b8d86ad9f2a6c71a645ece09253bb2aa3db47fb
+Yubico__python-fido2-2888efba175bff1315c518df2cefd55ebeb24f19
+Yubico__python-fido2-72f0ba0f6036758b4fa8252b938a8df6bcc5eb49
+Yubico__python-fido2-acd5616826d02b53201e8f5e538166589c8250bb
+acesseonline__pyreportjasper-e694a4adbcaf84d384f424cc1c35dc1b0e715e37
+adbar__simplemma-1f3707bec868ec3e5ec8165b1b7e5e1539118f15
+adbar__simplemma-436d4ed5c857d879e8741dbdad8c69d3ce10ea68
+adbar__simplemma-4e3cf68dc82be93906202208808c3c9b1c681438
+adbar__simplemma-8c0659781c33f45be55121e226ffc6b831768de0
+adbar__simplemma-cb820a42d70b17880d14c70574f967cdce6f9161
+adbar__simplemma-d225e423b4ce2b567342c5faed815e0b70996129
+aiven__pghoard-19d4982fe0fb2989dba114929074e73f3da40199
+aiven__pghoard-26533be13fd4e19cbf95ede63866952f07bd4812
+aiven__pghoard-2f98a1478ff8e7be5fe60c682dbeda9d78375b43
+aiven__pghoard-3e0987c3521d2d1ee83ffd5c7de523d8fab949ff
+aiven__pghoard-a6b4b8ca462aef7f7571021e138efb24d09d0b66
+aiven__pghoard-b2f90f9bc24f5c038f6086db6ada0ec934021ebf
+aiven__pghoard-f60c7bb1708f267ec0dba09cdddc336c1c12a0b5
+aiven__pghoard-f8e72f8ed65672825c2f5bf55472d5f785ec69e2
+akaihola__pgtricks-85445295115387d5b1bbebc9b0d5284bdad56db7
+alastair__python-musicbrainzngs-d90967eac38ffe66e455137077e09ee16aa04c79
+amoffat__sh-55f3bf1bfd7a5bc7ac7ade3773cc41510bf2e73b
+amoffat__sh-abfcf74777459f27e0f1adaef6ada8c3c9b747f0
+amoffat__sh-b36a6c4d3e80f41c267ce4fea13cf818d6b58885
+amoffat__sh-d8a04239a4884c835a4d8725b31383d6a5357e46
+amoffat__sh-ea434f0bafd285bbe5b93d218e62227f2b77f310
+andymccurdy__redis-py-26d2d13edcf3f29a381df4850c5926cb285d3584
+andymccurdy__redis-py-6376414c7ea05f83c9c4b017a6e402e7d583fe2a
+andymccurdy__redis-py-7339c87e4de82d7000306eeb76a4d4d8ae8a4c1d
+andymccurdy__redis-py-893efc30b6f1d321e38d058657b757b1ec17aa99
+andymccurdy__redis-py-9e8cfaac8bbab84c2340b55e5ac55289834b558b
+andymccurdy__redis-py-9fd5576b296b5ad315024d7245fb0376ba1c4aae
+andymccurdy__redis-py-ce9eb83a14a3baaf31ee1038810977e36a0e05e0
+andymccurdy__redis-py-e07bd9464d6ce226e3db9a5eaf95bc2ecfe8e034
+aparrish__pronouncingpy-5f69043134f6327bccba24b713e4d19a6301b1b4
+aparrish__pronouncingpy-9a1c5ff0b7ba526fcd87d01fcbff3d4247fade49
+aparrish__pronouncingpy-a828648a8f9b5432c98588fa43bd13d7b57a9f9a
+aparrish__pytracery-0ba7f4211a59acf27ada204accd649e3072e34a5
+aparrish__pytracery-9be2712d82763277cc648148a081e5df9989783e
+asreview__asreview-248c6d223d1528a28f2c59dacb1219ecc86a4d3c
+asreview__asreview-398437792f1157f59b61a64b9e7d39734ce65fb8
+asreview__asreview-80a5ce380d252bd27b704fa3698cde3dbc7f4f07
+asreview__asreview-b8f51672e4e14d97c7dd739ef13cf20e4756b0b9
+asreview__asreview-ebecc937fca4000ec7b96ff3b403d8bf0d9a3c94
+asreview__asreview-ed752eb184e4b633aa4daef7c9de67c0356addeb
+assertpy__assertpy-0a8c4f66d153d11d933e1f9f255d1d4f516d2ee3
+assertpy__assertpy-4cb2b7d878aa6ac4268583a423d3c498de7ebc73
+assertpy__assertpy-5de59095518765d0bbd86ac053b3d979aeaee86d
+assertpy__assertpy-75347d08eaed0744fa7107da6b274dac64cda77e
+assertpy__assertpy-9a99413e1e048f9e038a4289167b8702b9b0e9b2
+assertpy__assertpy-a5d9ece123d6e1622b8d007e739efbb1292bf259
+attwad__python-osc-043260629060422bf41145a5dd36afac0c41b973
+attwad__python-osc-4b40a712211494c6eac6121ef69ec6b9ea322edd
+attwad__python-osc-5b9cc7f7be7c8164e9807f804ce947a8f0d6a20b
+attwad__python-osc-61500b5fcc4180e6ab5418f89d88577bb7256ce3
+attwad__python-osc-66acb41f09308688bd3fa71f4e30dd1f044f1184
+attwad__python-osc-6aef407d0b2893fb3df4e03c8066370945e160c7
+attwad__python-osc-73777b367ac4327e9fd0b799366959e50266ebc2
+attwad__python-osc-783b3b7e794b5a7fddd5491ab93a74bcfe449622
+attwad__python-osc-9da6496fc43edbfa89ec5955731ce4c578c66978
+attwad__python-osc-b3ebafa610c5c3d5dc6b81647cb32bbfde3f81f9
+authlib__authlib-36b124661e392d2a3a3b3c339f6ef40983fe82f6
+authlib__authlib-55e8517c637fb4540d44e3c46edc23542083e7ae
+authlib__authlib-57eb8cbb553310abf2053cc78661442606763d85
+authlib__authlib-5bdfc4bfff8380620ed5ec55ba7a06d96cac3365
+authlib__authlib-5fa31629b4014b3d45116668fe5f7d189df59644
+authlib__authlib-74b71afcaf30c8c027ca9be9cb4618fc0315b374
+authlib__authlib-90ac7dd9876b5163eac407f4f51b9491be0759b6
+authlib__authlib-9366b4e6d5e26b798fa4d7daa17c02b67a7677c6
+authlib__authlib-cadc55d15e4d15fc1407dc2187fea0208d8b520c
+authlib__joserfc-2b95926d21bfedb89b7775f9d973fcf98d9121d6
+authlib__joserfc-2ebe3cca5d17b825650043a4297e01672192bf6d
+authlib__joserfc-4696a1a6ddeedd58263ecb1a613fcf4847af4238
+authlib__joserfc-62f5674e1691e7a2a681879043d5cfa6bdbf69f8
+authlib__joserfc-6aed3f0d71731b248260b890b4ca0497578273b4
+authlib__joserfc-6bcf6de047c58a95b5f52f9a85a3f8be61f22ee1
+authlib__joserfc-70deabb662241b0ec7ddf626bbd019159cef4b22
+authlib__joserfc-9da0543a97d7bd5d35089bdfdade256bef263d8f
+authlib__joserfc-b8434cb623d4b3b9fcca7cf213e3083067bfe692
+authlib__joserfc-cae2347f34dd4b76fa6e2f542c2c79713fb75596
+authlib__joserfc-ed2e6df6d8bed27d424aaaa1d94399ded33bfa29
+avocado-framework__avocado-1e8239631a38e400fd8323db1f26c20769b9c66c
+avocado-framework__avocado-2c9fdd7f313eef7615d24ffa43edca842269e8e3
+avocado-framework__avocado-9b8eeb7d60249c16b34482bdf3da8f5b580ee42b
+avocado-framework__avocado-c6d6240feaf1cef1463785781eddfb3e2a8ec871
+avocado-framework__avocado-e4fd54f00a2237ab78bddafbb9c947adc69030ff
+awslabs__aws-lambda-builders-02b03aa91bc19a83f215e48c0b8a99c7a154afe5
+awslabs__aws-lambda-builders-0d7e77668c5e7ee89886330add83ff892dafa453
+awslabs__aws-lambda-builders-0fdbcdd258c4f11d5d91334d128f0568fc12a133
+awslabs__aws-lambda-builders-2a2d6b72fae684efd379f19e7a0149715bcc4a33
+awslabs__aws-lambda-builders-2d0bc1bf964ee0e6d085777794f153f5dc3636d8
+awslabs__aws-lambda-builders-419bdee2374de1cbbd90937a9a13040eeada73e3
+awslabs__aws-lambda-builders-50f8ef72f0497c5632fd13cb273488886579e65c
+awslabs__aws-lambda-builders-57f5409c024a97ffcd0c995c391926e18a70bcda
+awslabs__aws-lambda-builders-5aab97467be510e155e6c2a278a01f7a20e673a3
+awslabs__aws-lambda-builders-686712f62e9bf9ff81c265c67054e0708cb44b4c
+awslabs__aws-lambda-builders-745de65209f7c2a8d22df41177c0933916b33fa7
+awslabs__aws-lambda-builders-934b2be6e492e973f8f72889bf9de668f75930f5
+awslabs__aws-lambda-builders-efda1dd6a6cbe5dc3fe077f38c3b3d04d8cd76cd
+awslabs__aws-lambda-builders-fb506254d19a956e346524b70086f76d54581038
+axem-solutions__dem-43701e53e8a4032e0f5e7e41886dab772b5267a9
+basnijholt__miflora-1ad2c9a6d60bf4e235480d3197ca7874101b4189
+basnijholt__miflora-9bfd9781b6d843279396f4b9a6c98aa366482aa5
+basnijholt__miflora-d7a69d81f4391a9f522c5053dce6519e2aa354be
+basnijholt__miflora-f3fea3d7d73b0c6eaef372f0002ccd7f45bdfbc2
+bbangert__beaker-889d3055a4ca31b55a0b0681b00f2973b3250d88
+beancount__fava-191d2e5989d5d61de3808212f19474e148ae2593
+beancount__fava-c2ed87e381b231c5ac3ea675b129465daf03d180
+beancount__fava-cd11c314add4ef3c46a480bc9e73302082d5ad6c
+beartype__beartype-4fb988a7359d28b18235e0f74ae52ad642a33d0b
+beartype__beartype-6d401588a638ce82fbe3b3ef5fb2997ad4ccda78
+benjaminp__six-10a2b75b8be7b68eacfa168834d9938b77d2d7e3
+berkerpeksag__astor-21cecd332c06abd557ea1e8cad2d84a03c1db27a
+berkerpeksag__astor-7638d93b5afaede530c09870626ed255d27f9c68
+berkerpeksag__astor-a3c9e284b46abf558c51d0af7a997609333bc7a2
+berkerpeksag__astor-ce56db29bdc3d7d86f66df3e501c7f90febdb0cb
+berkerpeksag__astor-cff734fedf2e5f46a780467f16fe8a8484a6d28f
+berkerpeksag__astor-d9e893eb49d9eb2e30779680f90cd632c30e0ba1
+berkerpeksag__astor-ee09ae423b93b0d4426da7c596660d4db525f9f0
+berkerpeksag__astor-ff250719fc50c2b527591c8067a65257c726d47c
+bgreenlee__pygtail-238668a8c21db1a1ced968fe8b031f9cc6d33bec
+bgreenlee__pygtail-3251487953a36a14f41284d8f6a07654b9696164
+bgreenlee__pygtail-3e1540b6a27c2d5cf07dbaa350446c2a0d84f732
+bgreenlee__pygtail-475cb2d341db9703949ed5a0d37416126fd4f864
+bgreenlee__pygtail-6c35789169aa1a7691aada9efade3e570862faf9
+bgreenlee__pygtail-6cdd1099b60e6cf95ba336282a13bce1bc4fd2dd
+bgreenlee__pygtail-6de08735409adc194d266d01b02161a71d7c63e0
+bgreenlee__pygtail-802b4ce605042954a1f8a1b921d7137e2e2c2307
+biopython__biopython-0a439faa6cde1d74c0ffaf1cd559951a87983df3
+biopython__biopython-33e2b8e23fac9061ded68bfa879de29f013c2552
+biopython__biopython-374833c6b50449c7266f7de3d5ad10e2b78f3231
+biopython__biopython-3d1980f88b00ae272b85838dbc31e19229ce3fcd
+biopython__biopython-400366990a65a18fc7001b72bac35fd5886225c1
+biopython__biopython-74a43437e9bbdc7ccf6276b93c769e1eebcab339
+biopython__biopython-78f507d231d5ee660e3c8f86312505eb93bafe2c
+biopython__biopython-8546c9622bf7ca7d257a60477f4b9b4e39492b02
+biopython__biopython-912e010439247fddef150ebb06363e5d2c2a7d6b
+biopython__biopython-9c84e10a0401050b7b4d34e611f4f3bf473d0048
+biopython__biopython-a1fddcb41b2b26c75f29c507df4f87fa0781fbb7
+biopython__biopython-a29e5f0967357767158bf57a7de20ecc210bcb5c
+biopython__biopython-b62d09dd1ec465a515fec79ce81b482574a5a53e
+biopython__biopython-b6accc253b20e571de2cea9946a9afde661e05c7
+biopython__biopython-c4a47ffff7f3e7de32ab3d8846983d3531ea63b4
+biopython__biopython-d357adc97e3e89618d2efc9b4e626b4f9221ba22
+biopython__biopython-e30181bdfd845f125203b2bb733ed9e380e3d8ad
+biopython__biopython-edcadddcc5f0b030bbf61857984331bd5bf7eb93
+biopython__biopython-fb5b4fa9a6cdd350b3f069763e955d50e229808b
+bitcraft__PyTMX-16c34c8e715291228e7bd4e55b3af8ec8597572c
+boto__boto-0a9b11408698e3923201d27c67eef1a59e6dd105
+boto__boto-11080a6878a9eca48cae792e2b48749e72907bf0
+boto__boto-1d75b6d9bca91cbac319ab5d0f7135cf2908786c
+boto__boto-2446a5b69a4a476a65d0a9ef808c31bb8e75644b
+boto__boto-2978243ffc544486c167d14b7be2e85b3bbbd528
+boto__boto-411e6723049d8a861a214819af8867212316de70
+boto__boto-500f604ec8ea60aa972ab655a315cb788a0cff05
+boto__boto-6a2d045f0b99540a0cf16bedcb890fa9d8f57623
+boto__boto-6a539da5cc76cafafaf1233457724c5c6b21d81a
+boto__boto-6fa1b2838cf2468b853424b38042495dd1fb1a3a
+boto__boto-7a2462ddc59eb9a47613cc9d52f2caea58f2e346
+boto__boto-82827e4b9dbed14b5cca5ea8a6cca4d2ac21a774
+boto__boto-83481807ccf1615d692366f6ce1c6faba262b672
+boto__boto-9b114fa2c8af9e6f9b0ed962117e2e2d8f4f0b00
+boto__boto-b856be32c4daf4d223efec85ef48b2cd80388713
+boto__boto-c3b2513f3ee4905eecaea7f3ad505ea8d8ef7774
+boto__boto-d1973a448f1634081547b35c18a17d97c5469be6
+boto__boto-d97245786215c8ed3e2e651e4092e1ef6eaf57c5
+boto__boto-dcfc751204bacb76c0db1738681c97530f3b7b70
+boto__boto-e583338522864154a9f4a4ed33a36b5e23486af1
+boto__boto-eca5f987aa59ec7490aa91466853c36b0cf40b3c
+boto__boto-f4ec420ecc3398a2b6c80e54d793c8af46e4ac6d
+bottlepy__bottle-4ba312fa335b67406890454eb57f20f5051387ae
+bottlepy__bottle-eb1982ea22937a042f5a6e98c5709f779a8fd66c
+bottlepy__bottle-ee61a68e8409ca3d57ae66f49f5f18a975a7d687
+brazilian-utils__brutils-07f1ba7467819f3a7b12a105c5c33a5e7df87527
+brazilian-utils__brutils-2d53fd118c3599ef8ec725ba36c33585e4ffceca
+brazilian-utils__brutils-3bbdbe4f0eac1c286229a05c3fbd3a6cd5d1e3a1
+brazilian-utils__brutils-5781a91e7070f474ad003c13c00a0c1c0de0a4fa
+brazilian-utils__brutils-756f1267b78ed597a7b65fd344a8ae2c6bf6a0b9
+brazilian-utils__brutils-aa68f000a0069940b81e8c9261998286223dd05c
+brazilian-utils__brutils-ff63c185cb2dcbdeb5d2086410676ed34b64d99a
+btclib-org__btclib-257dc73c321643c4beaa7d888026fa460df2492b
+byroot__pysrt-0753eed4b69369f34b0dbb02aac01df22d456d99
+byroot__pysrt-5465f2fd26f254af60cebad9cd0d4986a915347b
+carpedm20__emoji-1a224d280a7590d7e6d090c703dd3b48f6251ba8
+carpedm20__emoji-1c4bc823d01559e9745f01e8665b00508edf1e19
+carpedm20__emoji-4de8f41384d362b7b6a681c0aaf66ad799edc9bb
+carpedm20__emoji-57f010aa5776672c390796443a24cdc1e6d33726
+carpedm20__emoji-685ef3521e40458a98b2ff8d93859d35f2b87a0e
+carpedm20__emoji-810a9079a3694293078471d25e6bb4d4222fac23
+carpedm20__emoji-c398e0c5ff6ceff08c7860078b242765f093f285
+carpedm20__emoji-e05526589552db2e269b2f775233ec24f7c156f3
+carpedm20__emoji-efbb3e12e00382567fed1ef503c5f5a8723a3496
+cdump__investments-00adab454bd7c27244690e8b13548ceab2158ed1
+celery__billiard-17037e55c3bec0309d9ff008b76a8296b2da43e3
+celery__billiard-7a27c7c160397db104e4e4b8b14ca9803a8813fe
+celery__billiard-7a2c31cdfd45a4792f66692adc649d82c359fa14
+celery__billiard-8bffa2c2067f43da746c8f4e890c5a007bab0a12
+celery__billiard-d957a8b99ec4b58b61b51cd7d5630200a3665108
+celery__billiard-f9ad391cd2ae32627c506761dc0187a575fd514d
+celery__celery-20c15764b084d0e0d4459faed30fc6bf989c0b4c
+celery__celery-23521b1db66d538a6f4686a39248a817b74de93a
+celery__celery-6ea687bf50f57db1dd6fe76cda81d340c73c2901
+celery__kombu-081e9e6cfff944acd14f9bd1f810d227a069a01c
+celery__kombu-10a673b17c3774adc52876699c6a2ee3780513ba
+celery__kombu-1bed0d63353cc7f60e999ba2edbeb7a2d4b5505f
+celery__kombu-22b559684f62417d47a0370e5f8f65b9278a9903
+celery__kombu-33490adf9c52f2f003152827de8d0fc9f0e6c41a
+celery__kombu-44dcc33a74bfb497ace1071d9d4b9851fa04f561
+celery__kombu-6fe50f5985b01c1f9b172f740c51400540bfc92d
+chezou__tabula-py-08c3059fc6109598702710e73f42d4652614cab4
+chezou__tabula-py-309d14626cdc6bbcc7e6299b4a5144f50911cf5b
+chezou__tabula-py-60182cd912898a43f1c33fbfcdb456ced1b5bd19
+chezou__tabula-py-853364953e9e292a782152e631b029b696413906
+chezou__tabula-py-8a07e0ea6d30c7a4a9f1bf86a9ea1da024055785
+chipsec__chipsec-513fa893845b14dd5976f3ba4a2d410f33ccf1c2
+chipsec__chipsec-70a46219a686442ffbb3e2aa8a33aac9725f4a3b
+chipsec__chipsec-874e55009085f750bdd6e591958c21e6188a56b8
+chipsec__chipsec-aedaa7531fa967d8cd19121fa702b4bc8bfb33fc
+chipsec__chipsec-b817cbad82d481d9902fc5cc2283ffe61dff984b
+chipsec__chipsec-f005fba0c69faa5e53c137dfee44527d9133e782
+chrismattmann__tika-python-83d4b8d2dd7c3d494c0d326c159274cbd0c6fa7a
+chrthomsen__pygrametl-d2c4fe4420d198292f6fe1bfcea7921e8fea840f
+cityjson__cjio-5f86e83d5485de16e2f1bcda4c5db1eb7405c87e
+cjrh__aiorun-05b82582bcdd9bba58c7afa2a540b7d11ac39b01
+cjrh__aiorun-354b1e58f349f14931d2402e2b29b41080f14fbd
+cjrh__aiorun-ba73ee6d4ade7465a5daba4e287c234c5727228c
+cloudmarker__cloudmarker-560dde7abbfefcf9ad021f849d6cdc188634d75c
+cloudmarker__cloudmarker-80763426b5afdb2bb3170c50f2d50ca33d5f2e3d
+cloudmarker__cloudmarker-b215bea198e90007d80646a59604d88e4946fac9
+coin-or__pulp-1d0dd2457738526550f1cc2284fa03070180d8e2
+coin-or__pulp-3d792b5d1cb712ba05c557b8c1806a42dc0c41de
+coin-or__pulp-412fb5fce342bb460dcb7e216074a5e57ff1756b
+coin-or__pulp-4f86580b23e5e892a7461b95baabfe133dacb3cf
+coin-or__pulp-5c92a6466bef793c914e9c99df7503665b822e6d
+coin-or__pulp-b5a445f4ef95d347621c41ff55922b38f8cb1475
+coin-or__pulp-b842158b2fa81bc1934c702ce9b698fb1a7ec9e9
+coin-or__pulp-cfde9c61f07ed9f4bc718cde4c25e038a2ac03a7
+coin-or__pulp-d5be27710ee4a487dbab39a7bbd659936067ba9e
+coin-or__pulp-ebbbfdedce62a3c1815d98bbb4caada513782941
+conda__conda-pack-6803cdbc40eced349e95f8b61cd62dafa90979ee
+construct__construct-28c6e5779f2b76d55474914607291a3821502000
+construct__construct-aa3c20a2a1d06b7808564f26632c8456c5f316c5
+construct__construct-c1171b16bda1d213ba4858f3e0e4d4003e4aae90
+cool-RR__PySnooper-c2e44fb5835535df61c2777cd8accda36fadbbd5
+csingley__ofxtools-219f56cf4c46a128def30f018e9a80efd3656873
+ctypesgen__ctypesgen-f26c1568e034702d8f95b39599929840dd8d2073
+cylc__cylc-flow-63fe3e618b0351a3502b7c6039b789afff8ba461
+cython__cython-042451402cbbedbb3f6fc1b6324de880831367ff
+cython__cython-304b82267eda219fb801552341fa888b17f7db33
+cython__cython-35b56ad2273ecb9c8d429deb73d57cbfcb8032f8
+cython__cython-8abcb26f075a7985a71a37f9320252019ef4bfe7
+cython__cython-914d7be4da613d95e55cce604a68a415960612e1
+cython__cython-dd8b2b2af3fec51ab56f3e24d478323e504b80a5
+cython__cython-e568b4d5125ccb37aee4f4cff04fd3540d60c62d
+da4089__simplefix-125142e09929d8a688736f6d69d0ed856da3ee3f
+da4089__simplefix-3874f6e81eac1b163833f3204ab09776bf252ff5
+da4089__simplefix-d99b31e34506768c9b88fe05b48d3af6795c6739
+daily-co__dailyai-03345503563bd3309b9e439a820ef7bc912b2c18
+daily-co__dailyai-6ac57b4854dc32986ff64f70c2a265924858a0e2
+daily-co__dailyai-89fd03d86f7521e5a6b50e35f178f85e39c56268
+daily-co__dailyai-a2295b6b1d8923b14808e64977981d35f556fca2
+daily-co__dailyai-d6dc37f0b69fcc5fb266b79d517f5657f3e785e1
+danijar__handout-c0476b838087930c04c2e528e8c335085f1de442
+darcymason__pydicom-00332dc987b3cbfb2d8e86e81e51877315cc469c
+darcymason__pydicom-02728aee7fc76f8e78454dbcfafe3b5b8453093e
+darcymason__pydicom-079d10e23cc471b6947b3d427db56c016c250461
+darcymason__pydicom-158be4e8363d3d54d2fc1861d1d694d5a993b96c
+darcymason__pydicom-16896e244bd89a6978afda33cb7be8c0f7f51f8d
+darcymason__pydicom-1756180f0367be16182038f17f7546f0a199f358
+darcymason__pydicom-24c70e385fb66db9d8c4c63b6da7188409f0e739
+darcymason__pydicom-256e154e1ad328050ac08128f4c590d1aed85789
+darcymason__pydicom-2dfb757903100cf35463506ab82cb0a20a59464d
+darcymason__pydicom-3096a512a589521ab9fc055605c03063d79f9fcb
+darcymason__pydicom-30cbc79d45cf708fd4afcdd150adc47230d2078e
+darcymason__pydicom-356a51ab4bc54fd18950041ebc44dbfa1a425a10
+darcymason__pydicom-38d490ff49a1de22878c965fcc6dbdf8b486289e
+darcymason__pydicom-40652fc0a18fd9f1204cb3d4b9829e3a8be5cbe0
+darcymason__pydicom-407f8369c8a5b590ba173c64686e3a56f71628c4
+darcymason__pydicom-4be90342c293e1f4c6c87fdb016b267d2606aad0
+darcymason__pydicom-4dee753ab82ccd7b248893e6d633ba20e7f81d99
+darcymason__pydicom-4e392c94c956f7dcd771b55d0a2380f6e454a24b
+darcymason__pydicom-4f059f23073ed3f4feb50f7f50e7d4b284acbd50
+darcymason__pydicom-5ab9bb0a06fd8a1c7e75fbdda6f6b9093f65b8c6
+darcymason__pydicom-5e70c1dfe09820023fec519dac4c51bebcb7f60d
+darcymason__pydicom-60db5ac3657fe489c603121b6cecce5a50c3011d
+darcymason__pydicom-699c9f0a8e190d463dd828822106250523d38154
+darcymason__pydicom-73d06cf5018d06e6f78343612ef1dfb086045c01
+darcymason__pydicom-7aaec2d93ecebb26550f5f28bf12b3392198152e
+darcymason__pydicom-82bbac47c6dbb7676a5039f21bc161fab1a09737
+darcymason__pydicom-86c953af59994237bd7fadabf945862b86a89741
+darcymason__pydicom-88ca0bff105c75a632d7351acb6895b70230fa12
+darcymason__pydicom-898bfce7debfb8e59f22685a17d1af1974d82121
+darcymason__pydicom-8b2a0b8a559b19d0cf30f99e0b3d9514cad4b2ff
+darcymason__pydicom-999254e0bf675167aa994aa02e9cdb0397b6a5dc
+darcymason__pydicom-9a29f17be4f122772d4a06c235d765fa7fc339fd
+darcymason__pydicom-aafa9835449e3fd0265d606f727592f00eaaf5bb
+darcymason__pydicom-b0d90e367720d02624a3bac4381314e03797e1c3
+darcymason__pydicom-b1d404adf00c17506b30a6548b857ea9480442f7
+darcymason__pydicom-b6709beba54f534418ad621e1832f20f4f5e0af2
+darcymason__pydicom-b93ab7342c86d97c53f1e7e2e8d8479e49c98c5f
+darcymason__pydicom-bbaa74e9d02596afc03b924fe8ffbe7b95b6ff55
+darcymason__pydicom-bbacda23654615ef9bf4521c11bc9316bef566c1
+darcymason__pydicom-c02e41d6aa64cdc2ee1005447a00c4aeacd270ab
+darcymason__pydicom-c2f2ba814717db5a26d5f8ac83a06dc0b7bf2cd1
+darcymason__pydicom-ced8376331f47584998435a901ce541b142c5f52
+darcymason__pydicom-d245d8a66a1d2c50a9f4268aa4d5c1aea5b94e38
+darcymason__pydicom-e7de71b4a2c7e15b1d23197a00642951cd695d94
+darcymason__pydicom-e9fc645cd8e75d71f7835c0d6e3c0b94b22c2808
+darcymason__pydicom-ec38638b3e2c36a1f1f711ba97552d674e92bac2
+darcymason__pydicom-ee775c8a137cd8e0b69b46dc24c23648c31fe34c
+darcymason__pydicom-eeed69e28b4f2964d2b3198c389ba18fbe832abb
+darcymason__pydicom-ef4de86771357b3bac3d7fa3da73624c435aa7af
+darcymason__pydicom-ef60223deb33033abb8b6d2adaf59867d6f4329f
+darcymason__pydicom-ef62ff76939c998e99c6bd42747be2914db81ee9
+darcymason__pydicom-f014320a58d3263f262fa3191de8f449dac92143
+darcymason__pydicom-f4bcae3e008e69dcf654470850ffce6ea542d2c9
+darcymason__pydicom-f6638ffb3dd7d0e356ed1c04b2b20facc4125c19
+darcymason__pydicom-fce985ce4134a5e1f8716dde684a41e6d21916cc
+darcymason__pydicom-fd168e5871e8b302b15415743a079e7b1a83e9be
+darcymason__pydicom-fd83de4031b08568af707d2b615a07710f9cf030
+datnguye__dbterd-0d13cbad5e351f7e36635106c213ca1f5c023384
+datnguye__dbterd-1855328bcbe5dc4e8c52a08fb360f85e9ca99448
+datnguye__dbterd-6b3bba52c5f9770352420e72235e5722cdc8df13
+datnguye__dbterd-a6cf5f40a3f50dc7a96e3ecc76224b4081e4a1a4
+datnguye__dbterd-d8f8209a8036a4dcbc3c61dd0c1bec64b61e02d2
+datnguye__dbterd-f553725fa0359bd3199357afd3eea2b4c40055ca
+davidhalter__parso-0032bae041075a7439589b81ef4ba1b9133a7716
+davidhalter__parso-34154d05a0e5c7d40e38bd1455fa046c079a7db1
+davidhalter__parso-34b8b7dd7959886b9303eb7fe94c950bc67fc366
+davidhalter__parso-634df56d900dc530207e551703d5bbd657a9bf0e
+davidhalter__parso-7e4777b775206038a1aa87282c79ed04f5f1c3fd
+davidhalter__parso-93ddf5322ad123ca4b12b0bba28fc495a4779311
+davidhalter__parso-ad57a5180026893db5b921674b43a8bde4593b56
+davidhalter__parso-ceb1ee81fa07e362eeffc733c34850b18a6b4b2c
+davidhalter__parso-ed47650fbeeb77db132690f4c53b4292fcd5d899
+davidlatwe__montydb-de4701235d57979212006ae44fcddf809ceec9ff
+dbcli__athenacli-1867b40fe27b2cc801b28ff18dd39a366a7f3ed0
+defnull__multipart-540bde6f8850343554f2fab1afab7b16ff5c62f6
+didix21__mdutils-5a701281b906f794b0317c24f828bc79e20f2796
+didix21__mdutils-6ee15d2308d3073ed3b55e82293c0658be291c66
+didix21__mdutils-ad4b720b67b96439247fa58e0d24b1fddd67f6c6
+didix21__mdutils-cbd8bb621b85f24411bf781b582fb2ae4b2a1d32
+didix21__mdutils-e47d6ce8fe981de60a11bd539733e421781c36fe
+didix21__mdutils-eaa500d22bc74df0acb2571edcdc4d514689516c
+didix21__mdutils-f8761388df30b874d79c8f038b217e8d651a47f0
+djc__couchdb-python-61b440947df8fc6bacfd32824ee2686fe96a1aab
+djc__couchdb-python-e8eab1f66fdb7f82273e0780282389d512a8f519
+dropbox__stone-07c4d19cfc0c94fbf5d9ceabf08f85ca2fc9f67a
+dropbox__stone-0f1c6494e0bc0421074757bf3b8d6e0cee4c63c2
+dropbox__stone-1cdb8c02aaedf539fbfdb5913a552b9494aecc40
+dropbox__stone-44aa0db8c8d89b2945abdaed62ad3a419a25a1f9
+dropbox__stone-45770ebfe16485d3b8b0c23e015d9f4150431a9d
+dropbox__stone-572f3d1154bff20e954d8bff4afacf853cceac7f
+dropbox__stone-58852cc24fd9a9831799583c66baa5ff90e05ede
+dropbox__stone-590f3e68dada8a2010b0022746c8b9a49e49af8b
+dropbox__stone-62adcdd7a5a9e74652e9133a270eae894143daf5
+dropbox__stone-62f4e7e762c76fccac62eeec3d7747fe8af4943d
+dropbox__stone-87ece6ea58acee172f84ed388c49d20384484f1b
+dropbox__stone-8bd824b5ca8d7f42810242c8daf14fa474c523fc
+dropbox__stone-8c24daf43b7ccf1a69c1fde91024f908f577c8b2
+dropbox__stone-90dd831f8d43966a8f97d4536295082c3353f29e
+dropbox__stone-927972baa5f4f9c4a79f605e1e5451f7ba78d719
+dropbox__stone-a656411203b1d7ae065fe718cce50bf538294578
+dropbox__stone-b7b64320631b3a4d2f10681dca64e0718ebe68ee
+dropbox__stone-b8d46aca7796d1106bf42a6407e9e987c64de460
+dropbox__stone-c56c66b0d49f79d930facbd95bdc2a25f7db3896
+dropbox__stone-c70d3b0e6f8b3b40de5783108d6657355c045390
+dropbox__stone-cefbea427231d0f53674206a469d3ddecd47d6a7
+dropbox__stone-d2826dfe683a81f3c5381bb71467013bd8897f70
+dropbox__stone-dcc591ef0e8de6a74b351c5779323aa8588483dc
+dropbox__stone-e3050acf38961e171299b1a49d2522819f51a5ae
+dropbox__stone-e58342faaf177d4f45ffa636dc0a1b99b9a96719
+dulwich__dulwich-00b511015de17cee6350439cf6b2a7da730ad7ac
+dulwich__dulwich-064ef73158505858fe7c3ffc5d73bd92d6abec79
+dulwich__dulwich-187c51ad164078015283bf3df606f7edeae3850a
+dulwich__dulwich-3498080fe648b0bf892d10d6b8eb341d53572c6d
+dulwich__dulwich-4763ba9399ea4b00a60d7d1fae1c0f494fa11eae
+dulwich__dulwich-4c5ec309ca6064e8c942e1e40491448a8c80c96d
+dulwich__dulwich-544e90f8cbce1282ecb3d8ff73b5d7ecae905601
+dulwich__dulwich-54e8f37f1dd0a2cbde47176884f8360172f8abc4
+dulwich__dulwich-55f151dd04897f8d20a8c7e3a5a4ff89d6f1cfc4
+dulwich__dulwich-62b12c807b6019c004b9ddf238cf1b7c6fde514e
+dulwich__dulwich-65a7a610da949ad3c23a17f648a7592af9989aa2
+dulwich__dulwich-744fcc280f5a4e23f14598fb4630d1c76f33389b
+dulwich__dulwich-7e55177cd4fcd47e62f62bf05b5f24716902d5b8
+dulwich__dulwich-7fc181155e7773d98d0b91dcff1cf6676ba61bbf
+dulwich__dulwich-8fd845e05c5a387e6756fc0a85af838fdc6229bc
+dulwich__dulwich-a3704312cc36f6bf5e9cbf89b37f62973f1d9c06
+dulwich__dulwich-a7659f477bda220dbef5fce25318d84386502db3
+dulwich__dulwich-ba93eea567c31601320a72d7d3c0f21ef2e15589
+dulwich__dulwich-d58e9cf00fa278b47713604710c3fd40c7676008
+dulwich__dulwich-d7504284d0a02ed0bccee79a759e2dde1267eafc
+dulwich__dulwich-dd07fa946b200c3b1cd692a64992bcbae7e20a54
+dulwich__dulwich-e2250e0dc3409d78db57235e8dcdce5850516676
+dulwich__dulwich-e697785c7f10f4d0583a0a37939a2bc785a16718
+dulwich__dulwich-eb0ab2719befeb7a582b8d1fa215cea4633ee637
+dulwich__dulwich-fd050190b8e71301ffd3218297f6c85cfc53f4eb
+dulwich__dulwich-fded52e1b1143baf50f249d16b7d771595d32cb6
+dulwich__dulwich-fe9bf84378815e995880f4515dc6907eb71de13a
+elastic__rally-08d5976a6d9cb0aa10fc195a2ee5ae080a91257c
+elastic__rally-159ae6432445ea5097a4bc5c0583c026cdd1c8b9
+elastic__rally-181485a0fc9dfd3a9a89f095fb30b07bcfe53e8d
+elastic__rally-1f027e3f01f1d9801afec17a0319b8fdcbb9a0a5
+elastic__rally-214e027b55322b00f96a591831be69dd12d384ba
+elastic__rally-21ae64a8f8e1776838e086f7694e2649530c6abc
+elastic__rally-39fa2ad546a95d540b846147346b91daac6a8091
+elastic__rally-43e56f6119cae0eeec5cff37d9db619827212a91
+elastic__rally-445f2a02c196f8eb15874410ae98267e43e674be
+elastic__rally-4c7141aac0179c38c08c134c25f7a23e6f07d2d9
+elastic__rally-4f40228246fb2847270ab8dad6395eec5c83c7a0
+elastic__rally-56d782b612de9b21140a46a2c0391207ce187669
+elastic__rally-5bee16580b973022daf1046547b23b9af41b3727
+elastic__rally-605da7649ede37a41df17ceca55c04b2cde859e8
+elastic__rally-611d2dfe45b5bf665000f7a4daeacebea5a4b5ac
+elastic__rally-6611f677cf6e6019bad8dc45e4452b91b3be745e
+elastic__rally-691a1605ea7ae8edc02eaece083c5a09a487c3ae
+elastic__rally-6a16ec69491267724559f962aa22a3f430e463c1
+elastic__rally-76aca76c2773022f3a8030b4c6db3e7a0d56453a
+elastic__rally-926195b4f9921fa16d868efd73aa15ec57931890
+elastic__rally-93c74e4bc70f4e4221fd26f2e2afb4a85db8cfba
+elastic__rally-ac2cef92c65870f2334078e4ab468cdd75115213
+elastic__rally-b00f4f0343948690de316af814a7208f7fdd235c
+elastic__rally-b5bc1b699e1557e8999ade389eac1470d13c6f63
+elastic__rally-ba2ff70f54fdb067b17b7e5fa3cb76c6e0775c9e
+elastic__rally-be3eeda86e12616fa744f6cde7fcfe41b3a1c963
+elastic__rally-df49d4d2c45d3dbcd2e6791524b0c5812430105e
+elastic__rally-ebd4d40c0294bd17c5b459c942a24792c8b0763b
+elastic__rally-ecaa57e559d629fa4056a1a276f4357c1df89de3
+elastic__rally-f24b3aba11eac618de223af485722842ee4d2f77
+elastic__rally-f7a13e76cbe9e322b67a9af3833bdc3c3a916bad
+elastic__rally-f8cbec13d9615538ad4bc6c5e845c1fc6f569ae8
+elastic__rally-fcde84d3062cf7f1658443842be0cc672629c7f7
+elastic__rally-febbfe8ad6e673bdaa886461aa59c0d023330fc4
+enkore__i3pystatus-1db757a2e247f38bc569db9ad70f4ef5f0c280a1
+enkore__i3pystatus-c6e29b2382bbcc7b06de0ad0c74ad1c026eea36e
+enkore__i3pystatus-d995f36c780ce032583d13d709722a1f6a7f80dd
+erikrose__parsimonious-4a4b7d4ecfda4551b0ec7a025bddcb44889bc797
+erikrose__parsimonious-7d67c8231becca2f957bc32e2603f7ee930394df
+erikrose__parsimonious-a86098c5b0a33bfee4bfd1184dbbde3a193e253b
+etianen__logot-911eff5951c8ba73826c759b75dab04d163eb680
+exo-lang__exo-37dc108452c172f4023ca082408a935a2ee580c9
+exo-lang__exo-cd5f597410ffddb3eb807acdfb03cd492004456e
+exo-lang__exo-cfbdd3cd646b16847e6ac28cdc1561114b9c6cf8
+exo-lang__exo-e7a5b4e9df418e3b08d3ac9cd064980954a89f33
+eyurtsev__kor-55bd0324cdd8260a8a48558fe0c94013dc580a02
+fabiocaccamo__python-fsutil-bb5e306a2207089b420b2221a03d69434ef2777c
+facebook__TestSlide-e519ff7ac73d6a24f6dcfcb705d8673cbda7627b
+facebookincubator__TestSlide-e519ff7ac73d6a24f6dcfcb705d8673cbda7627b
+facelessuser__coloraide-6419bea47feae203ed1ea03bde685ef5615cf00a
+facelessuser__coloraide-c7e29fc2f8083c422debcfa41a2541c3c1ea8679
+facelessuser__coloraide-e717109905badbec7b6ff1e8fa846d95b7d71a0b
+facelessuser__coloraide-ee72f96946f11b0100af2820ab6ea7d8a30fa018
+falconry__falcon-0a42e1faaeb06b0d2cbe17ef40e6a5913bac0e6c
+falconry__falcon-1b970f7a2ebf1a14a7daa28c63fc9094fdf47d57
+falconry__falcon-1e7e8c0a43debb9f56cb7b53cd01a89002e9e80d
+falconry__falcon-29a18c24bf6f84f839ab5e1b77b01509102965d7
+falconry__falcon-321bda16d459d187c026caa6d7f1696daad12619
+falconry__falcon-3d68e56513638895c839a67a3c29aca330905417
+falconry__falcon-3f65d1839f1daf0339f92a21990f624561c9e185
+falconry__falcon-4df7706eb69f2064ee00a4d5280505d893f27638
+falconry__falcon-4f8d639aee6a0057439ea08e87823fd5987c50cb
+falconry__falcon-4fd9de5c8a3f8a71f59b375bb374082312e673e8
+falconry__falcon-54e227dd7aa884e855337ecfa05f147efaa46741
+falconry__falcon-7d6c06a9e8c8ec38a3cad2e5f29236b592e656a6
+falconry__falcon-818698b7ca63f239642cf6d705109d720e8c6782
+falconry__falcon-82dc5fc6ca94ecb6e99a120e012d534a91c1f35d
+falconry__falcon-8c41054ece461506822b73c9e037544317ba42eb
+falconry__falcon-8e866bd1dfed26bd912a06079d903c6462e34f8e
+falconry__falcon-933851183ed9cce2d3411f890dca3e19385480f6
+falconry__falcon-9debc9e29a033d13c628c6cd81a4d31c2e87f793
+falconry__falcon-a3b6e415a012b762b2e9a14006abf99b0a5d7d23
+falconry__falcon-a54317c7f8ec51a7fec8ce83df6b9f4852113253
+falconry__falcon-a764357089f551afcb096eaaa1ca6abd302a636b
+falconry__falcon-aa9f02c28e3fbea33a983165dbf4b14f19fa2fb5
+falconry__falcon-aede43c5b5fc5f7db223f255c2ebb166a3b80509
+falconry__falcon-cae50da40454a361fec84e58d4b44bedc5b6c0cd
+falconry__falcon-d71a5bf6f9acbf2b23c4f00d99e88bd352768a48
+falconry__falcon-e08e207cc2f21d6001f1dfa3edfd9a3d050ed016
+falconry__falcon-e58fb0b64b569b44c5dcd31da39b9bb8ebc4ea0e
+falconry__falcon-e86464097c962d58db5e3a65bb079a39b858d5a7
+falconry__falcon-e9b4b76585563c1938c7091eca473a56fd995744
+falconry__falcon-fc39b5a06309ab277d7d88c383543e7c1d6cc716
+fastavro__fastavro-02feaa1c94ec58860e6b9abb32105e2bf7125bb1
+fastavro__fastavro-56b62ef6ce6526e937dcb802d86fcc37a17aeddb
+fastavro__fastavro-68a6a283da154f40cd3c61a42b0f686487761455
+fastavro__fastavro-75551461c9e59815b801306f1679897efc9061fe
+fastavro__fastavro-8afd192cc10995fec52ef44ee7a2001d8b8a8b56
+fastavro__fastavro-971e64c3c9f9cf492442c135e850a5afe45c45ce
+fastavro__fastavro-a09b3fabf7836afd12d8828f447d4f42a8c00079
+fastavro__fastavro-a6a3301243f4d3973a7aa68c9f15e8f34b91ebff
+fastavro__fastavro-dfdcd8f0bbfbfc22d0f85dbeba6d46237ef376b1
+fastavro__fastavro-e86bf3ab9dfa54262fc6ef1800a9b832fb5bdca4
+fastavro__fastavro-f50ac0ef7946fc71c4da8d75db121361742fb40e
+fetchai__agents-aea-d1d5a0ad1065d80056297e20a56460e29bda46b6
+flexxui__flexx-3c4922261a843bbbed25699415b794cfffefedb4
+flexxui__flexx-5ab94f1d6b029370649f9799dcdb42695da61754
+flexxui__flexx-74b6f2ebdf6d0c907f9d8ea2842b9330e5d5fd26
+geomet__geomet-31a96f5b4296aa44002aa61238e80b5f419d43ef
+geomet__geomet-5c9dc52f9181b01e928335ece24ebba7f64e50c3
+geopy__geopy-7b29764842598d6646a6ac67c1b8be8f4f9b279e
+globocom__m3u8-f6b25e5338ebde58174ee1fb9d7a10cb8cc65f03
+google__latexify_py-025f2d385d8ffbc8cd97b381bff26e55ed5ec89d
+google__latexify_py-37942ea11391c60490c6c011916d87dfe20fff16
+google__latexify_py-f9b12574be0a73f6a76bfd530a291abfb4308578
+gpiozero__gpiozero-35d9228843830a4e314c92ae897ed9abec6537e7
+gpiozero__gpiozero-750a1c4ddaef608b6386e4c3bd032cb5ea04239d
+gpiozero__gpiozero-8b006e9fb7ffdb03a01315ed1d0ff5f6e75d52d9
+gpiozero__gpiozero-8f8dddd403c149d5f024c70c56f66862926e829f
+gpt-engineer-org__gpt-engineer-052556dfff8f9ce1c8d910cb0dc327112a784591
+gpt-engineer-org__gpt-engineer-0d0aaaa9b0564ebc267f849d890f15c5286f729f
+gpt-engineer-org__gpt-engineer-8facedd8d1c2b04e23d88b28cbe703d204ecb6cf
+gpt-engineer-org__gpt-engineer-9b3db78b95b1a185e3cf560ed1c6bd63bc8188d3
+gpt-engineer-org__gpt-engineer-b5b827899e7e827682b0a1a8cd9d5af815fd6df8
+greenbone__autohooks-13b753faa79b122a46607b2e3337c3ba371117ab
+greenbone__autohooks-78d9b5bcd17e042c552ff634f67eb325503eed63
+gunthercox__ChatterBot-935a9bba43d14f99d70ff3cf2345ce7f1192a7d0
+gunthercox__ChatterBot-ca14518b02817646fd97461e4e1a3f0027945e9b
+gunyarakun__python-shogi-47d2e7adaa7a67a3aeddc6f1cd1b50820af22f0a
+gunyarakun__python-shogi-5631d842a376f5608b6fb58e5484f40c29c755f6
+gunyarakun__python-shogi-5e40aa4679657e7e1834e7f3f21a8cc5bc3b3a28
+gunyarakun__python-shogi-6422e949ced4952e1831d428387408bf4fd800ba
+gunyarakun__python-shogi-8c17369604e6ba6ccd075010bcced10357d6c949
+h2non__filetype.py-1a0df1ed4a39d1d3b3e827454af0685e6abca2b3
+h2non__filetype.py-8e94649a52109f8e8a64cb783fafcc7977401e0a
+hardbyte__python-can-2776c4740be8332a0bdcf8490bd4eb75c583d231
+hardbyte__python-can-2809518643bde1b3512059b33168d9e8e9e05adb
+hardbyte__python-can-65330f81cec3ba5c796aa8aaab6b7c1f6f80aace
+hardbyte__python-can-d66a7876ba259a9106bc2d2c9bb38bd856b228b2
+heuer__segno-2907fccc92a87ac8db292c8c475e7ecd8e5bcd58
+heuer__segno-49d11d26e6d061cfcd9262767206dc6b1254da49
+hgrecco__pint-25cd87c9afc8333878bc2d6f71b66eb903f43e55
+hgrecco__pint-3d190ff4f5f96c5944a5e3e4e8540787c6472d55
+hgrecco__pint-82e4fe30aa1890943068afd0610f34e2412d0206
+hgrecco__pint-ec76aa1614bc05a793ca7cba354f834d42f97fdc
+hgrecco__pint-fb888aea989ddea27bbe62fa5b73c2ab97b7e8ee
+ikalchev__HAP-python-41da9b112ee69125269d41ecf3223efc06ee2be6
+ikalchev__HAP-python-4f7400892488f149336c583355fbabcfef0adb2b
+ikalchev__HAP-python-52e7659f01571ac9aae6228e6a4f8d4f64877143
+ikalchev__HAP-python-6c2b95cc6457ea9c8dbee1759455a6954bb14092
+ikalchev__HAP-python-7b3148cacacd54eb0ee08f1eb4a169ba37116dc2
+ikalchev__HAP-python-84b7affa30ac07b8a3129de1e0490b212a39e88a
+ikalchev__HAP-python-ba6dc8332503b002aed4530f7ad9ad36548b60c3
+ikalchev__HAP-python-ee3ef9a1ffaa3c72373d205a3d1b9c4df1aa2de0
+iterativ__openopc2-8123b593b96b16fbe139dd78717c708330a3d5f1
+iterative__shtab-1dc36c71c4a906099fa88f94dfae24b8899e8db8
+iterative__shtab-29da00d7291d20d3c5ea56b11bc43393a0c2b9b2
+iterative__shtab-f9b07958ec181757e8568b0c6889c5be9732182e
+izimobil__polib-96c9b9a5cc6baf72e1c60608fd842b7d552ab01a
+izimobil__polib-ec09e50b56462dbf89a9e83d9c6f949c011fb92d
+jacobschaer__python-doipclient-1590bac12056014271664fdee0e2f37a5a1e01bc
+jacobschaer__python-doipclient-7f04a3239914a5699e516e2f05bae028a42b2a84
+jacobschaer__python-doipclient-9be85e231079edaac87dd0c5e62178e1d45cf2e3
+jacobschaer__python-doipclient-c8cc82cab38dd24e3b24a8865375fea0dc897f28
+jamesoff__simplemonitor-1ef1e9a3d797537ae60d07192185e5398f56c0c1
+jaraco__inflect-00c44792896300d2fa39e63f1a185d3fd37704cb
+jaraco__inflect-02dce6aa4207da024b76431156e03485694bd431
+jaraco__inflect-3c0f1c16a1e3a2a9fab1f163286b8b4bca1a615b
+jaraco__inflect-afb84cf26c4b888d3ed54263e60371d40364b60c
+jaraco__inflect-b40331b0cbb688864cbe935fcdb3ad4c7c7b5ffb
+jaraco__inflect-c41598ed21778e7eae54117e63a4c2470516697a
+jarun__buku-4dd88406b1155645016565cfccf426c34ee9a8bc
+jarun__buku-c19853cda09ee10441c42d0ba0955100583a47af
+jazzband__geojson-5362233bd2458b9313212917286e35509d9a4c68
+jazzband__geojson-813117ee48190173135c901ae3a695214a671df9
+jazzband__geojson-d3e7bcb6899a200b3ec6e67578b145274941e472
+jazzband__geojson-e600196553ccfd601894443734c737022399b473
+jd__tenacity-815c34fec2c8d64fe2bc8a6bdd79bfb41f1938c6
+jd__tenacity-bfa2c800ea17d5cbfacf51003627ada4a7c3691f
+jeremiah-c-leary__vhdl-style-guide-2de67200be90b2996482a942ccdb73ea157b9db0
+jeremiah-c-leary__vhdl-style-guide-607fb4d860205739983dbdca1f79b08d1928e02c
+jeremiah-c-leary__vhdl-style-guide-ab3ceef2beeece8c59a60527458e761767720ded
+jeremiah-c-leary__vhdl-style-guide-c7aa7a7f36afabe3350cb640af0782111d7f1509
+johnpaulett__python-hl7-09335c9da23b783549e5c04c407850ce3b46c0e6
+johnpaulett__python-hl7-4017a412e25ea9c30e2d2bc45f448b2b4e048f8c
+johnpaulett__python-hl7-860d05ac9d73ab28b1c7bc4c00c797d348565cf6
+joowani__binarytree-035fec94a791cb1d2fc25d5f5154e4c4d8068334
+josegonzalez__python-github-backup-875f09eeaf750fc6685f1706561a05601b24e5b5
+juanbindez__pytubefix-078aaa8a912a2b6109ef170ed150885561011b5b
+karlicoss__orgparse-620ea35c08dce924e0fa547f5748f94befcc65c6
+karlicoss__orgparse-d1bd16e46d5c8b40f5a241c16db708eb62de0c20
+kennethreitz__envoy-92d67c46e8cbb3b4f51e67fb06ce205bd61e44fc
+keylime__keylime-01ca6601c32327dc2cac9ddf8bcd3847cee421f3
+keylime__keylime-28128599e5e29b18e087e72c0d6dc2a703643ae5
+keylime__keylime-31254089f18d57bf0692bcacda6addec7778fede
+keylime__keylime-3656174bccb39588bdc2b7f76e049ca4013b9420
+keylime__keylime-49d86295e99be98a12063e311ca4f9a6038c8e0e
+keylime__keylime-95ce3d86bd2c53009108ffda2dcf553312d733db
+keylime__keylime-b59128a729f2db292977cb1c46643020c64a0cc6
+kislyuk__argcomplete-152bb06d94e34510327165ceec79eac8ba2bfd72
+kislyuk__argcomplete-4904217fc95abddcd5501305a844c4ec50d9c8e2
+kislyuk__argcomplete-75bc04b7d457bb865453b2bcd767b68b5df936a8
+kislyuk__argcomplete-86eafb256c36a96fca7f7e7ecfa9459bb415d97d
+kislyuk__argcomplete-cfd71e502ad2a94b8f6f90cd0a08fd9fad4d51b1
+kivy__buildozer-ce114822df1d28f3efd9750b348496653594aa86
+kivy__kivy-319e1ad145133ecd7cf87b5592f433d1ac0de3c6
+kivy__kivy-88dee323b769c4562b0f4e0e395839d7231e0f0b
+kivy__oscpy-37825d102db36cf3cd0d2db974ca151aee543057
+kivy__oscpy-696e5b981fc4d09abda7c1c98f78f77657bbc694
+kootenpv__access_points-404e7d88bb36a9fa7e78abc5abb503e56996ccc5
+lark-parser__lark-066fe8f3251aa266c8b04d4e01805f5949e1189b
+lark-parser__lark-069ad4a6fed743272c6118dff903f5f61eac3a15
+lark-parser__lark-0ad4e8a177f79bf4b69366049aa1fb04a598cff6
+lark-parser__lark-142bc5c4b9335dd5c04709b455e6cf37bad0e5b6
+lark-parser__lark-16d41d177420964c1b0556eb2a1caca5e2b6161e
+lark-parser__lark-1a16989c8a41ba5506e12cfe68d46192fa6a5ba3
+lark-parser__lark-1a3df7909f0be2b1755a9b0fb7c7a9b7acad79d2
+lark-parser__lark-26643eef84f09845b20727dbd3e4c3eae064928f
+lark-parser__lark-3b2bf47dc4750add61df4e236238a626b79d3da0
+lark-parser__lark-4a00539af08ba9c9a2961b8256277918fa9d8309
+lark-parser__lark-594a271a4ef464170d078e02375f3e1c610aa9e0
+lark-parser__lark-6925b9be0d9e7a546336e4e5e87b28291c53dea3
+lark-parser__lark-70d724732de9ed05457dae00c34141bd1a5fb20d
+lark-parser__lark-756aa0354faecd8959860d0b9723e6dfb3be0a6d
+lark-parser__lark-79d89fbe7e32be232ac6384b2fb8310e7c637474
+lark-parser__lark-8b5d85605cb33fcb056b366486da80d32064c88c
+lark-parser__lark-93aaf9d48724266ef1f934b55b6f1130536154b1
+lark-parser__lark-96873d64ba8ef85fcad1daa2dd2e9bf931eb06ba
+lark-parser__lark-986510365e28ab55c4415fdcaef5fd960f3ce9f1
+lark-parser__lark-9af9a71029cafd3759522e896196d975fb5ca81a
+lark-parser__lark-a12effe9130487503fa25afeec48dca52166b778
+lark-parser__lark-a201d6ff533df6711c5855afa59fd33e706753b6
+lark-parser__lark-ab213bfc1064994a4eb50e3d450b542320a92604
+lark-parser__lark-b2d1761ccab6df66f0e6ed857dffe634e7c93829
+lark-parser__lark-c0810d198284a2320186d45f961dfb5d0d4a76e7
+lark-parser__lark-cb608591d765cc5b619a8000be28ffce86989de0
+lark-parser__lark-ce28af82caa73ea076e5db984456d7f9d3274141
+lark-parser__lark-d637b1179fa5ac9f0751b9f3321eeba5fd1b3b75
+lark-parser__lark-daf74dea51d6009ea186e7bf9a6d96730df0b9b2
+lark-parser__lark-e5868415ebc9f9a985549f82ff8137806d78450d
+lark-parser__lark-ee664b57201fb6e31bdb106d509ceab22ef1dd66
+lark-parser__lark-f5a61309793ca350897b367849bf15d84e4eca08
+laughingman7743__PyAthena-8b05194a52db1fed57d5091487f10c08a7edd32a
+laughingman7743__PyAthena-bb15d15b92f3861c68683d98b2c0b246d8e6f797
+lepture__authlib-36b124661e392d2a3a3b3c339f6ef40983fe82f6
+lepture__authlib-55e8517c637fb4540d44e3c46edc23542083e7ae
+lepture__authlib-57eb8cbb553310abf2053cc78661442606763d85
+lepture__authlib-5bdfc4bfff8380620ed5ec55ba7a06d96cac3365
+lepture__authlib-5fa31629b4014b3d45116668fe5f7d189df59644
+lepture__authlib-746eb3277c9fde40b160ebeab27fd92de785ae16
+lepture__authlib-74b71afcaf30c8c027ca9be9cb4618fc0315b374
+lepture__authlib-90ac7dd9876b5163eac407f4f51b9491be0759b6
+lepture__authlib-9366b4e6d5e26b798fa4d7daa17c02b67a7677c6
+lepture__authlib-cadc55d15e4d15fc1407dc2187fea0208d8b520c
+lepture__mistune-1f667508f0498dc19c2aff792d38d36e097e0bf4
+lepture__mistune-498f0e82e0c7695019306834d2b427bef3a082da
+lepture__mistune-77f925e1de25e453a4d8c190fc8099ad1bd2386b
+lepture__mistune-81c75c9bea720e19f9bc67d3d2debd5c3708b823
+lepture__mistune-8a31fac515a8883aa524f87cc5b60300d2dfb125
+lepture__mistune-ab8f7de8bc78c2a88f9e01522b8a3a0aa8cd9416
+lepture__mistune-c674108105e3419c6bfdf247c6082a9c6f5852fb
+lepture__mistune-e90cf3dd63797ec8994f8cb78aea1590dec26f07
+lmc2179__bayesian_bootstrap-568ca2f00aa9b48e41b795cb77b171fcb86a4672
+lmc2179__bayesian_bootstrap-9b14975e6d712e916e296f9df12ff855e5719bb0
+localstack__localstack-0288b872a0e69476cfe7656f4b7466c33a47c1bf
+localstack__localstack-18cfd2df66ca2626ca27e21b965b32538c0f2a72
+localstack__localstack-19704d9f90c6309fb6f2d4e13fd47978a6572649
+localstack__localstack-339e0b20dcb23b5409235e137b858aad511786c0
+localstack__localstack-3c06fd4b55c0b24c63e8c404a3dd13312a40f4b2
+localstack__localstack-3d81244108147fccfe8690327257039c011d41d0
+localstack__localstack-3d8e6e577957f4cdbe4f7ffbe1f422ea3a7b4629
+localstack__localstack-5a21709f9a1f11322da0b81b3fb5e096bf3303d9
+localstack__localstack-82c42f791bd43caefaf9e1a84981f7ab96f53941
+localstack__localstack-8411103a25a09964c123ba29bd333251edefb665
+localstack__localstack-99dcb7bf79afbad9993e41cb55a07275f99e41b8
+localstack__localstack-a4f0a226e5d3a1f68e9f226f4353264ab071188f
+localstack__localstack-a70c3b6ff05eb807e701087752633e7ef8fc6253
+localstack__localstack-a7f0f7b46a7f871036148b667f6f356eeee025cc
+localstack__localstack-b170b60fbf0e1240312ce8dfe95b222c90a0ab91
+localstack__localstack-b4723cecad7fa4bd2f4e2c896cb0d3d62f017db0
+localstack__localstack-b99e2afc92db37c2d5db29fb6ff869b8e13f8325
+localstack__localstack-dd152ed3636423b81287ce37e1dd41d01561d7db
+localstack__localstack-f544ad49e16d22dcd9dcfb3db99147c2f410ffb0
+m-labs__migen-de8e83b7a67c1f2c5b20c42c1922a79533fc3cc2
+mahmoud__boltons-0341ab3d79e6430c0e6a4149df9c92679988a534
+mahmoud__boltons-09be1dd0a34e5724b57e84360de0518e1211081e
+mahmoud__boltons-139d5dcd3255eddb822aa2d876ce3120c34d81c7
+mahmoud__boltons-1c315de4ea5660863642b5539fa19103b3c59c2d
+mahmoud__boltons-243de3fb2c9c59c660800f786ddc875628b34027
+mahmoud__boltons-395f690f4a24331c4554e2169ac18a15955a4eab
+mahmoud__boltons-3bbb9487aaa1e6d95a8d93aca7b58a4d0e9db966
+mahmoud__boltons-3d55169c278299854e9d083dfb9cb2a9a6faacd4
+mahmoud__boltons-46599bc0d498dd8adc3aea833ce1445feed349dd
+mahmoud__boltons-475462811ea4f9dea23c8af4cc2b6ead2dc03845
+mahmoud__boltons-4d3cc6e600b69f97d82ea520d090e0c5cbba1598
+mahmoud__boltons-55a2791b77a991bd130af9f1a2298019b318bd4a
+mahmoud__boltons-57c9167bc8f7be69fc89c7bd4b8505e7694f9703
+mahmoud__boltons-620af22dbc6f17d988dbcea677273de41d4ed5af
+mahmoud__boltons-93185b224ebd60df01df88d64e574a3f651987c5
+mahmoud__boltons-bf8a65942cd8078dba7dc45543ae0923fe2fabbc
+mahmoud__boltons-c2b04b4cb16410d7bf9ff781c78dee3ca908dc32
+mahmoud__boltons-e79511e6e7a8472b229dd60f1fa7934aec03ab1e
+mahmoud__boltons-ee6f4649cdd060913f0e7411f509210c39f29b12
+mahmoud__boltons-f749174abed72b0982b15f29c3819480e0b8fa7c
+mahmoud__boltons-f9c4f30511b58c543bda7e4c04193fd480f68b24
+mahmoud__boltons-fee5adb0f99f91c077c769d8efd269ef44203848
+majiidd__persiantools-6dbd5d9882e675052ead87eb34f4ddae94351f52
+majiidd__persiantools-89a44caf71200bce0ef06cb20530768d3b62a9dd
+mapado__haversine-85241f2ec03f7a5fcf9696cc82ec571851aa4137
+marcelotduarte__cx_Freeze-de569b4fe93b5403f113ed626ff5f4aa1e48ee79
+markdrago__pgsanity-a153412a63885da152b834a3d297addfdbc33b48
+martinblech__xmltodict-6b672f55443f3dca0416ca0bfcd0d1de9d067141
+martinblech__xmltodict-e496e0e13ac8d3bd7a5a79ab5e4f2eff77ab64bd
+martinblech__xmltodict-f3ab7e1740d37d585ffab0154edb4cb664afe4a9
+masoniteframework__orm-037f980851239c8853a86f2f6728bd81929dbc9d
+masoniteframework__orm-2a8b7d431e562fa3858492fe430d58630150d2ef
+masoniteframework__orm-f3874caf9c7fd3ff535116b6c1066c90cab95ec7
+masoniteframework__orm-f9e926dba5a2220e490d4bafa6935403505e0cf2
+maxmind__GeoIP2-python-02834b2778ba23e3bdc33e15d18075158e64adcd
+maxmind__GeoIP2-python-05055844e013970f854f51a4311b5a4d78d3912c
+maxmind__GeoIP2-python-125862b42ade022e157926c75d58827ac93650e2
+maxmind__GeoIP2-python-16a99d4ef2c327cc77b426294dc93bf456e0f754
+maxmind__GeoIP2-python-845eaca02afa65270e99f5656253041a0f0b2b5f
+maxmind__GeoIP2-python-868b8c55a02c92aca2f136e0da7ecdef878b13bb
+maxmind__MaxMind-DB-Reader-python-01cac90a76b08dae969854516e473e74d4f0503f
+maxmind__MaxMind-DB-Reader-python-a0f62d04042386363975b42701964511edd8e878
+maxmind__MaxMind-DB-Reader-python-c6578d4f9541292460433eb4ff9e3c2f55ce2a17
+mciepluc__cocotb-coverage-c0039f0406e9363842a20b6f73850136d575e66f
+meerk40t__meerk40t-188d06c66304c05c293ebdd17962379a00e4ab65
+meerk40t__meerk40t-27354bcce5905cd18fee301f867f6845dcecbf9e
+meerk40t__meerk40t-2cea08fd0c787dd8601b92697582f682c87e83e5
+meerk40t__meerk40t-305b8073455f83d0a66216d535e097f23f9f462c
+meerk40t__meerk40t-3b249fe20f3980cbd27008210e0668e4414a5bf0
+meerk40t__meerk40t-7892ecf12eeca679990029b4715de545c02d69d6
+meerk40t__meerk40t-98cf2002219c981b56cb3c50dbcabd104623b05b
+meerk40t__svgelements-0749cdd1117deca17d72566766f02cb864c1933e
+meerk40t__svgelements-14598bd1f213cfea7abd3de35fb45c57779ad8cf
+meerk40t__svgelements-177cf99fe9c18b46e503dd863306a94dbe8207d9
+meerk40t__svgelements-1df672c23a01539981b27abbee46e3e2197f4c2b
+meerk40t__svgelements-203dad2bd715d35890c226c7ccdda159163ff2d1
+meerk40t__svgelements-232ff4839fd1fe97e2540d770b11c6598c398410
+meerk40t__svgelements-26b68c9a8ab8b7bdc5fa97d79aac1b1d6252a26c
+meerk40t__svgelements-2832d967a3bf921fc88b8b0d102a35ee9b31f549
+meerk40t__svgelements-3904f8cc2b604a70f9438082afb3872553ab8c26
+meerk40t__svgelements-3becf2abe44181a78ca82748e942c0d12bbd2c25
+meerk40t__svgelements-476f6abc4362ae193e4fada7356a7639c9985912
+meerk40t__svgelements-4e9922363c6ea9ce0a97079520975518dac38241
+meerk40t__svgelements-55bc713d3e28bcfe92b2a7cbc2b4c10febb365d0
+meerk40t__svgelements-57b8bda811b0b4112d1d47305f53ce43e82016e8
+meerk40t__svgelements-6f31d7051ce4787812f3ff6ef9f689449d46ed85
+meerk40t__svgelements-761bb315a6c12a8fcea990276570780a07fc492f
+meerk40t__svgelements-905be0869823f7f9e27482330b2d6854603edee2
+meerk40t__svgelements-90922af3ccda03eca017f828d0a4950c32329421
+meerk40t__svgelements-92f227321d208cd7463cf75c51a590aa62f6d305
+meerk40t__svgelements-93bac28223f99d836ad185b127b24043cc87cd55
+meerk40t__svgelements-a28128389ed734116e725e69c8bb04a08bad5a2c
+meerk40t__svgelements-a3841e5266c4ccf1a395bc84e2ed827a5950142e
+meerk40t__svgelements-a58f5b46e08f835b710cb6a58ca7f7b8af22a422
+meerk40t__svgelements-b23ff60cdfa1470ae15d198c6136c008d69095b9
+meerk40t__svgelements-b3b99a32e6c1e09d15a255f05fe8feb2fa61b39d
+meerk40t__svgelements-c1c6334320262252dc506ebefcaf4353dbd19f44
+meerk40t__svgelements-cbe6a87170b47a9a747bb7ee7ca3b9403a558a62
+meerk40t__svgelements-cc8059dcc7e380d7f3a58df0878308d7b8b5bb20
+meerk40t__svgelements-cfaaf609df15061839e368a4b9745e93b0556cd0
+meerk40t__svgelements-d5615435b41f7a3a4f57ec490036c9321c9435cd
+meerk40t__svgelements-d830cae29590214728d2c5627afc0f7924fa504a
+meerk40t__svgelements-e11d22a543e533d56673c7b54f87cab66bdf0cda
+meerk40t__svgelements-e90a2b3fb97b3b5eb820973d1c70473397d6f749
+meerk40t__svgelements-efe37e2c7ab2b49930563a5b8baa3e7fe842bcc2
+meerk40t__svgelements-fcc436609dbda4eedbb72e03afc58d12a52b76a3
+mementum__backtrader-a3744d98c9ac563942514d0531b380267c3880df
+metabrainz__picard-242fd339682926c80ab15db8674acc6293e8f070
+mewwts__addict-026a8eea3809415f4daf906e15acb00342698a2a
+mewwts__addict-0d6a565baea1a30feb244f205b938e5f56a39526
+mewwts__addict-226ff29caacafc01a57bb91f654dc40f338e6d96
+mewwts__addict-47e2c8a7e0207bedb3088d55b80a8d80b941a709
+mewwts__addict-5e9322318843e507361583c93fcdfc111f48a47e
+mewwts__addict-5fe1f4989b3ab9c6d17d8e5fc2011ce80434cd76
+mewwts__addict-7e8d23d1615b20e115a543a0fb1972e404d37cd6
+mewwts__addict-8181a94517398f123187118e4765baaf65e6bafb
+mewwts__addict-a7301b5230ee1a515f7e86557a006f460f832842
+mewwts__addict-ffcbaa8bad34e4ba0b3951556c2ad4946643b9e4
+mido__mido-1077ffeb412cfe7673e9cbc091ec093d1252d7f8
+mido__mido-13f408f34bb7a8055a9e556db08c3b6c43f127b6
+mido__mido-3cf635ccb8659e5fea96eb304facdb1373372d99
+mido__mido-4e49d7cfcf2530fb254360f71497c22d786f87d4
+mido__mido-9cd77cc3643ed766494cba0ac6717225bf3f90c9
+mido__mido-d816bde89b3ef4e560af8a1aa7c69fd47ab1dfb2
+mirumee__google-i18n-address-3a20cc17f044cce0dfbadc3be229b5c8e225c437
+mirumee__google-i18n-address-3c024fc0ae3f4b30ee55d7ff3b6cec9cedd0c607
+mirumee__google-i18n-address-4f1a284b8db736f3835896bc20e57cc5426ada92
+mirumee__google-i18n-address-de59df085210e32e16def638cb11884ceccfb2d9
+missionpinball__mpf-0fc423405540fd52e24e65bd4e6a5ead9fa60ced
+missionpinball__mpf-29956861aa584361bcc4d771590dbde3cd24bb70
+missionpinball__mpf-405fb8176b0140c1f0329b22f110ee1af9e1ad94
+missionpinball__mpf-b4cdce75f9ebf841b2583b9b0922d0dec00a2873
+mitmproxy__mitmproxy-1919c0de599e659db7472c870a1e7500df345326
+mitmproxy__mitmproxy-3cd37652709292cffa1bc733134cef5483489341
+mitmproxy__mitmproxy-4abd00afab828c08523789d75359ba6199e03129
+mitmproxy__mitmproxy-633130e208b2dc5464aed368967bb631bd400ba2
+mitmproxy__mitmproxy-6cbadf08080b12600a2b250de227397be32d7820
+mitmproxy__mitmproxy-891dae031c65a3268a18056bff9719ac9ee2a66f
+mitmproxy__mitmproxy-d8c3e8a56a875d2e0abcf78e178438f06d7830b6
+mitmproxy__mitmproxy-fbe296aaba774b01348a55a6c9e10097bfd61b60
+miyuchina__mistletoe-0653065b9ee3fd88b7a2507ec0b61712c87f2417
+miyuchina__mistletoe-0c05dcda471719f0400db763b0f584d710350766
+miyuchina__mistletoe-10cc4680fc016f552a819f9569a8ac66067fb358
+miyuchina__mistletoe-1980c7dba5d79e5be88bfb3e7c50aa09f126ebe4
+miyuchina__mistletoe-2190c8720b51cf4abe33a08cd2af5f612024e9c9
+miyuchina__mistletoe-276a7ec0f3ac541d93cec1fdb2fef582e48d9956
+miyuchina__mistletoe-3607e947d0367ccb19173ca7ece6ffacee70dcd7
+miyuchina__mistletoe-43bacfb276bbc2ac49e5d57163adcefba18f8191
+miyuchina__mistletoe-54f6c212395f244fef6519c864da610bdb2533d9
+miyuchina__mistletoe-5f4c550e57a0c20d8b1f9afb1e68592b32afd466
+miyuchina__mistletoe-808abf447f9c2eb52a6102e712fb14f8f83f0862
+miyuchina__mistletoe-811f3ce5e748f36024588f09f09247122275764c
+miyuchina__mistletoe-8bc913d1965640c83ca26c5425df12441b5ade36
+miyuchina__mistletoe-a40cd2fceb4c4f8193aa9b227e4906b01891439a
+miyuchina__mistletoe-aa823d215368efca2b913a2a530aa07ac4c399ff
+miyuchina__mistletoe-be8f01c85c40b0c6c442e9387be708c6f606d555
+miyuchina__mistletoe-c696f01f09030fca3fcdfa5b6831d04e9d13f493
+miyuchina__mistletoe-c7ecfa234c18ed5211e5dd4565a7198b1c59b81d
+miyuchina__mistletoe-d7f06d05d35bd849ca54865fdc6133132e6cab5f
+miyuchina__mistletoe-e853a0def73f4d4c2be5bf16ef4ef4135df0d556
+miyuchina__mistletoe-ecb156552972f1a1a4fb2addb727a3646c815d28
+miyuchina__mistletoe-ee7ce94466966d083d02379181c3e4877988df60
+mnaberez__py65-eaa2398cec16390f634df10952dd51831b01760f
+mnaberez__py65-fa4cf35a34058ba016b0dc3c4c42cb70cd01ebb6
+mopidy__mopidy-00b5da3f132c213b472aedbef66ec66b65575d3e
+mopidy__mopidy-974a37fbdf0c7eed51d8cfdad842a07b9504f1d8
+moskytw__mosql-4d2971ba8df1f2cd4b72cfdfc37f1c520e33c56a
+msiemens__tinydb-dd6cdb84100e339f6fdb3076816e529b1aae67b1
+msiemens__tinydb-e8ebb4780fe199caf31d66903b2c8f3c3e4b241f
+mu-editor__mu-fdafac64cf40af2209ead25813d909f07d39abca
+mu-editor__mu-feaf9f57f7e2c117c16dc55ec9a2e29d06b8cfbc
+myint__cppclean-75c4f34694ddec6b481525dfedf5e1c458c1997f
+myint__cppclean-aa73d06022533a3ff0a956910f2df9a54c233d88
+myint__cppclean-d7b081a7926654a801793a6678d4ced438c94602
+myint__cppclean-dd6edc5cfa46fd70a7f36bcc98c57b66694703ed
+myint__cppclean-f2c1a7cc3d7b957e934437a7086ce3f526a9a7b0
+mystor__git-revise-fce8f35a4861f7a42e9119cf7be6e2edd9cec26a
+nackjicholson__aiosql-0f6ae1b716e2c60bc18cd7b365c932bebb998084
+ncclient__ncclient-a0a47ea439a78b4959bdc746d340fec7218dff73
+neogeny__TatSu-01f01a6768811754cca470e1acec022683351193
+neogeny__TatSu-0a34786f6762d94988cfa6b347b2591f3d7335ae
+neogeny__TatSu-1b632e8f318a20ed8b01c4d11b8da983804bfd1a
+neogeny__TatSu-3c5cd872a7e70948d31dbd706f5757d911e790c2
+neogeny__TatSu-5ba6b919a6cd5524dc744bda1c18fa64c834e454
+neogeny__TatSu-6e6b22d3e6b6bae676d6b3b32e6a552c07c1523f
+neogeny__TatSu-808937be2cc393bdfd307bbbff30abf15a7ff391
+neogeny__TatSu-cb73f60c8cf2fa69bb5c35c69a8f84e56b620fcc
+netaddr__netaddr-2c89b344a8e402773cab569ea9e522b1d683109c
+netaddr__netaddr-5cc08aaab229a42b4b20b69fe264839aaa449e07
+netaddr__netaddr-75dfc480c0db4faa059765c564ac37f3328cb886
+netaddr__netaddr-ae69a545c9f496f526331a6e7ea71b4ae9eec8f9
+netaddr__netaddr-bf36065b7253e5344fa862f5e73e28e318275812
+netaddr__netaddr-cd351598e5c846d9d895abed3064b38f25bd499f
+netaddr__netaddr-d2f5d054c461df41d454d85bf2ee214d8ba80fb6
+nficano__pytube-8ff1168c03da04dff67eda0bf6b7ea0a017a475a
+nficano__pytube-e98516c5f0d73983759fe991002cbc917de9ca34
+nficano__pytube-f5188a15fd69e7fbd3ed5e257eecf092817c681e
+nficano__pytube-fda25d0b2b7eceb5c238263ca914ed1059c7a400
+nickreynke__python-gedcom-049d330b847dafdecff21bfb9e5afe90d40e6fd1
+nickreynke__python-gedcom-676e4e9917b54a2a479c24e8473fd922b72ac4c8
+nickreynke__python-gedcom-a1b4da6925bdf481b012f259fb4bc3ead81d70de
+nicotine-plus__nicotine-plus-ca11275d751690f6ac06c9f95495b8ab645d4944
+nicotine-plus__nicotine-plus-ce2878a4560385c9f2d73d055cea3ce3b797781f
+nioinnovation__python-xbee-f8cbcfda0b4d1cefe9908677bc6c8f05363b1471
+noahmorrison__chevron-100ec5f1b13e08c7f5539e01e95d66f91528dd68
+noahmorrison__chevron-3497a2d14c7e4837f8bd273ca4cfa17aed87aeee
+noahmorrison__chevron-5291b0d873a637134b099a4b971e909017f6e038
+noahmorrison__chevron-5e1c12827b7fc3db30cb3b24cae9a7ee3092822b
+noahmorrison__chevron-b818c909de299b4e750abf579d609a5cbf314b36
+noahmorrison__chevron-e706f891089e43e73e7ca07e4387c12bcb2844a9
+noahmorrison__chevron-f9ae7569bb21a6bc8839094d7903d1d33e0ada73
+openSUSE__osc-01036341d4a9130a9d5dbb008bcdde011ef97990
+openSUSE__osc-02b342a0e42ddf382a691792edad7cf24fd3cda0
+openSUSE__osc-0c2238435f894207a5fe35af10a1be776a120905
+openSUSE__osc-31600b493f265573c15f7db2b67ff7d9a7767293
+openSUSE__osc-3f9b9a2fb8972e4b802289b35f201410912bc704
+openSUSE__osc-47cd6b37c8c45cf5fd8c7a0f042fcbcbbb0987ab
+openSUSE__osc-62349a39f13ac86843b5d7d59e6f6b980d7e022b
+openSUSE__osc-641b365f38b5624a2e8fb3ca484af29c9b0b57ac
+openSUSE__osc-644c59fd3e259098044cae7cbd40db752c25c656
+openSUSE__osc-6ddb8e4122f7e9a1ccd590aed39ee077ffbcdc52
+openSUSE__osc-7299cd488dacc6aedca2ebb4e855e12565e5e7f8
+openSUSE__osc-84524b565d2136c2b387fc2dcea2e024344c050e
+openSUSE__osc-8f92fcd9673c161f108f7ea6af060d9ce0f1dfe2
+openSUSE__osc-91a30963d504735ffbd34a8c8582efe31623031c
+openSUSE__osc-a03093df377d2bde458615feee29453c2f539b28
+openSUSE__osc-a68377a38719c7f141e74ca8c9f008b0e42b09a5
+openSUSE__osc-b3e88c538031139e2092c01d48b8cb16b126b838
+openSUSE__osc-b469f31d6c2b058788a1f52d6368d5308321f830
+openSUSE__osc-fbde8fc256e98d30bd9c1eda60a29fd9fdf28936
+opensearch-project__OpenSearch-Benchmark-fa1adf2378a2adcd7f7a4d107d266c96b4fc72b9
+ottowayi__pycomm3-a466f887f7e53d410aa856065bf5ba8ef3ded479
+ottowayi__pycomm3-ebcc58a0e7d4782ebf2b95d8f229801cc1635b9c
+pallets__werkzeug-4d30c235b1f759697a66cd665ed4ce8642441f49
+pallets__werkzeug-962746d9a38935bf25d1cc81036906c402bc96ec
+pallets__werkzeug-c1990f366930ee29412803b9261ef01cc8815dca
+pallets__werkzeug-c6fdc7c3e73754d6c529c7b51e8b2b91054e0fd0
+pavdmyt__yaspin-0109ffab044095eccf9aa4b75d93d49f25fc720e
+pavdmyt__yaspin-cb97fd0a470995ef2456818bcbe3c4a9db99df73
+petertodd__python-bitcoinlib-0e25674d987dbfbd0a35a282ed9e8c9af7f4f85e
+petertodd__python-bitcoinlib-8b85aca4f9c01d676c3f32d60d72b65bab13bf64
+pex-tool__pex-01cae31b5d561899be8f1a80db9d4a6218f654e3
+pex-tool__pex-024845595473bb33102814dbcd37c1181e965d49
+pex-tool__pex-026f5e89ca0556c7b8dd2af8b2781975430a42f4
+pex-tool__pex-0681aaa58d4f967a7140a71bd7e56df68a0403a7
+pex-tool__pex-0ab3fd14f2789dba1a26cf145d1bfea82decf5f5
+pex-tool__pex-0f9bf622e1565dcdd27c3b79b788571c9608c272
+pex-tool__pex-10f3eb8250b686b3ad0bae898254010046c6b1a8
+pex-tool__pex-1379d3c5d525be68165cb87433c3c9fda8599feb
+pex-tool__pex-16014f500d3917445027bdd8bc4d53066b2edf7f
+pex-tool__pex-160babc23f115aa15ffcb32504e63c948239eee1
+pex-tool__pex-17bd416647eaca978e538408f1ec21813ab26335
+pex-tool__pex-17d795a20d80ce1d59284aa5cbc925c190836345
+pex-tool__pex-1cbf72221e53d5866f3d18f6d9ad2b66cd9066b6
+pex-tool__pex-22c254cf272998e6c52ca11641d43f74917c3f65
+pex-tool__pex-2534f1fd2d4fc9f2021b3a0dea9af757baccc027
+pex-tool__pex-2693db7c1ec6e1c810126820f250db206391969a
+pex-tool__pex-2986c851fbccf36a3425ed899b4878846a0461ec
+pex-tool__pex-2df133378a4f9e8bb3c6966d824465e57c66ba72
+pex-tool__pex-30aedccc77917cd8702a7bb1751b367364220516
+pex-tool__pex-329447a850025d770af1d02b2be542c1165efaa7
+pex-tool__pex-342fb5be9f23c4e0e97eb3b617d38a66eed9a2d0
+pex-tool__pex-34793418838cfa4e8d059c216e517cf2ef55bcc1
+pex-tool__pex-374ede818cde11de4acc12b051411fb550fa7f2f
+pex-tool__pex-39bbd3ef7304fbe673a5ab8032230e07e775feeb
+pex-tool__pex-3d0e1ca0633edde10a49190cd967e755e88a761c
+pex-tool__pex-4089022fe5aea8a6561d84664e302a767edc334b
+pex-tool__pex-47fd758763f3fbe0b85f04285217a16111fbcda3
+pex-tool__pex-4aecc86263ccf8d27630ef761335591ab5100759
+pex-tool__pex-4d0e81992c613e67dec5ad4b620680af51b86c60
+pex-tool__pex-4e92fcc261ccf6a36c18a77c29328b8a9ff02334
+pex-tool__pex-52ea77b77fe6383e1b2b4c9fcc1bf076332f512a
+pex-tool__pex-5b8a9b4de9fbcb6b5b1c6e2c6889ce7697045dda
+pex-tool__pex-5ec7707cdf6c9ecad7c02d3b85b74036cad35f95
+pex-tool__pex-60e83ac470d45d825fa5ec7379de2909bc22f155
+pex-tool__pex-60fd51395076e8b52d8a403dbf0add466a0a3051
+pex-tool__pex-660b66df8e217a13175e7af26877930b8b6a2203
+pex-tool__pex-66f7c57e46a20991b045113a89246eb2fab8a790
+pex-tool__pex-6ea024ab015e2adba17789b43131cad98ee4a036
+pex-tool__pex-70b6d4780f037f9da21de3ae068d58b5342ca194
+pex-tool__pex-76c3da6f1ca842ac9fc70c15216f9fd36e5a8e95
+pex-tool__pex-7c3a36869588f9164254b31952f8adc65989853b
+pex-tool__pex-7dabca525c902c82f7684fb5d88088de44bbaa34
+pex-tool__pex-7f9fecec44606e6d76cbea46feeae9306cac542d
+pex-tool__pex-80194a780c5216b98873f472a40a3b7f50d8ef99
+pex-tool__pex-812a34fb69cb16143aa780c32b40c9aa2f0c479f
+pex-tool__pex-834526b9bc5a0f1b87c169e4e098b8035938160b
+pex-tool__pex-89efbfb981567b9b19fda4a7169ce8994219ec6c
+pex-tool__pex-8b67835e9ced3d79432254f3cd60fc2532630e6a
+pex-tool__pex-8e891a20e1d511a1e066de94acbf00ec132dc040
+pex-tool__pex-93000eed2c765c816141b8cf9bd90261d5c4a5ac
+pex-tool__pex-951f3602bcfce13339d31443d543ed879e7c4114
+pex-tool__pex-96e8b0a3a40566c7cf132e5c85d83352bd83887e
+pex-tool__pex-9b18a06e0fc26d5a12302a1ea2a24496f795da31
+pex-tool__pex-9c69026a0c382aedda547d56c3e6765e367d2950
+pex-tool__pex-9fd8c806db867a3af185ce3e63a54d4253c99cc0
+pex-tool__pex-aa9af6d319e718a089674f2067b92dafb74a737b
+pex-tool__pex-aaa19eb615c5503f36859316bd24fc0beaba6ded
+pex-tool__pex-aadfe9c203140d61c545a84160553397970ddde3
+pex-tool__pex-ade95c3d2016ab0954d5eba851ccef30a69000f7
+pex-tool__pex-aeaef101e0c2a4f77b2dde99c16f2027d2a35de5
+pex-tool__pex-af39f1df4d94ed1007eaf8dc0e8a93eb04333475
+pex-tool__pex-af5be4695f9fe0d853ee3fde4ed64a07b64d1227
+pex-tool__pex-afc1e6033bb296bce351d88ec874c4264a6bdefd
+pex-tool__pex-b051279291672c3edbb271d64e558faac3bb42a1
+pex-tool__pex-b2de657fc5597b2769a27ebe1b5680a40a3f0aef
+pex-tool__pex-baef9ea26622618dbb95d5802be7b8a55a979520
+pex-tool__pex-bfd597a5c5ccb40a3db7670b601e3a587317d502
+pex-tool__pex-c21f77882f39d830b12bf450a038be90c1374a11
+pex-tool__pex-c4684b6686f1ccda395653a42cb5fda5bcff9433
+pex-tool__pex-c65417794a6fb525a1ec06f3e634c7eed23a9828
+pex-tool__pex-c7185b5ae7a33aa13d3a4391b4f3fe48a9feea8a
+pex-tool__pex-c728fddd3308d6b782bb499a0a6cb4fd26e9ff77
+pex-tool__pex-c8a49755ae4e8ac3b5c3cd3cdcec245c23558341
+pex-tool__pex-c92dec0404a208a243bb073144b3e2855a6d1a6f
+pex-tool__pex-c9ff7d965fddb533bee846cfca2d9e0ace574074
+pex-tool__pex-cdd26f9adc5fef8a836998b694be2d069d3ffd23
+pex-tool__pex-ce0485d825bd36c805546e16da1335301dc1e938
+pex-tool__pex-ce6ac7417819f61e7d6d53d3c7690027586feb86
+pex-tool__pex-d7890631620b231ad68a15d8bff23abf4884c185
+pex-tool__pex-e3a85f041b9960590d801c8f97822545c09404ea
+pex-tool__pex-e6aa703b71420c7260621bdcda1cdae0671ed1d0
+pex-tool__pex-e858eab857a0cfa101a9de461d8d2d9176f7e383
+pex-tool__pex-ede0184049ea5bcbb382dbecbf09539f433624cd
+pex-tool__pex-eec359115cb4dd6087eef8775cea6bcb33034bd9
+pex-tool__pex-f433ad6fbf50ef07ba2dd72f6f522223d88ac4db
+pex-tool__pex-f628a95e35439afb346a7b84ada6a6e1550bb4e8
+pex-tool__pex-f9327f937e4367193f64ecfe62cf868107721cf1
+pex-tool__pex-fba82b40db177fcf56eef8923286aa2e37128298
+pex-tool__pex-fd9a07f3cc4e8a3f64eb2c9850f7936c67453315
+pex-tool__pex-fe12b871b373cabcd09800ec092443f17921d20f
+pexpect__pexpect-204fcf7763faa74cc1e5939bea174f55b0e58e9d
+pipecat-ai__pipecat-03345503563bd3309b9e439a820ef7bc912b2c18
+pipecat-ai__pipecat-6ac57b4854dc32986ff64f70c2a265924858a0e2
+pipecat-ai__pipecat-89fd03d86f7521e5a6b50e35f178f85e39c56268
+pipecat-ai__pipecat-a2295b6b1d8923b14808e64977981d35f556fca2
+pipecat-ai__pipecat-d6dc37f0b69fcc5fb266b79d517f5657f3e785e1
+piskvorky__smart_open-101bc0d3943f6563851c9e25805085f86d74415b
+piskvorky__smart_open-1f96c22125e4742e7b268703b16ef1d5cdc98e83
+piskvorky__smart_open-4afac2b5ed4f67507c98c6d4298ee65573122d8c
+piskvorky__smart_open-4b07d25b87390d13a40c3e0560f72e752b5988fd
+piskvorky__smart_open-672db984046c7b5e8a2d1a9489e9fccbeb2d98df
+piskvorky__smart_open-6d5e8ff77b72c7c43d358c6b85034d0a306633dc
+piskvorky__smart_open-860bf70068761359a24d14871a36f196f17d60c4
+piskvorky__smart_open-a55794dee992dcebc3de23143c2c4a43ed3cc183
+piskvorky__smart_open-b427b28a9226d2853e774ffe2cc59d23592843f5
+piskvorky__smart_open-f37ab245520897ae7ed623c09664685906260e28
+plasma-umass__scalene-856ba1ac6988068df3f5fea499d7c52820d9b908
+pmaupin__pdfrw-89dd1fd52c99f752d8025383f1b760025c05fe8b
+pointhi__kicad-footprint-generator-3d13a870e0675e9a76f4a53abf6e53d693303f21
+pre-commit__pre-commit-0c3d605fa065ba4ac698392accc03e539ac55909
+pre-commit__pre-commit-30a36a8a006ce27b30390897167c6db7a4184748
+pre-commit__pre-commit-74c582fb04f52ca77ab21ffca5d8be2ae0b75b56
+pre-commit__pre-commit-8994e4cd1c90e00cd6ea63db34b0ee604faf2648
+projectmesa__mesa-08d4d0e3dd3798ca300ce85abcc920675fb02bbb
+projectmesa__mesa-15ba47da99a83a2a1164c385f364fd0b3cd03f6f
+projectmesa__mesa-193e383050780bd75ee4eefa05373a19609f8ed3
+projectmesa__mesa-221084d597bc982029297d1960996d7b0d96a57a
+projectmesa__mesa-2898c012b883d1ff5ec53bb019f4914646bab8d5
+projectmesa__mesa-29f5dada4a344360796a0ccad5e6f1361b65822f
+projectmesa__mesa-3bafa1439038b82321bb52744bb6decb4f687d49
+projectmesa__mesa-3c0cd6290d8dcf12214afb40b7b342c99d56715f
+projectmesa__mesa-3cf1b76ca3a157c8a064b60130755a86e73718be
+projectmesa__mesa-44276fb6ac2ecfb589fe13123d3aad7eba1acaba
+projectmesa__mesa-468a9a949545e60c97b73e1bcec914d504c789d4
+projectmesa__mesa-63f3fbda14b4d44f6ff707b1fd7f76de4a73f5ed
+projectmesa__mesa-6868f4f65f2def88cd6affdd214cfaa035b5b3f2
+projectmesa__mesa-696923f37d927de4ee7da0ba77a4bbcc79307f78
+projectmesa__mesa-778f6a662c8a811f7cd3c445f0a5ece494af455b
+projectmesa__mesa-7ad5826b52f7286ccb98c0e5df35f640bd905b29
+projectmesa__mesa-7c778609e08247829ea86d8310659e32a353b5ef
+projectmesa__mesa-8043bc03b2f0df90f7c5baf7447aa1e5ccb9687e
+projectmesa__mesa-84881e72f84e91d78ca46a6f202cbf3d989841d0
+projectmesa__mesa-9446642d9295cd559ab6e4a74f3c37b45c2b14a7
+projectmesa__mesa-9f13c30394b2ecb9a7406f4d5ab7dcf7dd8a2213
+projectmesa__mesa-a48dd80a6ce424638e78ae962225d099551dfe46
+projectmesa__mesa-a62f75ec68d75b79c132465f384796fb1b77f9bd
+projectmesa__mesa-aabb542357bc24867d1ddc7092d11f9088929ff3
+projectmesa__mesa-adad7a24ba7d1aaccfa88aae5425cb6540f79825
+projectmesa__mesa-b1d263baa9851a308a8c85616d573a8c43e0e9c3
+projectmesa__mesa-d2633196d8465821adcb95f0700ef99666c1638a
+projectmesa__mesa-d71f688afd8d8b8980521e404c121455b9040a6f
+projectmesa__mesa-de58ddb413dfa8eee277a90eed0713c1b7211efb
+projectmesa__mesa-e0d115624c6288b44c782ac115c47ee953175006
+projectmesa__mesa-e582260a117665c446286915e6d6e74e05ecd21d
+projectmesa__mesa-e8b64ccb163b5d3145383542cbc2e66ac5ad0ee6
+projectmesa__mesa-ed637bf6a8dfdf088f4da4cf422c4a76661e806a
+projectmesa__mesa-efa51cdc5ef6ae20940351c1ea00fb01b4718ccc
+projectmesa__mesa-f8b32bc1720d492b551178aef00a0d9a96e7b784
+psf__requests-76e9fee987f2acf294a384b96c417c22b9a767b5
+psf__requests-b89e40e043a4aac79d68e9a76d6566c80d1dc875
+py-moneyed__py-moneyed-1006e6b270d57655a016f8ef21a5e20f9571113d
+py-moneyed__py-moneyed-2381581e32b26a0e5af6cd4fde0cc16a6dbd117d
+py-moneyed__py-moneyed-35fca29f57fffac25b4db46a85a5e8a882323b30
+py-moneyed__py-moneyed-5476604a301e4edb6175c296485533271eba4f94
+py-moneyed__py-moneyed-796a7ec54a5f8b0ba80085bcfb6e59e4d84a4864
+py-moneyed__py-moneyed-b93bb9126b76010f51f0f4bcfe7d4b75a2a4c95d
+py-moneyed__py-moneyed-cd4be3b5d563bcb16b0322d786624dcffbaa644b
+py-moneyed__py-moneyed-d00a2f76eb54e637b612527fdd680b211008323c
+pycontribs__ansi2html-8b33540fa78721784fcfe64f676e1572a64e0b1c
+pycqa__eradicate-148b357c3e30d9d233491962d9e92ffb5a6823b5
+pycqa__eradicate-1f98dc455a08fc031a04de7858fce61a469235b0
+pycqa__eradicate-2552304d6cb081852bd41d7a881185159056fc0a
+pycqa__eradicate-885f088def18164a98afc9905d970a43f71b51ee
+pycqa__eradicate-9146e8081b2a143dc4779d8c9dad84ace01a4b69
+pycqa__eradicate-985953172f64e76643687804d0ec96c13ae19924
+pycqa__eradicate-ba2dcf9947c4bed18b7dd5b94ca4e3af19c9594e
+pydantic__pydantic-0244b06be5ed28ccf5dc94628ae162ac6f6bc39d
+pydantic__pydantic-02a2a8b5c010e23fd4c85af44c3cec515b44a94e
+pydantic__pydantic-02eb182db08f373d96a35ec525ec4f86497b3b11
+pydantic__pydantic-0558af4d7f2d8521aad126a7112be268177a7213
+pydantic__pydantic-07908b3846c9f3c602d46e978328b8651c7a8b3c
+pydantic__pydantic-08fc8302cfaf1669c6a13fc44b4d4b68e80c4e61
+pydantic__pydantic-0a5f0fae7a44f7658f777e5bddfdc1e341819357
+pydantic__pydantic-0af5e5f5593bfbc3f4794e0ebfe8ed9ad3b340d4
+pydantic__pydantic-0b3c5631bd35d4521632cc44b9ce69a9e58f573d
+pydantic__pydantic-0b8b7eb4b635ebb420550a4b45361bcaa5e5d8e2
+pydantic__pydantic-0bfc9302749284d48dc407cf78f75b9bb8828dc7
+pydantic__pydantic-104748c793d80607ee7651867dca702c5fa67029
+pydantic__pydantic-12ebf0cfab35df065f911b5944afa02220a89801
+pydantic__pydantic-149c05bc2ee85fcb210e79a3e39b7df5f929e2c4
+pydantic__pydantic-1736ea1e705838e8ededb8cf802572e434ba58f4
+pydantic__pydantic-177ca2a6b21d4c333944ba0204a4efa37beff779
+pydantic__pydantic-18359d79853f57a5a892cace2e4e286dd159a300
+pydantic__pydantic-1a2791d4223ff1d18400432ef5d020ce6910aa4a
+pydantic__pydantic-1a9f59dc1e11e6d0022636b53f7f7784a84f8c84
+pydantic__pydantic-1aa22e199f7d7458fe2fe914b316f310cf1d43db
+pydantic__pydantic-1e821b6df4e1eda00313efff058083ceeea5677b
+pydantic__pydantic-22849ee04930e3acec813e867048d09d4962bd56
+pydantic__pydantic-257908628f8bd29910744c632e847fde332d35a9
+pydantic__pydantic-268c3cc41f207645d4c11883659cc86e645789cd
+pydantic__pydantic-2a87f7954a593b5b2756caed6abb76f06eee1271
+pydantic__pydantic-2aaddf6d692a6a467a401fae5840435c5459aa1b
+pydantic__pydantic-2ac10affe5359269d4a084149959423ac8328a4f
+pydantic__pydantic-2bf4a124a290f5b5e13a57b52b2259cb75a9a6cf
+pydantic__pydantic-30ee8e2203267d3ea86ca2a51472738d98d05cd5
+pydantic__pydantic-31bc2435d7968fdf8d1f0c5c67f0f851c1bef54e
+pydantic__pydantic-31c4efb7f05d9c45e187591af7bf331e72719b71
+pydantic__pydantic-33c5a4dc34123c92960efb02406fb0b56df2d7ea
+pydantic__pydantic-36be4c9f4e708a15472d55a09f15481943e86ee6
+pydantic__pydantic-3a2e83ce648334074946f697a31d4a04660fb5ab
+pydantic__pydantic-3ec35590f14c1fb4b7f67c6806abb74ada144bbf
+pydantic__pydantic-3f849a368f260caab3288f2ad8fe018d7e903bc3
+pydantic__pydantic-3f84d1405e6c07669a28d1fdd1e9a6f7a33b43a5
+pydantic__pydantic-4020ebc41232adfe132cc8628be59ccb18d8f202
+pydantic__pydantic-4169b1e2fa7cdeb0b0ea48dbada4d353a17c3e70
+pydantic__pydantic-42acd8f8d2bd22f114e589672a054fe07a769e45
+pydantic__pydantic-43308d1b24c5d1163c44b8fa786d1b27e000c64e
+pydantic__pydantic-4753901151d1066ec34b45301559b48d8fb62efe
+pydantic__pydantic-47cebdf86637a3299836f024bf42828a9b413561
+pydantic__pydantic-4a094477c6a66ba36e36875d09f3d52475991709
+pydantic__pydantic-4bc4230df6294c62667fc3779328019a28912147
+pydantic__pydantic-4cb58cf9df31f6ae0f7ccb6c7f84a5b52c1e5d0f
+pydantic__pydantic-4d87699363545e2d957c2448f46ececa7686fd81
+pydantic__pydantic-4ddf4f14cd8f75e62e77f01f9bab42ba6377031d
+pydantic__pydantic-4e06d29592e4ee04c0be1160f263946d949832ba
+pydantic__pydantic-5293adb3d3d1b6fcdb4e1ffc188a560fe601260c
+pydantic__pydantic-5490ad5173743ef2bf85216d11b9ff0822b3d25b
+pydantic__pydantic-5549e8d37980f0c4b23e76c3e4cbdee147d30818
+pydantic__pydantic-55e78cc10660b2e1d94a5c2159e6e75d7cf6c0ba
+pydantic__pydantic-5ad73d0388bce63a1365d183cd05b01a95b445bf
+pydantic__pydantic-5bc1fcfb92aace50f18bf4ddcc915ef23e1c7431
+pydantic__pydantic-5bfee873c8ab26b453cde59eaee4eca5b5a9eb7b
+pydantic__pydantic-62bb2ad4921016df51abf3922c3fe51113b08939
+pydantic__pydantic-63337fbadc2eccfd2942f21593cffc2adf92b084
+pydantic__pydantic-65a1381591bace18c363f3730736c3278ba4cac9
+pydantic__pydantic-67b653f19a00b60e410003bca428bb20b920ec36
+pydantic__pydantic-67bfbe3f443d139646f2422a3e12137100999fcf
+pydantic__pydantic-68784f63c0219aeb2c2d816347c41222fa48cdd4
+pydantic__pydantic-6ad80cd402b64058c1366973d004817a8b462270
+pydantic__pydantic-6b1a0bff54aec7476778c8dfc2d130adbdd2f251
+pydantic__pydantic-6b6116054a9538cd85edc57f56c411add037cad0
+pydantic__pydantic-6f0ab55159a12658825832d8bf4fd00793b53807
+pydantic__pydantic-72d4f30f0af92333e15b6fe70fda4307bf920ff4
+pydantic__pydantic-73ed6ed5cbe8e0c5bfd19b266c29b7d5ebae01a2
+pydantic__pydantic-7431683e88538b4df6da15bd0bd815e65480b035
+pydantic__pydantic-78934db63169bf6bc661b2c63f61f996bea5deff
+pydantic__pydantic-7af90a8d6c1c406799ad95b81e353b386cde5745
+pydantic__pydantic-80175f3628b5e69959be37572c6bfbe1f0569b98
+pydantic__pydantic-82fb6ebfc9bebcd8793abed77a86e1a3929d868f
+pydantic__pydantic-83cf4646ab4319c5663cea8320ce13f391c4f08b
+pydantic__pydantic-88ade4bb6da1e1a217023e929907013973a79587
+pydantic__pydantic-899b5f066124d8f49c5e4363c6deab5904446031
+pydantic__pydantic-8aad3a2f58b234f07b2df0f00db10865e33b7100
+pydantic__pydantic-8b2f299fc5e8e9c0d5c36049f5a8c46f8b31e275
+pydantic__pydantic-8b4e726be28f54eba874df9d960209256ede4cc5
+pydantic__pydantic-8c6b9ca2856d52092520435f2af74a822f76e309
+pydantic__pydantic-8d7e0b86f395cfacf98e2df7b5edc72a1a82e5f7
+pydantic__pydantic-8f388e1e30a9e947738d9a8109c1b0c75613bac4
+pydantic__pydantic-90a103ec3cd752450b50e39148b247dcbc4438c5
+pydantic__pydantic-93aed51183fb6c154d8732916a17e1e3b79e6e61
+pydantic__pydantic-93faefb4a9c711d3fcaaa916fc60163d125a5a8c
+pydantic__pydantic-943f507d84d26b987077d30d8dcd81076bdde5e4
+pydantic__pydantic-97a4176110084b256d59dc68331a36a52963b2dd
+pydantic__pydantic-9cfbd2b11bfb0ab95b44f9ab1427ad3a2d6db492
+pydantic__pydantic-a220f87aac0433eb52d5661b50499e634367a89c
+pydantic__pydantic-a26665a5ad6b629cdef0e99c1be38aa80e2bffb6
+pydantic__pydantic-a35cde90af9caaa4d1670508255a38b6e361228a
+pydantic__pydantic-a3f180eb2b8db2bc3a58088548adf5d85e6d439a
+pydantic__pydantic-a587ecee88fed075aa5a7ec1abe23422a968b2b1
+pydantic__pydantic-a6154514c1241c2ab1d3c70dc2b9745673ada54e
+pydantic__pydantic-a69970783213f65ad8523009f343d0cf698ffde7
+pydantic__pydantic-a74232e10105c18b7197ff29ee1a6d685b1a47b9
+pydantic__pydantic-a825106c2c5f2599643e1ad6d4caa1bfc6e1e999
+pydantic__pydantic-a82a411d604ca4606cab4ae3bc8cfad9a5ea2377
+pydantic__pydantic-aa98b58816143d7d265734a56764bf724569bac4
+pydantic__pydantic-aacf5920402f374069af0c80e37d4d251f418d35
+pydantic__pydantic-ab671a36708a14017e2ccc62f72c9f7628628737
+pydantic__pydantic-ab691142b5b925b1de7dbb2cb767cbab5ef940d3
+pydantic__pydantic-acb4ff3744ec36c11f34490909394d80c24c176c
+pydantic__pydantic-ad7862f03254f41b0519977b00fb3db3d331a0bc
+pydantic__pydantic-add3a672a61e22573884030b6b25bfd5d9867bcd
+pydantic__pydantic-b076567591f13635b1411526c67a2cab01329e44
+pydantic__pydantic-b171a7ecfabf0e37c1089a49ad8af313ff321d85
+pydantic__pydantic-b21da6f3817e173559432222891a891c684f39a9
+pydantic__pydantic-b3f7b28f13d31484707e1c57cf8caa21fb4f7994
+pydantic__pydantic-b42fae081ce095769f60cf18d4657ba9b14a97b5
+pydantic__pydantic-b4d1ada0045842d1c9f057f3cc9f63d4908f4c18
+pydantic__pydantic-b516de7f5333b17290059b9ae7b5e76259ec2898
+pydantic__pydantic-ba58f941506de1bd0f31cecff6e4853800c6273f
+pydantic__pydantic-beb3e4c8f18a775f75ebbc7293bb5a8ec3e59a17
+pydantic__pydantic-bf4b5ceb49043c7165499a51b41e340928ddfd8e
+pydantic__pydantic-c04923ca97b511c1a961cb018e0a5df3dd501ea2
+pydantic__pydantic-c0ac53b7578b74dca8a10d12855f068499d82f0e
+pydantic__pydantic-c18634b42a07ea5570c94c379d4aecfe312c84c7
+pydantic__pydantic-c3870b611e1c5c287a79271f07011a758ce09a5f
+pydantic__pydantic-c4e793b76741625e0c717560f79fc101f0054aa8
+pydantic__pydantic-c532e8324e0a68fcecb239b02d66b55df7d9c684
+pydantic__pydantic-c6a24f28c592eba122c29a4156e901a8c5e4b321
+pydantic__pydantic-c8883e34db8b42261617f45bf5e46f616dd5862c
+pydantic__pydantic-cc54acb612cb5144a34caebb9ac143324a0cb4a1
+pydantic__pydantic-cd439a4e8d38e082d3ca7bdbdd53ebb9e7d49680
+pydantic__pydantic-ce67660d2fa3003807718bdcb5459cfae97e6d82
+pydantic__pydantic-d0baf0f156800d66da06baa157a1b586e951f2c3
+pydantic__pydantic-d501c39f2bae9cb0da5f8e1b59dab6f0f64640af
+pydantic__pydantic-d61792cc42c80b13b23e3ffa74bc37ec7c77f7d1
+pydantic__pydantic-d7afe9936e8cbd20d2f5b6f5576e2ca9f14c5642
+pydantic__pydantic-da8f0c034e71cff5d67f856dd7b436dec4e8d6bc
+pydantic__pydantic-dab478aa81a59e0a5c69a0fe57bfe34f233994ff
+pydantic__pydantic-dc4710b56cbd427ca47ea2da7b45b1f669c4d45f
+pydantic__pydantic-dcc00beaf038a243abf8ab93f81f6013b264996e
+pydantic__pydantic-e1ecbf28509c6faf02e5e7aebc6e76bcdb008257
+pydantic__pydantic-e34ff9255f281eaccac10d0436c082626d9146c3
+pydantic__pydantic-e5540296cc1690e3807d99c46f8a99b908735d38
+pydantic__pydantic-e71f53d2b5a3a04962ecdf50edd021d0666a332c
+pydantic__pydantic-e8822775e3a331ca2d06a083429bf85840db6515
+pydantic__pydantic-e92f12efacb3fe1ef9577f712e3bdafc2427b5ec
+pydantic__pydantic-ea870115b71c3c8843f454989d0ccffe3edc0279
+pydantic__pydantic-eab9d054733537a21c70aa9afe89d0a552537ecd
+pydantic__pydantic-ed3e267de911c77cb02be07c7c4cfe5cc69de3a7
+pydantic__pydantic-edad0dbc46d2ccfff4f5bba8d914b3a73148a52b
+pydantic__pydantic-ededd3ebf87f0c337e1b2752327b991c218a1c66
+pydantic__pydantic-f05bdb732f615ab7c8274c143d442f0a0db10135
+pydantic__pydantic-f11b3ae31347793742121ebc669f17724bd33813
+pydantic__pydantic-f1e988315722c38a7acb2cdbf08823ee45eb07fb
+pydantic__pydantic-f2af9f78064f60849d9c0c505f83d2cfb2cb1daa
+pydantic__pydantic-f5a9f4fbe3c7c0d38a9d0c42b0c6e212ecdff261
+pydantic__pydantic-f6c74a55d5b272add88d4cbe2efa46c4abc1760f
+pydantic__pydantic-f99a0e2d9b6490c01276bf9309fa582833edda67
+pydantic__pydantic-f9c65c5b88a3102a0811854410364ad773f6eb64
+pydantic__pydantic-f9fe4aa086e7458f3c3339c408b3215f34e6ca18
+pydantic__pydantic-fa6b9788a1001591cbac44923476b5d12a14c1fc
+pydantic__pydantic-faee3301eb2c0d4157150a2f4cde2b4edb32ac8e
+pydantic__pydantic-fc18f8ef3490c5f0940de12268fb45e6ac9642d1
+pydantic__pydantic-fe2a5e2170a00d210e200468f37ef65501a907cf
+pydantic__pydantic-fe7c9da6c19d602907aa236bec3cde86495c8c18
+pydcs__dcs-05ebda06cbe77b09b2b0fae915993caaa30c81bd
+pydcs__dcs-07fe67e1167a251ce2ec6c2d29aefa6f3f142e11
+pydcs__dcs-24ba89c5db0f75f7e34cb995e038674bb5cca0cd
+pydcs__dcs-353a33065beb663ee7c55c8073a204ee783ae7a1
+pydcs__dcs-3ef96ec014a69bee67fbf86c9d6cf0d0a5a86ac1
+pydcs__dcs-42de2ec352903d592ca123950b4b12a15ffa6544
+pydcs__dcs-47789b7ed7d52879e57c6f00896e9f6cd81192ef
+pydcs__dcs-4a1b6496451ec3ae465e36bacec37a2e668a8b0d
+pydcs__dcs-5c02bf8ea5e3ec5afccc0135e31a3dd15e21342b
+pydcs__dcs-6229e960d3ddc5fad41c79cc5641b6784c1854bd
+pydcs__dcs-773e90b2bf9446be59e6dfaa4c968e581f0d5fce
+pydcs__dcs-77d9141be5fc62866e4a3d407babde997dd89024
+pydcs__dcs-7ff976348ad946494fac77436bbf87f9146c89d4
+pydcs__dcs-88536e5954434a9bceea5ee79fa4ef7900e7be7e
+pydcs__dcs-9153b935c0b315dd2e75de17f4853364ca20817a
+pydcs__dcs-a564cd264369b60c7725f0ef76bf29073932fa62
+pydcs__dcs-a5ace97ed1b13f56f8ec20e569a30898ec5f2e3b
+pydcs__dcs-a8d1153ace2f71f369b8afdb2ca2f045f3fa388e
+pydcs__dcs-aba313f9465181be3de782cdf90ccf366d883d8e
+pydcs__dcs-b0bba2f46e700f85c838f3d26d82125f6c0831f9
+pydcs__dcs-c12733a4712e802b41fd26ad8df7475d06c334b3
+pydcs__dcs-c913af9c76897138373ca08b62c615d6a4edc708
+pydcs__dcs-cc38babfb0debbf479c9fc02047a170c6aeb2b81
+pydcs__dcs-d278df68eee2f486f840c178e17893f58313efb8
+pydcs__dcs-dc7fd947d971125f7844805f3423495daf6d490c
+pydcs__dcs-e23913e5fe68b8b31ce0229048bc4b0583d3fbad
+pydicom__pydicom-00332dc987b3cbfb2d8e86e81e51877315cc469c
+pydicom__pydicom-02728aee7fc76f8e78454dbcfafe3b5b8453093e
+pydicom__pydicom-079d10e23cc471b6947b3d427db56c016c250461
+pydicom__pydicom-158be4e8363d3d54d2fc1861d1d694d5a993b96c
+pydicom__pydicom-16896e244bd89a6978afda33cb7be8c0f7f51f8d
+pydicom__pydicom-1756180f0367be16182038f17f7546f0a199f358
+pydicom__pydicom-24c70e385fb66db9d8c4c63b6da7188409f0e739
+pydicom__pydicom-256e154e1ad328050ac08128f4c590d1aed85789
+pydicom__pydicom-2dfb757903100cf35463506ab82cb0a20a59464d
+pydicom__pydicom-3096a512a589521ab9fc055605c03063d79f9fcb
+pydicom__pydicom-30cbc79d45cf708fd4afcdd150adc47230d2078e
+pydicom__pydicom-356a51ab4bc54fd18950041ebc44dbfa1a425a10
+pydicom__pydicom-38d490ff49a1de22878c965fcc6dbdf8b486289e
+pydicom__pydicom-40652fc0a18fd9f1204cb3d4b9829e3a8be5cbe0
+pydicom__pydicom-407f8369c8a5b590ba173c64686e3a56f71628c4
+pydicom__pydicom-4be90342c293e1f4c6c87fdb016b267d2606aad0
+pydicom__pydicom-4dee753ab82ccd7b248893e6d633ba20e7f81d99
+pydicom__pydicom-4e392c94c956f7dcd771b55d0a2380f6e454a24b
+pydicom__pydicom-4f059f23073ed3f4feb50f7f50e7d4b284acbd50
+pydicom__pydicom-5ab9bb0a06fd8a1c7e75fbdda6f6b9093f65b8c6
+pydicom__pydicom-5e70c1dfe09820023fec519dac4c51bebcb7f60d
+pydicom__pydicom-60db5ac3657fe489c603121b6cecce5a50c3011d
+pydicom__pydicom-699c9f0a8e190d463dd828822106250523d38154
+pydicom__pydicom-73d06cf5018d06e6f78343612ef1dfb086045c01
+pydicom__pydicom-7aaec2d93ecebb26550f5f28bf12b3392198152e
+pydicom__pydicom-82bbac47c6dbb7676a5039f21bc161fab1a09737
+pydicom__pydicom-86c953af59994237bd7fadabf945862b86a89741
+pydicom__pydicom-88ca0bff105c75a632d7351acb6895b70230fa12
+pydicom__pydicom-898bfce7debfb8e59f22685a17d1af1974d82121
+pydicom__pydicom-8b2a0b8a559b19d0cf30f99e0b3d9514cad4b2ff
+pydicom__pydicom-999254e0bf675167aa994aa02e9cdb0397b6a5dc
+pydicom__pydicom-9a29f17be4f122772d4a06c235d765fa7fc339fd
+pydicom__pydicom-aafa9835449e3fd0265d606f727592f00eaaf5bb
+pydicom__pydicom-b0d90e367720d02624a3bac4381314e03797e1c3
+pydicom__pydicom-b1d404adf00c17506b30a6548b857ea9480442f7
+pydicom__pydicom-b6709beba54f534418ad621e1832f20f4f5e0af2
+pydicom__pydicom-b93ab7342c86d97c53f1e7e2e8d8479e49c98c5f
+pydicom__pydicom-bbaa74e9d02596afc03b924fe8ffbe7b95b6ff55
+pydicom__pydicom-bbacda23654615ef9bf4521c11bc9316bef566c1
+pydicom__pydicom-c02e41d6aa64cdc2ee1005447a00c4aeacd270ab
+pydicom__pydicom-c2f2ba814717db5a26d5f8ac83a06dc0b7bf2cd1
+pydicom__pydicom-ced8376331f47584998435a901ce541b142c5f52
+pydicom__pydicom-d245d8a66a1d2c50a9f4268aa4d5c1aea5b94e38
+pydicom__pydicom-e7de71b4a2c7e15b1d23197a00642951cd695d94
+pydicom__pydicom-e9fc645cd8e75d71f7835c0d6e3c0b94b22c2808
+pydicom__pydicom-ec38638b3e2c36a1f1f711ba97552d674e92bac2
+pydicom__pydicom-ee775c8a137cd8e0b69b46dc24c23648c31fe34c
+pydicom__pydicom-eeed69e28b4f2964d2b3198c389ba18fbe832abb
+pydicom__pydicom-ef4de86771357b3bac3d7fa3da73624c435aa7af
+pydicom__pydicom-ef60223deb33033abb8b6d2adaf59867d6f4329f
+pydicom__pydicom-ef62ff76939c998e99c6bd42747be2914db81ee9
+pydicom__pydicom-f014320a58d3263f262fa3191de8f449dac92143
+pydicom__pydicom-f4bcae3e008e69dcf654470850ffce6ea542d2c9
+pydicom__pydicom-f6638ffb3dd7d0e356ed1c04b2b20facc4125c19
+pydicom__pydicom-fce985ce4134a5e1f8716dde684a41e6d21916cc
+pydicom__pydicom-fd168e5871e8b302b15415743a079e7b1a83e9be
+pydicom__pydicom-fd83de4031b08568af707d2b615a07710f9cf030
+pykale__pykale-7ba8e4fd06b2b5d7c8a04ebcb58b0d2abbfa2b08
+pykale__pykale-7fd32df22f4423b49e73ee422aa96b173b91e391
+pylessard__python-udsoncan-0d46c4bfc1b8501e0d27a7ab756c481a9949b4c4
+pylessard__python-udsoncan-5b0acb957c2c1d361b97d248dfcfb7a1fd93a6a0
+pylint-dev__astroid-3db2bd943fdc16439d94b8634007eaf78c075536
+pylint-dev__astroid-583b0c5928bfb7674f442f14888d5fd6d6651c53
+pylint-dev__astroid-6dba72cde6171bc1d1a4131a81a209ac9bfdf76b
+pylint-dev__astroid-86018d37c187f94b9ae26b102bfe0686f9d8f90b
+pylint-dev__astroid-92fe8294690a3f83eaadaa63c3ec5cbd5ca8c90a
+pylint-dev__astroid-a99967e0bf7cc89dd3677ec58a6861529d269f5d
+pylint-dev__astroid-aad8e689943e7ea106c6a88624812c9946ab3c06
+pylint-dev__astroid-bf4d420babda9d64596a9131b5950fa36dbc487d
+pylint-dev__astroid-d174ca24bde0bba7df63f024124381efe908330d
+pylint-dev__astroid-f25ef82afa4afe88135296c3cf347274f95db58e
+pymedphys__pymedphys-13147d840030786491ab09a0275c0114209b46de
+pymedphys__pymedphys-14f59f654f27f74b5a9697b6b5fe1386ad047091
+pymedphys__pymedphys-3bef37afa3188e321145b1367b227b34bcbb6ca9
+pymedphys__pymedphys-48a2f43aa8e82fbdb9d14a88773dbf47752eee78
+pymedphys__pymedphys-7f1ac95ccbe0e359302e93a4ea6e656dc1aee527
+pymedphys__pymedphys-ba24814521fe9a68f0b036a996322b78a2259dc7
+pymodbus-dev__pymodbus-420f700bad1ae01d69b4539455bde82ae91c04e4
+pympler__pympler-243fe00e44838acf74b80a5cc6533f1ecda62214
+pypa__auditwheel-6fdab9f6c3f3420222621398f25ee543a3eed570
+pypa__auditwheel-71962861bf15464dac13410896d2806bcb4b01a7
+pypa__setuptools-0f513c1b6634768263b9bc82c6167679400bd8e3
+pypa__setuptools-scm-056584b49f039f0913bd6ee5bb5a5befdb396dec
+pypa__setuptools-scm-06ef8d88e273c808f202f0b09b7dd10750a7c0ac
+pypa__setuptools-scm-0e63913832070884130fec846cd78238e90720bd
+pypa__setuptools-scm-3e7b6dcfef735761f9be375b10ffe1ee6de8ff31
+pypa__setuptools-scm-4bf98fcad99d0773eb08131b313f1d86282f0167
+pypa__setuptools-scm-502903cc36c798755d7d9872fcbae702d7a0376e
+pypa__setuptools-scm-58e1f228d6c757248148dcfb8d911b724f303f9c
+pypa__setuptools-scm-62ae6400205533fb4b355170a11295e49b366d23
+pypa__setuptools-scm-72e25f77cf50b70c347981c4b5219604f0be9981
+pypa__setuptools-scm-951ad9f9ee1f9d7a08fce06fadf74f6b282e9604
+pypa__setuptools-scm-ee8ce47c873f7a4649d6db6fc53a4520cf21f190
+pyparsing__pyparsing-640d75bfd958550e9ee2bf4b7637411e68babe58
+pyparsing__pyparsing-827f615719ae83800e4252593da5b9d05a97e11a
+pyparsing__pyparsing-a49e56932a851f63859adf8735dcdd993e16657c
+pyparsing__pyparsing-af4ba2cc45afe2fb89ea1ad81317ad8da5c6b89f
+pyparsing__pyparsing-db302309628c9aa4604092cd1642d708399d3e3a
+pypiserver__pypiserver-8b1979031e5fadf3b2303e70ee5ab38a0c71dbd5
+pypiserver__pypiserver-c21cf72c25b2a952d030aef31ed0a28edffa5ff6
+pyserial__pyserial-0cdab80128e25a739e8669aa66d3eb24904412b3
+pyserial__pyserial-bcbfcddd4e70ba2ada267c49574f1902f4c1c3e8
+pysimplesoap__pysimplesoap-4d3f7fe26b10c1bdb18bdadb4ff3960327381112
+pysimplesoap__pysimplesoap-987e5613200518488657dd36ecb6caffd5437f03
+pytest-dev__pyfakefs-01e7b5c035a9734f3679c7f6d3198f89c54adddb
+pytest-dev__pyfakefs-0fb50dd162f87121431540b9f962bcdda647013f
+pytest-dev__pyfakefs-16a500f23985803a27211ce612771c6a82ade2f8
+pytest-dev__pyfakefs-26e8b72f24dcd33782be9f8bc7558d8e2096ff50
+pytest-dev__pyfakefs-3852d0f9fd5dadcd1794d8c9320e3f0777bb53de
+pytest-dev__pyfakefs-4dc8615957dadfc64d6a8f864ee93c7c65da38b5
+pytest-dev__pyfakefs-5f8f0e85c0e873dfa91088c953e68f9e26808bfa
+pytest-dev__pyfakefs-80daca8d0b8b27fb91f621ad36d0a54b13164ed4
+pytest-dev__pyfakefs-816d1142e1fb67bbc7526cd8f5f061e00ae8b5b4
+pytest-dev__pyfakefs-8a4047fefd682e4dda6acad8175567c2a63564d9
+pytest-dev__pyfakefs-9f486bcaa6fcd2ba4c77db1a668b21178a38169e
+pytest-dev__pyfakefs-a4df61d4699605b262a6eb6f7b07148975979ec5
+pytest-dev__pyfakefs-a6617e558dfc703777ff01b734cad1a0c0ef8935
+pytest-dev__pyfakefs-bbb7ad60cd2a2b2ee262aa3b066626a34838a1cb
+pytest-dev__pyfakefs-bbba0c626746f8cb93caf42f11fc85fa387d675b
+pytest-dev__pyfakefs-bc7438461f9a1aa74eda40d9f9d72962581cb447
+pytest-dev__pyfakefs-c5a5dae042231e60cf50622a7fd8c5db12c41fac
+pytest-dev__pyfakefs-c640ddc48206ad97ab9bb4ec22c86c70788512ff
+pytest-dev__pyfakefs-c88c85aaf2e19c29b40d41276a764fa87753ce44
+pytest-dev__pyfakefs-ca9a35686b20a2a43dc5ede526eec185e9e4cd31
+pytest-dev__pyfakefs-d3b0b93e11e93ba27e5fa12c75d9f453aaa25db7
+pytest-dev__pyfakefs-de8e415d50d36c688de33c70b6799aada8c9b23c
+pytest-dev__pyfakefs-e8ae5932a3f66b0b30fd939b34af969b5c57392c
+pytest-dev__pyfakefs-ebbaa7374dc225a32ab6c27cad9753104212c286
+pytest-dev__pyfakefs-edd6a6ccc1106dcdb6f619842b4c508b007c55bb
+python-jsonschema__jsonschema-1f9a9d60ef4f1d09cc0faaed285934fceaa825a3
+python-jsonschema__jsonschema-3c7a1b65684d4bef4a9a546ade304ddbbf93766c
+python-jsonschema__jsonschema-6b45db09f2b5dffd9972e4c1d92fa568e038fbd0
+python-jsonschema__jsonschema-705bb0c295984861bcbb4c67339ef05d3a00fa97
+python-jsonschema__jsonschema-ff05d77be9c6f6b14b54897ece28379f523e1b06
+python-mechanize__mechanize-107c8c3865b03fce20273d66bc6cf505883587dd
+python-mechanize__mechanize-9e37d2f1377c49a003a85c123df773c9551f7834
+python-poetry__poetry-24fcaf9d10da44f3dc58011ef7836fb6371570f5
+python-poetry__poetry-355ac95ad141dfc7f21014ffddcb655270ca578d
+python-poetry__poetry-4a8228781db17f92640a9b868f231bad5b4fb67c
+python-poetry__poetry-4c833892bc1907e6106f51a07f78d3e97d746b48
+python-poetry__poetry-9f93df1140efd44f37d07fc04fe5eb9abdc105db
+python-poetry__poetry-cd6da2c00e88d897c123170ff86484dbe41de841
+python-poetry__poetry-dd44419881773b5465281827622985b53bbf8fff
+python-telegram-bot__python-telegram-bot-b6dc16764e7b5b85ab53540a5d9cce71907e0e49
+pytube__pytube-8ff1168c03da04dff67eda0bf6b7ea0a017a475a
+pytube__pytube-e98516c5f0d73983759fe991002cbc917de9ca34
+pytube__pytube-f5188a15fd69e7fbd3ed5e257eecf092817c681e
+pytube__pytube-fda25d0b2b7eceb5c238263ca914ed1059c7a400
+pyvisa__pyvisa-1826404852609009310b420b8425393f7301d734
+pyvisa__pyvisa-26d88123cbdf9fe4a3c692d5a519193087f784b0
+pyvisa__pyvisa-645c1c648870dac4caffa2c65241638ef273f981
+pyvisa__pyvisa-fc1cb89e22f0a9749db5d76244fc0e47119ef0f6
+qtile__qtile-18af6f3197c38f769a8d9ebff7e21d1ed2eb4bc4
+qtile__qtile-22671721a4b50b1663557de4f872e3988b85fba5
+qtile__qtile-38ffa45258579975a4c7ffc0301a45217ec56600
+qtile__qtile-42b524df19dda54852c2ed0e9ec65eb875a24944
+qtile__qtile-4e0119c9faf3853c1c5257820e0ed2a9fb310deb
+qtile__qtile-c6d87d5c0d9d71243e81e4642da9bda5880ed8ff
+qtile__qtile-d7016e1dc27680437d89efb322d5e7db03e6b8fe
+qtile__qtile-e00f6c563d85f25ba243aa01532cd61510b7c0d1
+quantumlib__cirq-5919a17b6f8277baa196c4e99705a58b9922ce8c
+quantumlib__cirq-c58dd4d3225eea5a306ba110486779765f8989b4
+quantumlib__cirq-f4f9ac6a31a908020b778d0a28ed799dcd73c12b
+quantumlib__cirq-f636c5f0f3334cdc0eb69d9506119787a03af438
+quodlibet__mutagen-0c0c544c3efbef968dd8d54c1d0e1532d712a76d
+quodlibet__mutagen-187b98473f5293c1e52cd227daec2f5bd240065f
+quodlibet__mutagen-273edb8610086e159b0752164befd98be2916fa1
+quodlibet__mutagen-3c99737ecf1ab8fa24ac9a408fc1ae3d4f44b543
+quodlibet__mutagen-4aabfbae271ddcb14b131ad3d9fdadccd2a4ac26
+quodlibet__mutagen-9e3ff54b7413b36046754d06f7c50a110ee8327b
+quodlibet__mutagen-9ff77790090774bc3c633f74f58a063886368a8a
+quodlibet__mutagen-a1cef921de2df9e4efbf63118a6844c4439cb11d
+quodlibet__mutagen-bb752a8ce6d020cf7edb21ec7549372aba0a05bb
+quodlibet__mutagen-caf1a6c31b49fa84a15910450c8f9a3cc25e76a7
+quodlibet__mutagen-e393df5971ba41ba5a50de9c2c9e7e5484d82c4e
+quodlibet__mutagen-eb56beb422031fd3a881e1a1ff634d2efe3de04c
+quodlibet__mutagen-ed6846b77c107cfcd155f1a1d81cec1d7f38baba
+quodlibet__mutagen-f85f5122ac8b2c2796b9abbd140e87329843ad64
+r1chardj0n3s__parse-0477aa58673cd957c19d377e029347ce72c08b1b
+r1chardj0n3s__parse-07c2ff951edf387463853d9cdff9a858aff51ef3
+r1chardj0n3s__parse-126900688332414bfb4e3354860280dd61388bf7
+r1chardj0n3s__parse-15cd2b5626064abe43f2877ea027a46ba563b84a
+r1chardj0n3s__parse-19689cf5b4e0b025821be2e59e0bff0ab5977361
+r1chardj0n3s__parse-3b5a45cfa185cd61f77e01a5a055be46fb9fd37f
+r1chardj0n3s__parse-3cf6e15f836533d673ade028084ffc16e0369e6b
+r1chardj0n3s__parse-421c19919fbca4c61ec20c2f8292d19d93eecbc8
+r1chardj0n3s__parse-43f86c3475e792d01452eb2fc2f00a9ffe6d02b6
+r1chardj0n3s__parse-44e14b081e2682b13b0d449aad5b2be9016fff51
+r1chardj0n3s__parse-4f461fdc782782b175e1cf275940b18b6c99f849
+r1chardj0n3s__parse-54094bffaf3192c5d427d37b456b6281ebd6ce00
+r1chardj0n3s__parse-6cf8c8503b60c6c8d23b069fb2e4cbc52ce2ec2a
+r1chardj0n3s__parse-aee674d4156058030eefd3ee65821bc066f8da27
+r1chardj0n3s__parse-b3968131b9a3d89d5a3c38a20465ad8f1321ffcc
+r1chardj0n3s__parse-bc417de9de5d624ce79a2038ba9c9169fadcc5a6
+r1chardj0n3s__parse-c12b6980e11fe4b4331d16487ab5eafbe66990e1
+r1chardj0n3s__parse-f2424850d89839e534b860a0c1335a9892a0cc18
+rasbt__mlxtend-d6426f3c80e5168981c512282b83c4f86fca8ee3
+rasterio__affine-32448bb77451ab02dc07ab81f902387e34701a5a
+rasterio__affine-3d1a493ae070ec88c92bfc919e580fe25e65ac6f
+rasterio__affine-451f78d21595480d36252a31bbb32233c6d1e9dd
+rasterio__affine-d10d02a417a8416adecaf7195b560e0884197789
+rasterio__affine-e90718c6464b1efd7d6aaf1ebc1e86b85032a2ea
+realpython__codetiming-04754ef039dbd45b358552ee6c6c20f647b7e1a0
+realpython__codetiming-8f9fb3682ccf3c7245b992df021f14ee9c64a5c6
+realpython__codetiming-95e6bda2b6f6a93288ff4a6f9d220cf4a22ef131
+realpython__codetiming-d618696cb421a1e4bb56f14d46aabade188c46ff
+reddit__baseplate.py-e2819f09f99936d2039e63450ed09253058f330d
+rg3__youtube-dl-21924742f79ccbd62d16ef4120518c6a5da8614e
+rg3__youtube-dl-711e72c292327674c4a0593fdbb83d6347738ec9
+rg3__youtube-dl-c384d537f882efab10a78a56ce6dcb0a30f54b47
+rg3__youtube-dl-eceba9f805e395429d1850ff2a339728c9dfed7f
+rhinstaller__dasbus-ea0e0e0a10a7cd3aa3c1993d9325eb05a8505562
+richardkiss__pycoin-22daa265f1bcc29c05471cb5021de099dc5cd6b6
+richardkiss__pycoin-2f0c85ae0070a4e21c47e17e7911d416d02de8d4
+richardkiss__pycoin-367a58e25aacf85549a7335f7607ba8a53727c81
+richardkiss__pycoin-587e05f31c8845404d944f37aeb4b5081441f115
+richardkiss__pycoin-777126e33e5b9ded17ddf7ad0028ecf61ed3aea6
+richardkiss__pycoin-d25432c435c6c2d773a9567763f8f1784ef22221
+riptideio__pymodbus-420f700bad1ae01d69b4539455bde82ae91c04e4
+rm-hull__OPi.GPIO-c12d4cfc88d7ed886435a9144878390c6b929b7b
+rm-hull__luma.core-1b3f95b2ae9d2707ca2b1c4a4799fafaf9782503
+robotpy__cxxheaderparser-0280e8d7e190eef0180152dc693a0689d3a7338e
+robotpy__cxxheaderparser-04ba4bffae43f142dab79a698611d8432bcc8f1f
+robotpy__cxxheaderparser-0e732f1d43ac825b1093c984c493e2d783663a82
+robotpy__cxxheaderparser-20e83a9b79aacc2cdcbe91361d9fbad42721cae8
+robotpy__cxxheaderparser-3938d0ffefd80028f038ca8a05ce565a74a3719a
+robotpy__cxxheaderparser-3abac6d2059bf92ab0731f4a84fecac6dc94f9c1
+robotpy__cxxheaderparser-420f80d0b923158f36d9030d35bcc348822f5409
+robotpy__cxxheaderparser-4a5af8703034146d0900a29b62990c67669bd702
+robotpy__cxxheaderparser-4b1daa09f9cbab34d32a26fdedbedc41c795357c
+robotpy__cxxheaderparser-4fb94b270217230c3f8467ead1d68e0ddc3b2cbe
+robotpy__cxxheaderparser-544c253a77d0f706418ee61b986c2b246d4eaf1f
+robotpy__cxxheaderparser-5ed4baf63c000259f671fc86cba152f2dada98b0
+robotpy__cxxheaderparser-626cb35eb1f2b0dace5e9032006bf989e68962fa
+robotpy__cxxheaderparser-64c52903181104921653baf75737d4920e657d58
+robotpy__cxxheaderparser-6ac0bdb4e35758f23f35aaa8ab52bdd4d01263a2
+robotpy__cxxheaderparser-7618014951071a44c6caa2782379b7bc8b5ede25
+robotpy__cxxheaderparser-7aac68c1025473bda98141e3ca5fdfde34c45429
+robotpy__cxxheaderparser-7f6ae6bcbf41f97b7d4be5bfda699ba277f02844
+robotpy__cxxheaderparser-88dab86a9e1374ebb982dce355bdb6608fdcb2cb
+robotpy__cxxheaderparser-914838c970cb138994d08b3f630dcf8150ca5a32
+robotpy__cxxheaderparser-a25bb077d70791b3080a72a617ad1f07ae83ccba
+robotpy__cxxheaderparser-b09f07906fb399e305d8400c8275b3ab5846916a
+robotpy__cxxheaderparser-bcc57c72c08440d090b90c959c384b10191e05e8
+robotpy__cxxheaderparser-c5ca9aa02c14137f37e20bb94c6d423ba9d039a3
+robotpy__cxxheaderparser-dffcbf90341607080c5a1eda8265ec9686440f8e
+robotpy__cxxheaderparser-e750418d083969cdb8238dd6f0314c18d2c11c6d
+robotpy__cxxheaderparser-f1708bf9b882b29bab47466b854c340c7afc8129
+robotpy__cxxheaderparser-f9e19de5af9587c57b317a567aa6d9c75ec61329
+rocioar__flake8-django-1e0d0ef2e54421c9092f91d4fdf8a4d4e61d2095
+rocioar__flake8-django-3a0bbec212e4865c0bc46f8708d5a62162148a06
+rocioar__flake8-django-e67748aa51baa773f0524d2d96e6c2866d7dd01b
+roniemartinez__latex2mathml-39d9efacc7713819a1ddee3cbdff7730b995f333
+roniemartinez__latex2mathml-82d39e9daf4f19ce9169e7be41c7d3b789df5e64
+roniemartinez__latex2mathml-983dec909c27f5013342aa8ecd34a2b0695e1039
+roniemartinez__latex2mathml-b268133858add556fbb7aa4c9e20cb42db0024d0
+rossengeorgiev__aprs-python-e17efe2a2984e69d6010e0cfcde6f5f1778776da
+rr-__docstring_parser-0517619a6c0ca92ccf0c91ae7816688bf7b3a8a4
+rr-__docstring_parser-10a9183c898e3ff4472d707cc411482da7ef709e
+rr-__docstring_parser-51c2b6a7d347b42c8564986d89208af9251d5c5f
+rr-__docstring_parser-56258de7f5e6ba39c1985b2202889dbd0a4dfb4a
+rr-__docstring_parser-5fac292abc696d71641d7cc51f801247b46e0d3b
+rr-__docstring_parser-a12cca9b80fb2404f7625a3ad052b2b7d3a130d4
+rr-__docstring_parser-af0a11d297e0c370175a754e9cdbe96154a5501a
+rr-__docstring_parser-c2f332c5ae915018223304acac4103438e256c56
+rr-__docstring_parser-e44a47c06625e340a59465c0b6bac0443ebeee0c
+rr-__docstring_parser-fbe533672a4bc980edb607598d0b407b4990fed5
+rsalmei__clearly-50ac7d09d0875be8ef128a3e86de563dc871aaac
+rtfd__commonmark.py-66d0ed37424fdc3f5e1b755336871904f7eca6dd
+rtfd__commonmark.py-785d4114d1aea9af6335106458ad8db9757b5165
+rtfd__commonmark.py-8a83fdd76cfd4a21b3a2744b357b95768e223737
+rtfd__commonmark.py-c394271b34197f03cd993b603bf887a25de12d37
+rthalley__dnspython-06b1f9cb3fdefb82447a0c0985800b68e65190de
+rthalley__dnspython-1957961b31725209528f5efce6daa8a5047ab33c
+rthalley__dnspython-1aeec724042b0af114ebf3f9966e7ea4be1dad33
+rthalley__dnspython-1c4147623e5dda163c89ac45d645fb6eafcefa70
+rthalley__dnspython-1e7389f1fc1f2f7d405553c32525ee21b94c3a45
+rthalley__dnspython-1fa786055af872560b295e6a568169dca6efeabb
+rthalley__dnspython-280588bc99c88783a71b87c34054260a7febfe3e
+rthalley__dnspython-2ab3d1628c9ae0545e225522b3b445c3478dc6ad
+rthalley__dnspython-2b4134ed9f8358e61a342d632b96abdec50161bd
+rthalley__dnspython-2fe1a285f883e4b47892e58d6e1affd5b5e95bac
+rthalley__dnspython-303a0796df91c846d5adc759147a48097a571d7e
+rthalley__dnspython-3676249111d1b799f2e0ff8f2109a9a2ce8e6ab8
+rthalley__dnspython-3f83a8d0ef37fa95a35881d4a7abb8ba86b263bd
+rthalley__dnspython-3fbb41abf77ae09f0792cfa2c724c60611c39b0e
+rthalley__dnspython-5171f9cd482e4ff31ca31c5b908940c4529acc14
+rthalley__dnspython-51f1583cee65275c5af5735df6f8a737fc87cce5
+rthalley__dnspython-57ad9da358209ed37b6cf3f39d1b27359c2916a6
+rthalley__dnspython-5b7f0e1fc1779c5c866c850b2cd0b6cde465268a
+rthalley__dnspython-5c586017087c038572a63b41b5da96e7cad063e7
+rthalley__dnspython-5cc5b3c7a435d5a9dd63691dd7f54babe65d1922
+rthalley__dnspython-63aa46c1a69912afb3cf814b6ca5c7c04f5ddf98
+rthalley__dnspython-676a8ed33896edb1e1526c3128d11faa03140471
+rthalley__dnspython-692e915307692f5f207b628005eeb73c69e2fb34
+rthalley__dnspython-6e4bb277eb04d8b7cf4a93624d7da21150565a83
+rthalley__dnspython-720b2734b8d103908d22fec6aad6d8ac6cd7e5ee
+rthalley__dnspython-86dede4fba913190c6b001bf7156393f1bd474b6
+rthalley__dnspython-8834ff10fdf0814e970492a49b76ae717f6a1b1c
+rthalley__dnspython-890900876f5b08e03af4c3ef138b6f4a255065b1
+rthalley__dnspython-8c17a7bcf733af17bf2931ad567efc2f92a79ee6
+rthalley__dnspython-91d329a748c4d57c94ab2fef977d75d64b6bb66f
+rthalley__dnspython-925a669f0f15f00908d3e066dbbc461852c06819
+rthalley__dnspython-9ed0320f1f150065edfbd818be939d1b8d1729c3
+rthalley__dnspython-a523cc0fd7f18d4f54b242404d2779a07e9169da
+rthalley__dnspython-a59fd5b7f7dd03f595346a36832ca9e81f754171
+rthalley__dnspython-a7604f891512ca99141c2068a4c57af45db62880
+rthalley__dnspython-a977e61aedea3d6d72c715a55bb5db097496f607
+rthalley__dnspython-aad6d8174d9767becba3c348dc469d680a55feb7
+rthalley__dnspython-ac3f05d0d5b61ba46444cb9e66deb7357ff8522e
+rthalley__dnspython-ad4339abc35a6f636a911273c33f1c797e170501
+rthalley__dnspython-af1689ab2c596665e6ccd792fe541932c61c1fe4
+rthalley__dnspython-b62932b1b4b687b840fcb81ae2102f472afc1913
+rthalley__dnspython-b82af32327ed9017783df82e38cb91d88d7d0c27
+rthalley__dnspython-c2d2a7b726ddd8e283a8bd4f35ad30e6c5e69e7b
+rthalley__dnspython-c7613943d93986ac23cccff7350c42a32fa5b3bd
+rthalley__dnspython-c9ada20e2f9092b0ab19e6cf7610ae4bbc17d435
+rthalley__dnspython-ce72b4acf5d67f89aa1eef1ccb316a8d6cb19bf6
+rthalley__dnspython-d90d6a6ef50e6b65e6b4aa3d885da90e25325cd0
+rthalley__dnspython-de34dcb37b13e8b7429e4bd8e7ae88a3d75122d9
+rthalley__dnspython-e4ccb0e27ff163a2967530f0356bb4e8c0b5d14a
+rthalley__dnspython-ed34c2358a96613507afb03df544e3f349fa4330
+rthalley__dnspython-eeb566672f29c6f3e73fea0d38554fe58bbaaa28
+rthalley__dnspython-f5d8cc566ededacfe4ea2cade6445e25b5fe0fe1
+rthalley__dnspython-f972afd2d38d4d17d2899cd48dae7b3a4cd7647c
+rthalley__dnspython-fe40166488af2699a26f7dcd2f6618da20d7a4d6
+rthalley__dnspython-fed4e0c5371ed513dbc2d4ad477ce1bd1c940114
+rthalley__dnspython-fee25b8ec2dcb323c33a6257099a23804a95a215
+rubik__radon-613b98657818253ca825bf385a801aa110805d6b
+sartography__SpiffWorkflow-299c2613c2b6bfff50f3f34f0562b9243e1122ff
+sartography__SpiffWorkflow-7211e67ee0dfecbabaeb7cec8f0e0373bd7cdc10
+sartography__SpiffWorkflow-7b5338902e3fd42b591102cc6a8d6b77552004a6
+sartography__SpiffWorkflow-80f85be42671a4074260c7f75147bf8ce7a53ae2
+sartography__SpiffWorkflow-98c6294f1240aee599cd98bcee58d121cb57b331
+savoirfairelinux__num2words-096cb45ad9f549293d0756d53939d84c0f542341
+savoirfairelinux__num2words-13c5b1c8d1c01ddf93799f8fe3f783b7a6599883
+savoirfairelinux__num2words-1a2b783d31667db52a27e498475d366b8553c733
+savoirfairelinux__num2words-1a60f145df253f83ca129b74f7eb14f4e5885619
+savoirfairelinux__num2words-282f72dd2ff226bc14ca6c4234b661eaac7ed8aa
+savoirfairelinux__num2words-39f522f34a22ff5b7568ce26f3ba88489ba9983e
+savoirfairelinux__num2words-3f5f6163cd1efcba3a7b78a8386c70f3da3a4521
+savoirfairelinux__num2words-424cf9fda8ad5257012da442a549d6c6c76bd1e4
+savoirfairelinux__num2words-48dd5bd0f7c9b1297f3214d151d8472f2d0436ce
+savoirfairelinux__num2words-540c5bdfd2433c7a94159781290ebfcb06537336
+savoirfairelinux__num2words-551a980e544407c618a18c8e29eeb7f40fc013f0
+savoirfairelinux__num2words-64492d2bb0fa971375cd6d77032f51e2daad1a51
+savoirfairelinux__num2words-659920c881bfbc598324a5d0dd3ab77bf0a7e03f
+savoirfairelinux__num2words-66a47e24234fa09692836db66abc37595a666928
+savoirfairelinux__num2words-710a3b60c1f769a86d8b41951b4bb8b7c5c91050
+savoirfairelinux__num2words-75c14898745212e9ffcad0cebb6bbe96b5eee433
+savoirfairelinux__num2words-7bcb5ab84d576a015c27c2c41569dc8d1409951e
+savoirfairelinux__num2words-7c86a85d256209236c51435aef195ac7de8d24a8
+savoirfairelinux__num2words-7df3db93a3e2b30ee0cc2584cff99cea4bb84d11
+savoirfairelinux__num2words-8061cf3b20c69d7272ab2d20193b0eae80f24b2b
+savoirfairelinux__num2words-83cfcdc999d7834f6e79e0472e5f555ca67d4c3c
+savoirfairelinux__num2words-872510dd8bfea767916067f60856fc9c360059fe
+savoirfairelinux__num2words-8816154db5be79860fc3676ac3f538425fe344f5
+savoirfairelinux__num2words-9a31d900e351915f540f2bcf097d0eab47fcbd64
+savoirfairelinux__num2words-a1a3c53b39ff0cd6bc6db7489eb8ac2abf669cd8
+savoirfairelinux__num2words-af49bb360f324207f0f9f10b8fc82f045f8c9477
+savoirfairelinux__num2words-b492530cfaf7f73142cadca0569156c95554b22b
+savoirfairelinux__num2words-b77414053b69fd3fdf0c5131e215d071f6ec5f12
+savoirfairelinux__num2words-b8a1d3168ef76a11b8932b4c3cb14e7ed5957d50
+savoirfairelinux__num2words-beca211923e2843e64f7237e5da2d9e930e76af6
+savoirfairelinux__num2words-ca33d8ba98f4164ed9f2c799a12db7b6b301579d
+savoirfairelinux__num2words-cab3dd83645ef2e186bce7e4345cd06ef14871cf
+savoirfairelinux__num2words-ce21cb9f1806268834a8f9b5ec4e80623d580438
+savoirfairelinux__num2words-d09862790503a0ec03f3c3ffb2f70e03c41ae2f6
+savoirfairelinux__num2words-d1c2f94132cc4334a7b9620f02fee20cef179130
+savoirfairelinux__num2words-d41b1b6b07bd8d69e7a8b27e3522b3783715ff38
+savoirfairelinux__num2words-d8c199b00c1d64252590c5333f87de2e211664cb
+savoirfairelinux__num2words-dc733cfa1b191a0ead7ae35051f98f1ab963cf46
+savoirfairelinux__num2words-dd25a8b4bf8f59ceec97f826c46b78aa06fbabc5
+savoirfairelinux__num2words-efce6319445cc3e786832564f37aebb7df7c9cff
+sdispater__poetry-24fcaf9d10da44f3dc58011ef7836fb6371570f5
+sdispater__poetry-355ac95ad141dfc7f21014ffddcb655270ca578d
+sdispater__poetry-4a8228781db17f92640a9b868f231bad5b4fb67c
+sdispater__poetry-4c833892bc1907e6106f51a07f78d3e97d746b48
+sdispater__poetry-9f93df1140efd44f37d07fc04fe5eb9abdc105db
+sdispater__poetry-cd6da2c00e88d897c123170ff86484dbe41de841
+sdispater__poetry-dd44419881773b5465281827622985b53bbf8fff
+sibson__vncdotool-4ea0ae476c65984c89b514f187aaa940ea8147b2
+slackapi__python-slack-sdk-110603e61b012cec3ecb776ed59ff37ebd24eeb8
+slackapi__python-slack-sdk-223b2858151fbd71c5a53c430e33cd6aae383727
+slackapi__python-slack-sdk-2afeba6b1c2eb4d950a4035a2a07933f808992b9
+slackapi__python-slack-sdk-6c281d6a2931c6e30394805998cfab129ae5d524
+slackapi__python-slack-sdk-86faa330680d5e383c8f3f4ffa3234e14c1a3b3c
+slackapi__python-slack-sdk-93fd69a297b05162647cf3e3f00570f6febaa933
+slackapi__python-slack-sdk-94a00d2cd5b68eef0a274cbccbd56eae9e43f7b0
+slackapi__python-slack-sdk-961706e561439b0da52766ae944a855cedb90313
+slackapi__python-slack-sdk-9967dc0a206d974f7ef2c09dd6c49f70b98ecf1e
+slackapi__python-slack-sdk-9c2ae69fdf99793af3a98228f77cd004c7b849b6
+slackapi__python-slack-sdk-c496631e2371786fba8486114887baa2f2364272
+slackapi__python-slack-sdk-c82c9a0ff0c00f8f5888c86697602f5afabd7ee1
+slackapi__python-slack-sdk-ff743e2d9f5f45b7773c36ac9d3693b8526d8cc8
+slank__awsgi-11e5dbe76e44d9913a5f4d4dbef44371e2fe27d6
+slank__awsgi-4551548c8a8ae9b52787fb92fdc65efb44b928c4
+slank__awsgi-df33d9f4969f62cc9e3019f6e778c9567724e7da
+snapcore__snapcraft-37eda99da537cde8293275b3f1ec389f088dab37
+snapcore__snapcraft-64ff6637130767251f52a086618517b2c7e3f845
+snapcore__snapcraft-9fafbfc9c7b0e0f6586224ce539f1475bc78bb7b
+snapcore__snapcraft-c01429c729eb6bc26e5d62479797c8a22d821642
+snapcore__snapcraft-d905e128c64a0d48c10e5514c6d01391c0aa2e6e
+snapcore__snapcraft-ed6f8718444cfa66e1f7b397473ee7772f352c62
+snapcore__snapcraft-fb95fd338ac0ed185bf35b5a7cdd0f7f40d64456
+snok__django-swagger-tester-3640761da93ec8921419fe717d72355d84a7cff7
+snok__django-swagger-tester-aacde4d5b80326a9d4155a49936dcfaea27a14cf
+snok__django-swagger-tester-d7ff46410a0e47572086eb5cf1ee13f396bee3c3
+snok__drf-openapi-tester-3640761da93ec8921419fe717d72355d84a7cff7
+snok__drf-openapi-tester-d7ff46410a0e47572086eb5cf1ee13f396bee3c3
+snok__flake8-type-checking-8370f521929998d7ef5f42c17930952542a48292
+sondrelg__flake8-typing-only-imports-8370f521929998d7ef5f42c17930952542a48292
+sopel-irc__sopel-106fe79580424ed58f6c0625a843e39a94836656
+sopel-irc__sopel-6edca1a9e666a20172d26f2dda965205c209c859
+sopel-irc__sopel-df24ec109fc00b43744ebd64edb7dadc9cc5abd5
+sopel-irc__sopel-eb23031ea7729836de6eaece61b42434a8b44fd5
+sorgerlab__indra-34821f90c1fac0c4b675a204e2d92a396f14b674
+sorgerlab__indra-843346ec62247fb4c6d3067dbdef48fcf92f4b87
+sosy-lab__benchexec-dfb74c8724d8ff2003cf4d46f9884e449a0535d1
+sphinx-doc__sphinx-020a1f918755eeba54c77bc1609aa1cd7036ecfa
+sphinx-doc__sphinx-159c26715be2f296b57338f37fcc6edd80719a7d
+sphinx-doc__sphinx-1852d0f087bf09227886c5bd7b144383ac5c6eea
+sphinx-doc__sphinx-1b39b2047988eaef6c0556b3bbd9f7f218a028a1
+sphinx-doc__sphinx-2364f169ade55916164dbeecbee656afb8fd549f
+sphinx-doc__sphinx-4475dab99e9eaa4677bbba464aef3dc607f9dd1b
+sphinx-doc__sphinx-467e94dc62acca1f517f60f35479aefb775f9f17
+sphinx-doc__sphinx-47bff3faea03b6b6901161947e54c1a5c9498f6d
+sphinx-doc__sphinx-48f67398389b8b338779bbd46becb15940e5036d
+sphinx-doc__sphinx-59d5f62160be0e3887d03604eb977262986fbd73
+sphinx-doc__sphinx-5d8d6275a54f2c5fb72b82383b5712c22d337634
+sphinx-doc__sphinx-62e9606d63c8bbb4964213fd6b427d1483847662
+sphinx-doc__sphinx-6ac326e019db949c2c8d58f523c2534be36d4e62
+sphinx-doc__sphinx-73dd9fcb9b9d29867754d5a220100ae6c1f4f972
+sphinx-doc__sphinx-7a4ce71f6b464b0f1d8f3c5af535f026b0051f0b
+sphinx-doc__sphinx-7ba762870f83175848ff1cd94a1b783ecde57f9a
+sphinx-doc__sphinx-87c931b05bd0b706d5aa7aaf15768ba7bbe0d6c0
+sphinx-doc__sphinx-8aa5edd585957ae28ec6a8d1a5a581d2865fc013
+sphinx-doc__sphinx-938d3732f82c7196f347738d433f125913c7e87f
+sphinx-doc__sphinx-95fb0e5e570481cfb5e98990f657e3ef0fc26adc
+sphinx-doc__sphinx-9c9a52d92bf8ef5282a5467186a4a56d32fe49ea
+sphinx-doc__sphinx-9ca942bef6cbebf7aaf999ed81e49fca336a1d85
+sphinx-doc__sphinx-a527c2ae302051d1b7a2807a740df756c77102d7
+sphinx-doc__sphinx-a66546895ed16d4b61ba82e0ff77a23b5816833c
+sphinx-doc__sphinx-abf42e901e46b4c73fa92a125549822c63909b44
+sphinx-doc__sphinx-autobuild-0c52892160d078f66ab2b31e5f83988db473deee
+sphinx-doc__sphinx-autobuild-c9b7cb990e9bec1c433f737329b92655adc39a9d
+sphinx-doc__sphinx-autobuild-cc58cc115f5b9a0db8f4a2313c07440b120c3c0d
+sphinx-doc__sphinx-c4b3dcbaf9f9a5d0895374981a9d222e6be094e2
+sphinx-doc__sphinx-ca2ab35d9469772c3d89c855e6fd6b772fe47f79
+sphinx-doc__sphinx-caeaea9028033cefb5681a369bdb03cdb1e4218a
+sphinx-doc__sphinx-e49fc778e45029a20d6f0d936bd0c6521773e9ff
+sphinx-doc__sphinx-ea5fc5957a0973ab0ad3f1d9fe15a3b94bbe5102
+sphinx-doc__sphinx-f26d492d6d70e9b512f07497ab0129450e411423
+ssato__python-anyconfig-116b677112e07974ba2e7bf075dac67b3d295591
+ssato__python-anyconfig-b69d66c59daca060aaab92a3e139ff8b5a6235d1
+ssato__python-anyconfig-cd3476f3bdb23a9cc8d8731597e92fa4857031b1
+summa-tx__riemann-3a0f9439d91103943ac3fbd03fb32bc98b0ff935
+summa-tx__riemann-55bdf9af286e7ee0315651ff975f0bfd374dcbf7
+summa-tx__riemann-619c744c10ad026ae650592e5992910820dd9caf
+summa-tx__riemann-f33cf6e9dd59b67bcbf94ac1e31250c54d6f3894
+tariqdaouda__pyArango-befc5e1e315327dc3ef498663d4fee136bcae0f1
+terrencepreilly__darglint-17345fdf781b0a7f470b366a2bdfb8a81edc3791
+terrencepreilly__darglint-2de01f4a23681fb9e9d1c9c6761bcab915c99930
+terrencepreilly__darglint-c907cc31370314c7496ef3ec1e46bfa75f949465
+terrencepreilly__darglint-d3083c167d8e0741bb091fa146dbde3e572a351f
+terrencepreilly__darglint-dd6a7271b475b7da9dde1cb4e9728d0e96f5b4c1
+textX__Arpeggio-333b347b7978117db7a2117a7250fbdbb6f3f2ef
+thammegowda__mtdata-47d2aac74fc40c0621b8e21483b298a274cf57fb
+tkarabela__pysubs2-02827aa46edfa58344e3d299003e9e1f03d157ac
+tkarabela__pysubs2-58bbf1d416c1c0a5f6b2808699dfec5dcbaacde8
+tkarabela__pysubs2-f6d18169fe0ac53a36bfaaac067d30daf97fd873
+tmux-python__libtmux-0c7f8c4279d2bf97548abf3792b1f1cde8d96613
+tmux-python__libtmux-7e97e50227c6d2b70c2391d4064b0c84e618a053
+tmux-python__libtmux-f9491e940e05513ae8a76118401daab3948beef7
+tna0y__Python-random-module-cracker-92a127d1239a1ef6fa0b54aa6c1ff16e831c4028
+tna0y__Python-random-module-cracker-958780e57c6c85c46fcdb0226f5a283b1e76b954
+tobi-wan-kenobi__bumblebee-status-fcbca12c354a2829bbb7952ee1c7587b723f5bc3
+tomerfiliba-org__rpyc-6bc3bf051aa408e6fc2f3262884507540cfd6817
+tomerfiliba-org__rpyc-99c5abe82942a8f629472ac5458fd3eedea93a01
+tomerfiliba-org__rpyc-dc71f0dd62517676957057e21a55b0f6e16691b3
+tomerfiliba-org__rpyc-f67319ea9ed693c69ebfc599bea3691677e31b6a
+tomerfiliba__plumbum-361db261c4793b8740e71f981ed2a7b5f0813747
+tomerfiliba__plumbum-6d2938253f30ba6fab8381d79de8e2088d5846d5
+tomerfiliba__plumbum-794475aaf9047dc325a2fdaa5fb506d0f12548d9
+tomerfiliba__plumbum-969adee23a3e62ad25730325a95ce19308448a53
+tomerfiliba__plumbum-99e0cfaf48b92960d40f0f267e6ddaa37fc9395a
+tomerfiliba__plumbum-9c66164972d48de47961f6264b4495fab45e0e57
+tomerfiliba__plumbum-b2a52579099837273f5b8ff97dec5860542850fa
+tomerfiliba__plumbum-b8c7c34d6738ae3083c6cc442d7564277befb10a
+tomerfiliba__plumbum-c43b2f2c052eced6a4876ae4fdcdb405d50492f9
+tomerfiliba__plumbum-d3bc4d0613ccc0cd7b632bc3d59db0c5e8ebdf55
+tomerfiliba__plumbum-eab1ad73390eaceca1eb1a7e360841235b0c51d1
+tomerfiliba__plumbum-efc2795d70a0d6f4a6f58ff15ff9552671f49f74
+tornadoweb__tornado-08082482392f4c2f3931eff265ad1929f1068347
+tornadoweb__tornado-0a39ba8b6ac0beb48a3244098cfa72ce1f59f215
+tornadoweb__tornado-0b7e700c1fe90f387602ad3305598b23833c30f9
+tornadoweb__tornado-27b3252bb0e0f26dc065b7534ff158ecabb4317a
+tornadoweb__tornado-37417f8d4db9d9fbdebe90c85a85b530b8659542
+tornadoweb__tornado-3d5464056126feda3a7dbe1840cc20cb660772b6
+tornadoweb__tornado-5132dd1aaa702267eb02371e0b5c03d729512e95
+tornadoweb__tornado-58a548272d17cac8895c269be8f2d5b5cf62e5e3
+tornadoweb__tornado-5976db7db6796ea75bfaec9d620b4ba3ff6f2023
+tornadoweb__tornado-63d4df4eefa6750bb14efa1ebffe67b8c54fbad4
+tornadoweb__tornado-7786f09f84c9f3f2012c4cf3878417cb9f053669
+tornadoweb__tornado-8cbc4bfa53874a5dfa7b4bc50971d2ee21baf2d2
+tornadoweb__tornado-924bd4c91ead50cf1850c2b45b7e7bd5c5cf6320
+tornadoweb__tornado-95821a167ac7dc4027f98d2c7766240f2912c381
+tornadoweb__tornado-9dea6dc43346749c221ad67b01c4165046c9f25d
+tornadoweb__tornado-aa66a678d97b6585f0299008dcb23135ec9a8d87
+tornadoweb__tornado-af8beb6cf19d13f54d73c97963586ef3afe6adc0
+tornadoweb__tornado-b109915b4e5738b00804096aed794165bd0614b0
+tornadoweb__tornado-b216ef43aa1acf80be5506018e3166cd32ae6e0a
+tornadoweb__tornado-b39b892bf78fe8fea01dd45199aa88307e7162f3
+tornadoweb__tornado-b5586f3f2956308a9dff1fba2c3ddbbbe1ab29d0
+tornadoweb__tornado-ba837c8c2beb2a30cc32462c06d66ffad052af82
+tornadoweb__tornado-bb614003a390f2a5ad26ab2e42b95098635d5ae1
+tornadoweb__tornado-ca54b0d61f2a6c28ca3c2288417862936c39a35b
+tornadoweb__tornado-cb710012d148a78840192d98b2548a5ba572941e
+tornadoweb__tornado-d30ef74020924be5f214091de95314ca3ce919af
+tornadoweb__tornado-daafe901975ff2f9ebd57be5b9bc3c5772fd0f9b
+tornadoweb__tornado-e38cbd431f8c4c0df2969c0153547481a9e239eb
+tornadoweb__tornado-f33ce9f65272664ed27b08f5db74d8458c58f606
+tornadoweb__tornado-f530dddde1de453367dfcf60a1ceac2664cf768a
+tqdm__tqdm-06268f81c281a92da7d7e28a7d9ff7a24f7a1057
+tqdm__tqdm-58c3766110fb2ebaf957ea16b542073b37b12a62
+tqdm__tqdm-76962311fd8a9c060b4149872b80bad51281dbbe
+tqdm__tqdm-f258cda4fc4b39134d03e29726d11b1c7c54bb53
+tryexceptpass__sofi-6cfde582d8f96b920a61e2296c006d151c8c82ae
+tweag__FawltyDeps-085860f4191328ad1386dff6645074d6226b8e6c
+tweag__FawltyDeps-ed2d0cce2bedb9343421cceb003d3bc5320c348c
+ukBaz__python-bluezero-1a2e1447c90f659a49717c47d16ac2f279052219
+ukBaz__python-bluezero-6187026db79030229445ce9cb95cc04c6b582197
+ukBaz__python-bluezero-7d79eb74b0a101390812b0621ae3a19ed0f3c863
+ukBaz__python-bluezero-85095a8e0ac0bc123f7c7eebd7a83db1c6de6cb8
+ukBaz__python-bluezero-f6f21aa2202a74880d348ce81b270ba89ca673d9
+urwid__urwid-2f80badfdd011dc3e96c95e51bf459b282f6d735
+urwid__urwid-64830ef20edc4ee2ee7b63a0923b0d337ed41107
+urwid__urwid-6d2393bbeed3757eea6cbb4b33a14cb9960e597d
+urwid__urwid-9e7ec1c69d33c7b365b081ca72074e6c6979c85f
+urwid__urwid-9f748c7fe98c20a6c1b55e28344a57b43209b046
+urwid__urwid-ab23c8bea814cbbc17bf5ace66abd62ab4c34243
+urwid__urwid-c3ca1affc41db182873b6e98841def6213ad12d4
+urwid__urwid-ed8074910d54d510ba30829c6bb7ed4c3b3e0a55
+vd2org__snowflake-2ec6f7f818d487ba9a69502f897cb8bf495e0649
+vivisect__vivisect-0269c6e08f350fb70809a9486d602671c67e5c97
+vivisect__vivisect-14d333a8eb5aecc905c72cdc8045ea6bf3cc48ce
+vivisect__vivisect-8afb0d615d5e05b74a6ebe98127d42d92920bb14
+vivisect__vivisect-ad941025683dd513759af8716298076d8f2963e4
+vivisect__vivisect-e29a86b4857c960139c898d4250d58e3d03ed1de
+vivisect__vivisect-ecc2866b3c8814f180ff70a27d0d26ce08e74fec
+vivisect__vivisect-ee5fbad1c33c14458171e52064dd4a20f2e664ca
+vzhd1701__evernote-backup-8bea1e614ce82455fed64f610c35996317830669
+wbolster__jsonlines-f31a4a5552f171623fc0b2c0a609b11416e135cd
+wolverdude__genson-c20313b5908d0de2344a2d772aa87b8b5ed5cc69
+yt-dlp__yt-dlp-196eb0fe77b78e2e5ca02c506c3837c2b1a7964c
+yt-dlp__yt-dlp-2af4eeb77246b8183aae75a0a8d19f18c08115b2
+yt-dlp__yt-dlp-32abfb00bdbd119ca675fdc6d1719331f0a2741a
+yt-dlp__yt-dlp-36069409ec7ed88f7571f29ff35a5a4c62b70cfc
+yt-dlp__yt-dlp-3699eeb67cad333272b14a42dd3843d93fda1a2e
+yt-dlp__yt-dlp-39d79c9b9cf23411d935910685c40aa1a2fdb409
+yt-dlp__yt-dlp-4c9a1a3ba56c2906f9ef8d768de7f8e5a2361144
+yt-dlp__yt-dlp-4ca8c44a073d5aa3a3e3112c35b2b23d6ce25ac6
+yt-dlp__yt-dlp-63c547d71ceae6be181948b4b6ce4180b16f4209
+yt-dlp__yt-dlp-6daf2c27c0464fba98337be30de0b66d520d0db1
+yt-dlp__yt-dlp-6fc85f617a5850307fd5b258477070e6ee177796
+yt-dlp__yt-dlp-7b81634fb1d15999757e7a9883daa6ef09ea785b
+yt-dlp__yt-dlp-8157a09d22f6f4310427a7155e737c2c1bc3aef9
+yt-dlp__yt-dlp-9d7ded6419089c1bf252496073f73ad90ed71004
+yt-dlp__yt-dlp-a8b9ff3c2a0ae25735e580173becc78545b92572
+yt-dlp__yt-dlp-b079c26f0af8085bccdadc72c61c8164ca5ab0f8
+yt-dlp__yt-dlp-b103aca24d35b72b405c340357dc01a0ed534281
+yt-dlp__yt-dlp-b4a252fba81f53631c07ca40ce7583f5d19a8a36
+yt-dlp__yt-dlp-b5fea53f2099bed41ba1b17ab0ac87c8dba5a5ec
+yt-dlp__yt-dlp-beae2db127d3b5017cbcf685da9de7a9ef496541
+yt-dlp__yt-dlp-d5f043d127cac1e8ec8a6eacde04ad1133600a16
+yt-dlp__yt-dlp-e99c0b838a9c5feb40c0dcd291bd7b8620b8d36d
+yuma-m__pychord-257feebde4aea7bc3f70368c25069506214118ee
+yuma-m__pychord-33b69d3d1612a23b87a32110eafd1832b48a989f
+yuma-m__pychord-3d85e71a6bee0c15b25ddda2c5685cc8807136a4
+yuma-m__pychord-43ced8f934aaf2c1cfba92ca90bd78555c187669
+yuma-m__pychord-4649465b0a819a6a47bc52fb908139406b06ea98
+yuma-m__pychord-4e97f8ae1361a810cd7f30bd9686d0381e451dc6
+yuma-m__pychord-5544015fbee994587bbd3a7c4a320ba2f9e391be
+yuma-m__pychord-56fd24c521c20b7fc20fb2d066e2af05182e91d5
+yuma-m__pychord-5ac3e99991e97052e54a26de190fa1f8f931a155
+yuma-m__pychord-67c7fb1a15a6982b4a1faf3a7d03484a1179d8c7
+yuma-m__pychord-697f08b559231aecbb7f3f1eb6b43ac8a6f569b3
+yuma-m__pychord-85ad8be18da9458006d9b975325dbc0493eb805c
+yuma-m__pychord-96ec5f1d6c36b284e22e246312daa370796accdc
+yuma-m__pychord-993f54a3400e5693bb4a77d11fe98d1306975712
+yuma-m__pychord-a0e65f04a1214ebaac714889791f9276406f1abe
+yuma-m__pychord-b7d186469c05ea18850aecd61c01a91bce3ac72d
+yuma-m__pychord-c7dbd2fcb94608ad4554ae711fab284742e7b89c
+yuma-m__pychord-e0ce1f4afadec1fe31d04de1dca7b6d8d0f29f15
+yuma-m__pychord-e143f2f5b578303edd2b3e70eb9d9368be6d3893
diff --git a/resources_servers/swe_next/diagnose_failures.py b/resources_servers/swe_next/diagnose_failures.py
new file mode 100644
index 00000000000..4176dd1626e
--- /dev/null
+++ b/resources_servers/swe_next/diagnose_failures.py
@@ -0,0 +1,234 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Separate golden-patch failures caused by the sandbox from failures of the row itself.
+
+This exists because `evaluation_completed` does not answer the question. A build that is
+OOM-killed, or a test suite that runs out of disk, still produces a parsed log and a verdict --
+the tests simply failed. That grades identically to a genuinely broken golden patch, so raising
+the memory limit would silently change the "supported" set.
+
+The signatures below are read out of the captured test output, so a failure is attributed to
+resources only on direct evidence, never inferred from the fact that it failed.
+
+ python resources_servers/swe_next/diagnose_failures.py results/.../pass1_job_X.jsonl
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+
+# Ordered: the first match wins, so the most specific cause is reported.
+RESOURCE_SIGNATURES: tuple[tuple[str, tuple[str, ...]], ...] = (
+ (
+ "disk_full",
+ ("no space left on device", "enospc", "disk quota exceeded", "write error: no space"),
+ ),
+ (
+ "oom",
+ (
+ "out of memory",
+ "outofmemoryerror",
+ "cannot allocate memory",
+ "oom-kill",
+ "oom killed",
+ "killed process",
+ "memoryerror",
+ "signal: killed",
+ "runtime: out of memory",
+ "fatal error: out of memory",
+ "std::bad_alloc",
+ "exit status 137",
+ "javaheapspace",
+ "java heap space",
+ "gc overhead limit exceeded",
+ ),
+ ),
+ (
+ "process_killed",
+ # A bare SIGKILL with no allocator message. Usually the cgroup OOM killer, but the
+ # evidence is weaker, so it is reported separately rather than folded into `oom`.
+ ("killed", "sigkill", "terminated by signal 9"),
+ ),
+ (
+ "too_many_files",
+ ("too many open files", "emfile"),
+ ),
+ (
+ "network",
+ # NOT "the sandbox has no internet" -- it does; Go, npm and composer all fetch
+ # successfully in the same sandboxes. This is an egress fault for one toolchain, most
+ # often a JVM on a dual-stack network preferring an IPv6 address it has no route to.
+ # Either way it is an environment problem, not evidence that the golden patch is wrong.
+ (
+ "could not resolve host",
+ "connection refused",
+ "network is unreachable",
+ "temporary failure in name resolution",
+ "etimedout",
+ "econnreset",
+ "proxyconnect",
+ ),
+ ),
+)
+
+
+def classify_output(text: str) -> str | None:
+ """Return the resource cause evidenced in the output, or None."""
+ lowered = text.lower()
+ for label, needles in RESOURCE_SIGNATURES:
+ if any(needle in lowered for needle in needles):
+ return label
+ return None
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument("rollouts_jsonl", type=Path)
+ parser.add_argument(
+ "--timeout-s",
+ type=float,
+ default=1200.0,
+ help="The configured evaluation timeout; runs within --near of it are treated as timing out.",
+ )
+ parser.add_argument("--near", type=float, default=0.9, help="Fraction of the timeout that counts as 'near'.")
+ parser.add_argument("--show", type=int, default=4, help="Example instance ids to print per cause.")
+ args = parser.parse_args()
+
+ if not args.rollouts_jsonl.exists():
+ print(f"no such file: {args.rollouts_jsonl}", file=sys.stderr)
+ return 2
+
+ total = 0
+ resolved = 0
+ failures: list[dict[str, Any]] = []
+ durations: list[float] = []
+
+ for row in _rows(args.rollouts_jsonl):
+ total += 1
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ durations.append(duration)
+ if row.get("resolved"):
+ resolved += 1
+ continue
+ failures.append(row)
+
+ if total == 0:
+ print("no rows", file=sys.stderr)
+ return 2
+
+ causes: Counter[str] = Counter()
+ examples: dict[str, list[str]] = defaultdict(list)
+ by_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ for row in failures:
+ instance_id = str(row.get("instance_id") or "?")
+ language = str(row.get("language") or "unknown")
+ duration = float(row.get("patch_verification_time_taken") or 0.0)
+ output = str(row.get("test_output") or "")
+ error = str(row.get("error") or "")
+
+ if not row.get("evaluation_completed", False):
+ cause = "no_verdict"
+ elif duration >= args.timeout_s * args.near:
+ # Ran to (or near) the ceiling. With CPU requests well below limits this is the
+ # shape CPU starvation takes: the work is not wrong, it just never finished.
+ cause = "timeout"
+ elif (row.get("test_results") or {}).get("tests_observed", 0) == 0 and (row.get("test_results") is not None):
+ # The parser saw zero tests, so nothing ran: the build or setup died before the
+ # suite started. Parser-agnostic, and a different thing from "the tests failed".
+ # Most often dependency drift -- an image pinned months ago resolving today's
+ # packages, e.g. cargo pulling a crate that needs a newer edition than its
+ # toolchain supports. The golden patch is not implicated either way.
+ cause = classify_output(output + "\n" + error) or "no_tests_ran"
+ else:
+ cause = classify_output(output + "\n" + error) or "row_failure"
+
+ causes[cause] += 1
+ by_language[language][cause] += 1
+ if len(examples[cause]) < args.show:
+ examples[cause].append(f"{instance_id} ({language}, {duration:.0f}s)")
+
+ # Causes that are about the environment rather than the row. `no_tests_ran` is included:
+ # a suite that never started says nothing about whether the golden patch is correct.
+ resource_causes = {
+ "oom",
+ "disk_full",
+ "process_killed",
+ "too_many_files",
+ "network",
+ "timeout",
+ "no_verdict",
+ "no_tests_ran",
+ }
+ resource_total = sum(count for cause, count in causes.items() if cause in resource_causes)
+
+ print(f"rows: {total} resolved: {resolved} ({100 * resolved / total:.1f}%) failures: {len(failures)}")
+ if durations:
+ ordered = sorted(durations)
+ p50 = ordered[len(ordered) // 2]
+ p95 = ordered[min(len(ordered) - 1, int(len(ordered) * 0.95))]
+ print(
+ f"verification seconds: p50={p50:.0f} p95={p95:.0f} max={ordered[-1]:.0f} (timeout {args.timeout_s:.0f})"
+ )
+ print()
+ print("failure attribution:")
+ for cause, count in causes.most_common():
+ marker = "ENV" if cause in resource_causes else "row"
+ share = 100 * count / max(len(failures), 1)
+ print(f" {cause:<16} {count:>5} ({share:5.1f}% of failures) [{marker}]")
+ for example in examples[cause]:
+ print(f" e.g. {example}")
+
+ print()
+ if not failures:
+ print("VERDICT: no failures to attribute")
+ elif resource_total == 0:
+ print("VERDICT: no failure shows resource evidence — these look like genuine row failures.")
+ print(" Raising sandbox limits would not change the supported set.")
+ else:
+ share = 100 * resource_total / len(failures)
+ print(
+ f"VERDICT: {resource_total}/{len(failures)} failures ({share:.1f}%) show resource or environment evidence."
+ )
+ print(" Raise the relevant limit and re-measure before treating these rows as broken.")
+
+ if by_language:
+ print("\n per-language failure causes:")
+ for language, counts in sorted(by_language.items(), key=lambda kv: -sum(kv[1].values())):
+ summary = " ".join(f"{cause}={count}" for cause, count in counts.most_common())
+ print(f" {language:<10} {summary}")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/resources_servers/swe_next/prepare_swe_next.py b/resources_servers/swe_next/prepare_swe_next.py
new file mode 100644
index 00000000000..9359f9d79f2
--- /dev/null
+++ b/resources_servers/swe_next/prepare_swe_next.py
@@ -0,0 +1,109 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Prepare TIGER-Lab/SWE-Next training data for NeMo Gym, from the Hub.
+
+This is a training dataset, not an eval benchmark -- there is no fixed/frozen reference split,
+and the output is meant to feed a training run, not to be scored against as a leaderboard.
+
+Writes only the rows already known to be usable: `data/supported_instance_ids.txt` is the result
+of a full-set 3x golden-patch sweep -- a row not on that list either never resolves, never
+produced a verdict, or resolves inconsistently across passes (see `aggregate_golden_patch.py` and
+the README), so it is not worth carrying into the training jsonl at all rather than shipping a
+row no agent run could usefully score.
+
+ SWE_NEXT_LIMIT=200 python -m resources_servers.swe_next.prepare_swe_next
+"""
+
+import json
+import os
+import random
+from pathlib import Path
+
+
+SHUFFLE_SEED = 0
+
+DATASET_NAME = "TIGER-Lab/SWE-Next"
+DATASET_FILENAME = "SWE_Next_dataset.jsonl"
+SUPPORTED_IDS_FPATH = Path(__file__).parent / "data" / "supported_instance_ids.txt"
+OUTPUT_FPATH = Path(__file__).parent / "data" / "swe_next_training.jsonl"
+
+AGENT_REF = {"type": "responses_api_agents", "name": "swe_next_opencode_sandboxed_agent"}
+
+
+def _load_supported_ids(fpath: Path) -> set[str]:
+ return {line.strip() for line in fpath.read_text(encoding="utf-8").splitlines() if line.strip()}
+
+
+def _iter_raw_rows():
+ from huggingface_hub import hf_hub_download
+
+ path = Path(hf_hub_download(repo_id=DATASET_NAME, filename=DATASET_FILENAME, repo_type="dataset"))
+ with path.open(encoding="utf-8") as f:
+ for line in f:
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+def _build_row(raw: dict) -> dict:
+ row = {
+ "instance_id": raw.get("instance_id", ""),
+ "repo": raw.get("repo", ""),
+ "language": "python",
+ "workdir": "/testbed",
+ "image_ref": raw.get("docker_image", ""),
+ "base_commit": raw.get("base_commit", ""),
+ "patch": raw.get("patch", "") or "",
+ "test_patch": raw.get("test_patch", "") or "",
+ "problem_statement": raw.get("problem_statement", "") or "",
+ # Provenance only -- grading uses expected_output_json (see verification.py).
+ "FAIL_TO_PASS": raw.get("FAIL_TO_PASS") or [],
+ "PASS_TO_PASS": raw.get("PASS_TO_PASS") or [],
+ "expected_output_json": raw.get("expected_output_json") or "{}",
+ }
+ row["responses_create_params"] = {"input": [{"role": "user", "content": row["problem_statement"]}]}
+ row["agent_ref"] = AGENT_REF
+ return row
+
+
+def prepare(supported_ids: set[str], limit: int = 0) -> Path:
+ OUTPUT_FPATH.parent.mkdir(parents=True, exist_ok=True)
+
+ rows = []
+ for raw in _iter_raw_rows():
+ if limit and len(rows) >= limit:
+ break
+ if raw.get("instance_id") not in supported_ids:
+ continue
+ rows.append(_build_row(raw))
+
+ random.Random(SHUFFLE_SEED).shuffle(rows)
+
+ with OUTPUT_FPATH.open("w", encoding="utf-8") as fout:
+ for row in rows:
+ fout.write(json.dumps(row) + "\n")
+
+ print(f"Wrote {len(rows)} SWE-Next problems to {OUTPUT_FPATH} (shuffled, seed={SHUFFLE_SEED})")
+ missing = len(supported_ids) - len(rows)
+ if missing:
+ print(f" {missing} supported id(s) from {SUPPORTED_IDS_FPATH.name} were not found in the Hub dataset")
+ return OUTPUT_FPATH
+
+
+if __name__ == "__main__":
+ prepare(
+ _load_supported_ids(SUPPORTED_IDS_FPATH),
+ int(os.environ.get("SWE_NEXT_LIMIT") or 0),
+ )
diff --git a/resources_servers/swe_next/requirements.txt b/resources_servers/swe_next/requirements.txt
new file mode 100644
index 00000000000..2c9ef83ea2a
--- /dev/null
+++ b/resources_servers/swe_next/requirements.txt
@@ -0,0 +1 @@
+-e nemo-gym[dev,sandbox] @ ../..
diff --git a/resources_servers/swe_next/task_data.py b/resources_servers/swe_next/task_data.py
new file mode 100644
index 00000000000..6da1100215d
--- /dev/null
+++ b/resources_servers/swe_next/task_data.py
@@ -0,0 +1,31 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+"""Task-data schema for the SWE-Next resources server.
+
+Mirrors ``app.SWENextInstanceRequest``: required-ness follows the wire contract, not what
+``verify()`` happens to read.
+"""
+
+from pydantic import BaseModel, ConfigDict, Field
+
+
+class TaskData(BaseModel):
+ """One TIGER-Lab/SWE-Next task."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str = Field(json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ repo: str = Field(default="", json_schema_extra={"consumed_by": ["provenance"]})
+ language: str = Field(default="python", json_schema_extra={"consumed_by": ["verify", "provenance"]})
+ workdir: str = Field(default="/testbed", json_schema_extra={"consumed_by": ["verify"]})
+ image_ref: str = Field(json_schema_extra={"consumed_by": ["verify"]})
+ base_commit: str = Field(default="", json_schema_extra={"consumed_by": ["provenance"]})
+ patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ test_patch: str = Field(default="", json_schema_extra={"consumed_by": ["verify"]})
+ problem_statement: str = Field(default="", json_schema_extra={"consumed_by": ["prompt", "provenance"]})
+ FAIL_TO_PASS: list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["provenance"]})
+ PASS_TO_PASS: list[str] = Field(default_factory=list, json_schema_extra={"consumed_by": ["provenance"]})
+ # A {test_name: "PASSED"|"FAILED"|"ERROR"} snapshot of the whole suite on the golden-patched
+ # instance -- the actual grading signal (see verification.py module docstring); a strict
+ # superset of FAIL_TO_PASS/PASS_TO_PASS, which are carried above for provenance only now.
+ expected_output_json: str = Field(default="{}", json_schema_extra={"consumed_by": ["verify"]})
diff --git a/resources_servers/swe_next/tests/__init__.py b/resources_servers/swe_next/tests/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/swe_next/tests/test_app.py b/resources_servers/swe_next/tests/test_app.py
new file mode 100644
index 00000000000..3663de9eff4
--- /dev/null
+++ b/resources_servers/swe_next/tests/test_app.py
@@ -0,0 +1,378 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Tests for the SWE-Next resources server's grading and script construction.
+
+Grading mirrors upstream TIGER-AI-Lab/SWE-Next's own ``DockerRuntime._calculate_reward_r2e``
+(see verification.py's module docstring for why this is NOT a FAIL_TO_PASS/PASS_TO_PASS check):
+parse the "short test summary info" pytest ``-rA`` prints, and require every test
+``expected_output_json`` marked PASSED to still be PASSED. This file tests that parser and
+grader, plus the stable contract app.py depends on (build_eval_script, verification_files,
+run_verification, response shape, multi-worker entrypoint).
+
+Two classes here pin bugs that were actually hit building the sibling SWE resources servers
+(scale_swe, swe_rebench): a verify response missing the echoed request fields, and a
+multi-worker entrypoint with no module-level `app`. Both looked fine locally and both only
+failed once real traffic hit them, so the same tests are written here from the start.
+"""
+
+import json
+from types import SimpleNamespace
+
+import pytest
+
+from resources_servers.swe_next.verification import (
+ TEST_COMMAND,
+ TEST_OUTPUT_BEGIN,
+ TEST_OUTPUT_END,
+ VerificationInputs,
+ _slice,
+ build_eval_script,
+ drop_patch_sections,
+ grade,
+ parse_pytest_short_summary,
+ patch_section_path,
+ run_verification,
+ verification_files,
+)
+
+
+def _inputs(**overrides) -> VerificationInputs:
+ base = dict(
+ instance_id="23andMe__Yamale-113e5b0d3993ed291d92eff92893fadcaa58f413",
+ workdir="/testbed",
+ patch="diff --git a/a.py b/a.py\n",
+ test_patch="diff --git a/r2e_tests/test_a.py b/r2e_tests/test_a.py\n",
+ expected_output_json=json.dumps({"test_semver": "PASSED"}),
+ )
+ base.update(overrides)
+ return VerificationInputs(**base)
+
+
+class TestPatchSectionPath:
+ def test_extracts_the_b_path_from_a_simple_diff(self) -> None:
+ section = "diff --git a/src/foo.py b/src/foo.py\n--- a/src/foo.py\n+++ b/src/foo.py\n@@ -1 +1 @@\n-x\n+y\n"
+ assert patch_section_path(section) == "src/foo.py"
+
+
+class TestDropPatchSections:
+ def test_drops_sections_matching_given_paths(self) -> None:
+ patch = (
+ "diff --git a/keep.py b/keep.py\n--- a/keep.py\n+++ b/keep.py\n@@ -1 +1 @@\n-x\n+y\n"
+ "diff --git a/drop.py b/drop.py\n--- /dev/null\n+++ b/drop.py\n@@ -0,0 +1 @@\n+z\n"
+ )
+ result = drop_patch_sections(patch, {"drop.py"})
+ assert "keep.py" in result
+ assert "drop.py" not in result
+
+
+class TestBuildEvalScript:
+ def test_applies_patch_then_test_patch(self) -> None:
+ script = build_eval_script(_inputs())
+ patch_idx = script.index("nemo_gym_patch.diff")
+ test_patch_idx = script.index("nemo_gym_test_patch.diff")
+ assert patch_idx < test_patch_idx
+
+ def test_omits_test_patch_apply_when_empty(self) -> None:
+ script = build_eval_script(_inputs(test_patch=""))
+ assert "nemo_gym_test_patch.diff" not in script
+
+ def test_uses_the_fixed_r2e_test_command(self) -> None:
+ script = build_eval_script(_inputs())
+ assert "r2e_tests" in script
+ assert ".venv/bin/python" in script
+ assert "-rA" in script
+
+ def test_markers_bracket_the_test_command(self) -> None:
+ script = build_eval_script(_inputs())
+ assert TEST_OUTPUT_BEGIN in script
+ assert TEST_OUTPUT_END in script
+ assert script.index(TEST_OUTPUT_BEGIN) < script.index(TEST_COMMAND) < script.index(TEST_OUTPUT_END)
+
+ def test_slice_extracts_between_markers(self) -> None:
+ log = (
+ f"noise before\n{TEST_OUTPUT_BEGIN}\nPASSED r2e_tests/test_a.py::test_one\n{TEST_OUTPUT_END}\nnoise after"
+ )
+ sliced = _slice(log, TEST_OUTPUT_BEGIN, TEST_OUTPUT_END)
+ assert "noise before" not in sliced
+ assert "noise after" not in sliced
+ assert "PASSED r2e_tests/test_a.py::test_one" in sliced
+
+
+class TestVerificationFiles:
+ def test_includes_both_patches_when_present(self) -> None:
+ files = verification_files(_inputs())
+ assert "/tmp/nemo_gym_patch.diff" in files
+ assert "/tmp/nemo_gym_test_patch.diff" in files
+ assert "/tmp/nemo_gym_eval.sh" in files
+
+ def test_omits_blank_patch(self) -> None:
+ files = verification_files(_inputs(patch=" "))
+ assert "/tmp/nemo_gym_patch.diff" not in files
+
+
+class TestParsePytestShortSummary:
+ def test_reads_the_short_summary_section(self) -> None:
+ log = (
+ "============ test session starts ============\n"
+ "r2e_tests/test_1.py .F. [100%]\n"
+ "================== FAILURES ==================\n"
+ "irrelevant traceback noise mentioning PASSED and FAILED\n"
+ "============ short test summary info =========\n"
+ "PASSED r2e_tests/test_1.py::test_one\n"
+ "FAILED r2e_tests/test_1.py::test_two - AssertionError: boom\n"
+ )
+ statuses = parse_pytest_short_summary(log)
+ assert statuses == {"test_one": "PASSED", "test_two": "FAILED"}
+
+ def test_drops_only_the_file_path_segment_keeping_class_and_brackets(self) -> None:
+ """Real R2E-Gym reward parsing drops ONLY the first "::" segment (the file path) -- a
+ class::method id, or a parametrize bracket that itself contains "::" as data (an
+ f-string format spec, seen in a real davidhalter/parso row), must survive intact."""
+ log = (
+ "short test summary info\n"
+ "PASSED r2e_tests/test_x.py::TestFoo::test_bar\n"
+ 'PASSED r2e_tests/test_x.py::test_valid[f"{1::>4}"]\n'
+ )
+ statuses = parse_pytest_short_summary(log)
+ assert statuses == {"TestFoo::test_bar": "PASSED", 'test_valid[f"{1::>4}"]': "PASSED"}
+
+ def test_falls_back_to_scanning_the_whole_log_without_a_summary_section(self) -> None:
+ log = "PASSED r2e_tests/test_1.py::test_one\nFAILED r2e_tests/test_1.py::test_two\n"
+ assert parse_pytest_short_summary(log) == {"test_one": "PASSED", "test_two": "FAILED"}
+
+ def test_strips_ansi_and_carriage_returns_before_parsing(self) -> None:
+ """A real raw-dataset row (elastic/rally) has color escapes baked directly into the
+ surrounding text; upstream's own log_output goes through the identical strip."""
+ log = "short test summary info\n\x1b[32mPASSED\x1b[0m r2e_tests/test_x.py::test_one\r\n"
+ assert parse_pytest_short_summary(log) == {"test_one": "PASSED"}
+
+
+class TestGrade:
+ def test_resolved_when_every_expected_pass_is_observed_passing(self) -> None:
+ expected = {"a": "PASSED", "b": "PASSED"}
+ parsed = {"a": "PASSED", "b": "PASSED"}
+ assert grade(expected, parsed)["resolved"] is True
+
+ def test_missing_expected_pass_test_fails_the_row(self) -> None:
+ expected = {"a": "PASSED", "b": "PASSED"}
+ parsed = {"a": "PASSED"}
+ report = grade(expected, parsed)
+ assert report["resolved"] is False
+ assert "b" in report["missing"]
+
+ def test_expected_pass_observed_failed_fails_the_row(self) -> None:
+ expected = {"a": "PASSED"}
+ parsed = {"a": "FAILED"}
+ report = grade(expected, parsed)
+ assert report["resolved"] is False
+ assert "a" in report["mismatched"]
+
+ def test_expected_failed_test_is_unconstrained(self) -> None:
+ """The reference reward is lenient: a test expected FAILED/ERROR may come back anything
+ (an agent is allowed to fix more than the golden patch did) without penalty."""
+ expected = {"a": "PASSED", "b": "FAILED"}
+ parsed = {"a": "PASSED", "b": "PASSED"}
+ assert grade(expected, parsed)["resolved"] is True
+ parsed_still_failing = {"a": "PASSED", "b": "FAILED"}
+ assert grade(expected, parsed_still_failing)["resolved"] is True
+
+ def test_expected_pass_test_absent_from_parsed_counts_as_missing(self) -> None:
+ expected = {"a": "PASSED"}
+ assert grade(expected, {})["resolved"] is False
+
+ def test_ansi_color_codes_baked_into_expected_output_json_keys_are_stripped(self) -> None:
+ """A real raw-dataset row (elastic/rally) bakes terminal color codes into the KEYS of its
+ own expected_output_json, not just FAIL_TO_PASS/PASS_TO_PASS -- an upstream data artifact
+ that must be stripped on both sides or a clean fresh-run key can never match it."""
+ expected = {"\x1b[1mTestFoo::test_bar\x1b[0m": "PASSED"}
+ parsed = {"TestFoo::test_bar": "PASSED"}
+ assert grade(expected, parsed)["resolved"] is True
+
+
+class _FakeSandbox:
+ def __init__(self, stdout: str, return_code: int = 0) -> None:
+ self._result = SimpleNamespace(stdout=stdout, stderr="", return_code=return_code)
+ self.commands: list[str] = []
+
+ async def exec(self, command: str, timeout_s=None):
+ self.commands.append(command)
+ return self._result
+
+
+class TestRunVerification:
+ @pytest.mark.asyncio
+ async def test_grades_a_passing_run_via_the_stdout_summary(self) -> None:
+ log = f"{TEST_OUTPUT_BEGIN}\nshort test summary info\nPASSED r2e_tests/test_x.py::test_semver\n{TEST_OUTPUT_END}\n"
+ sandbox = _FakeSandbox(log)
+ result = await run_verification(sandbox=sandbox, inputs=_inputs())
+ assert result.completed and result.resolved
+ assert sandbox.commands == ["bash /tmp/nemo_gym_eval.sh"]
+
+ @pytest.mark.asyncio
+ async def test_missing_workdir_is_incomplete_not_a_zero(self) -> None:
+ result = await run_verification(sandbox=_FakeSandbox("", return_code=97), inputs=_inputs())
+ assert result.completed is False
+ assert result.resolved is False
+ assert "not present in the image" in result.error
+
+ @pytest.mark.asyncio
+ async def test_empty_expected_output_json_is_incomplete_not_resolved(self) -> None:
+ """An empty expected map would trivially satisfy the reference's own "every expected-PASS
+ test passes" loop (vacuously true) -- that's a data-pipeline bug on our side (this dataset
+ row should never lack the field), not a real resolved instance, so it must not silently
+ report resolved=True."""
+ log = f"{TEST_OUTPUT_BEGIN}\n{TEST_OUTPUT_END}\n"
+ result = await run_verification(sandbox=_FakeSandbox(log), inputs=_inputs(expected_output_json="{}"))
+ assert result.completed is False
+ assert result.resolved is False
+ assert "empty expected_output_json" in result.error
+
+
+class TestVerifyResponseShape:
+ """BaseVerifyResponse extends BaseVerifyRequest, so the request fields are REQUIRED on the
+ way out. Building the response from scratch drops them and the resulting ValidationError
+ surfaces to the caller as a bare JSON string -- which is how a fully successful verification
+ can still fail the whole sweep. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _body() -> dict:
+ return {
+ "instance_id": "23andMe__Yamale-113e5b0d3993ed291d92eff92893fadcaa58f413",
+ "workdir": "/testbed",
+ "image_ref": "lllqaq/23andme_yamale-final:113e5b0d3993ed291d92eff92893fadcaa58f413",
+ "language": "python",
+ "FAIL_TO_PASS": [],
+ "PASS_TO_PASS": [],
+ "expected_output_json": "{}",
+ "responses_create_params": {"input": []},
+ "response": {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+ },
+ }
+
+ def test_spreading_the_request_body_satisfies_the_response_model(self) -> None:
+ from resources_servers.swe_next.app import SWENextVerifyResponse
+
+ response = SWENextVerifyResponse.model_validate(
+ self._body()
+ | {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "test_results": {"resolved": True},
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 0.1,
+ "patch_verification_time_taken": 0.2,
+ }
+ )
+ assert response.instance_id == "23andMe__Yamale-113e5b0d3993ed291d92eff92893fadcaa58f413"
+
+ def test_building_from_scratch_without_the_request_fields_fails(self) -> None:
+ from resources_servers.swe_next.app import SWENextVerifyResponse
+
+ with pytest.raises(Exception):
+ SWENextVerifyResponse.model_validate(
+ {
+ "reward": 1.0,
+ "evaluation_completed": True,
+ "resolved": True,
+ "patch_applied": True,
+ "instance_id": "x",
+ "language": "python",
+ "test_results": None,
+ "test_output": "",
+ "error": None,
+ "eval_sandbox_start_time_taken": 0.1,
+ "patch_verification_time_taken": 0.2,
+ }
+ )
+
+
+class TestAntiCheating:
+ """seed_session must scrub the sandbox's git history before an agent gets control of it, or
+ it can just `git log --all` / `git show ` and read the golden fix instead of
+ solving the task. See resources_servers/swebench/anti_cheat.py."""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_seed_session_calls_the_shared_anti_cheat_helper(self) -> None:
+ source = self._source()
+ assert "from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup" in source
+ assert "apply_anti_cheat_setup(" in source
+
+ def test_config_enables_it_by_default(self) -> None:
+ from resources_servers.swe_next.app import SWENextResourcesServerConfig
+
+ assert SWENextResourcesServerConfig.model_fields["apply_anti_cheating"].default is True
+
+ def test_seed_session_inits_a_git_repo_before_scrubbing(self) -> None:
+ source = self._source()
+ assert "_init_git_repo(" in source
+ init_idx = source.index("await self._init_git_repo(")
+ anti_cheat_idx = source.index("apply_anti_cheat_setup(sandbox")
+ assert init_idx < anti_cheat_idx
+
+ def test_agent_facing_config_turns_it_on(self) -> None:
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "swe_next.yaml").read_text())
+ assert config["swe_next_resources_server"]["resources_servers"]["swe_next"]["apply_anti_cheating"] is True
+
+
+class TestMultiWorkerEntrypoint:
+ """num_workers > 1 makes uvicorn re-import this entrypoint by path in each forked child.
+ Without a module-level `app`, every child exits and uvicorn stops the parent, so the server
+ never binds -- the symptom is a flood of connection errors from clients talking to a dead
+ port, not an ImportError. (Hit for real in resources_servers/swe_rebench/app.py.)"""
+
+ @staticmethod
+ def _source() -> str:
+ from pathlib import Path
+
+ return (Path(__file__).resolve().parent.parent / "app.py").read_text()
+
+ def test_exposes_a_module_level_app_for_forked_workers(self) -> None:
+ source = self._source()
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in source
+ assert "app = SWENextResourcesServer.run_webserver()" in source
+
+ def test_the_config_that_needs_it_still_sets_num_workers(self) -> None:
+ """Pins the pair: if num_workers is configured, the entrypoint branch must exist."""
+ from pathlib import Path
+
+ import yaml
+
+ config = yaml.safe_load((Path(__file__).resolve().parent.parent / "configs" / "swe_next.yaml").read_text())
+ for name, block in config.items():
+ workers = block["resources_servers"]["swe_next"].get("num_workers")
+ if workers and workers > 1:
+ assert "is_nemo_gym_fastapi_entrypoint(__file__)" in self._source(), (
+ f"{name} sets num_workers={workers} but the entrypoint has no module-level app"
+ )
diff --git a/resources_servers/swe_next/verification.py b/resources_servers/swe_next/verification.py
new file mode 100644
index 00000000000..be1a86b9d4c
--- /dev/null
+++ b/resources_servers/swe_next/verification.py
@@ -0,0 +1,340 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Run one TIGER-Lab/SWE-Next task's tests in a sandbox and grade the result.
+
+SWE-Next is generated by the R2E ("Repo-to-Environment") pipeline: every row's image bakes an
+isolated venv at ``/env/.venv`` (symlinked to ``/testbed/.venv``, since ``ln -s /workspace
+/testbed`` and an earlier ``ln -s /env/.venv /workspace/.venv``), a fixed ``run_tests.sh`` recipe,
+and a canonical injected test file under ``r2e_tests/``. Confirmed verbatim identical across a
+200-row sample of the raw Hub data, so this server hardcodes it rather than reading it per row:
+
+ PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 PYTHONWARNINGS='ignore::UserWarning,ignore::SyntaxWarning' \\
+ .venv/bin/python -W ignore -m pytest -rA r2e_tests
+
+Grading mirrors the upstream reference implementation exactly (TIGER-AI-Lab/SWE-Next's own
+``DockerRuntime._calculate_reward_r2e``, the reward path R2E-edit rows use by default), NOT the
+SWE-bench FAIL_TO_PASS/PASS_TO_PASS convention this dataset's own fields would suggest:
+
+ - Every row also carries ``expected_output_json``, a ``{test_name: "PASSED"|"FAILED"|"ERROR"}``
+ snapshot of the ENTIRE test suite captured on the golden-patched instance -- a strict superset
+ of FAIL_TO_PASS/PASS_TO_PASS (verified: every FAIL_TO_PASS/PASS_TO_PASS id is present in it).
+ - The reference reward is lenient, not a targeted FAIL_TO_PASS/PASS_TO_PASS check: for every test
+ ``expected_output_json`` marked PASSED, the fresh run must ALSO observe it PASSED. Anything
+ expected FAILED/ERROR is unconstrained -- an agent is allowed to fix more than the golden patch
+ did. ``resolved = no expected-PASSED test is missing or came back non-PASSED``.
+ - Both ``expected_output_json`` and the fresh run are parsed by the IDENTICAL function
+ (upstream's ``parse_log_pytest``, reimplemented here as ``parse_pytest_short_summary``): read
+ the "short test summary info" section pytest's ``-rA`` flag prints, and for each ``STATUS
+ path::Class::method`` line, drop only the file-path segment (split on the FIRST "::") and keep
+ the rest verbatim (including any further "::" inside a parametrize bracket, and the bracket
+ itself). Since both sides come from the same parser, matching is a plain exact-key lookup --
+ no suffix heuristics needed, and none of the ambiguity a JUnit-XML-based parse would introduce
+ (JUnit's ``classname`` is a DOTTED module path, not this dataset's own bare/``Class::method``
+ convention, and reconstructing the boundary is inherently lossy for repos with same-named
+ classes in different modules).
+"""
+
+from __future__ import annotations
+
+import json
+import re
+import shlex
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Any, Iterable
+
+
+TEST_OUTPUT_BEGIN = "___NEMO_GYM_SWE_NEXT_TEST_BEGIN___"
+TEST_OUTPUT_END = "___NEMO_GYM_SWE_NEXT_TEST_END___"
+
+# Confirmed byte-identical across a 200-row sample of the raw Hub data (see module docstring).
+# `-rA` is what prints the "short test summary info" section `parse_pytest_short_summary` reads.
+TEST_COMMAND = (
+ "PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 "
+ "PYTHONWARNINGS='ignore::UserWarning,ignore::SyntaxWarning' "
+ ".venv/bin/python -W ignore -m pytest -rA r2e_tests"
+)
+
+PASSED = "PASSED"
+_ANSI_ESCAPE_RE = re.compile(r"\x1b\[[0-9;]*m")
+
+
+def _strip_ansi(text: str) -> str:
+ return _ANSI_ESCAPE_RE.sub("", text)
+
+
+@dataclass
+class VerificationInputs:
+ instance_id: str
+ workdir: str
+ patch: str
+ test_patch: str
+ expected_output_json: str = "{}"
+
+
+@dataclass
+class VerificationResult:
+ completed: bool
+ resolved: bool
+ patch_applied: bool
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None = None
+
+
+def patch_section_path(section: str) -> str | None:
+ """Return the repository-relative path one ``diff --git`` section targets."""
+ a_path: str | None = None
+ b_path: str | None = None
+ for line in section.splitlines():
+ if line.startswith("@@"):
+ break
+ if line.startswith("--- ") and a_path is None:
+ value = line[4:].strip()
+ a_path = None if value == "/dev/null" else value.removeprefix("a/")
+ elif line.startswith("+++ ") and b_path is None:
+ value = line[4:].strip()
+ b_path = None if value == "/dev/null" else value.removeprefix("b/")
+
+ if b_path or a_path:
+ return b_path or a_path
+
+ header = re.match(r"^diff --git a/(.+?) b/(.+)$", section.splitlines()[0] if section else "")
+ return header.group(2) if header else None
+
+
+def drop_patch_sections(patch: str, paths: Iterable[str]) -> str:
+ """Drop the diff sections targeting ``paths``.
+
+ ``git add -N . && git diff`` picks up every untracked file, including ones that were already
+ untracked before the agent touched anything. Excluding those paths keeps the extracted patch
+ to what the agent actually changed.
+ """
+ dropped = set(paths)
+ if not patch or not dropped:
+ return patch
+
+ kept: list[str] = []
+ for section in re.split(r"(?=^diff --git )", patch, flags=re.MULTILINE):
+ if not section.strip():
+ continue
+ path = patch_section_path(section)
+ if path is not None and path in dropped:
+ continue
+ kept.append(section)
+
+ return "".join(kept)
+
+
+def build_eval_script(inputs: VerificationInputs) -> str:
+ apply_patch = (
+ "git apply --reject --recount --ignore-space-change --whitespace=nowarn /tmp/nemo_gym_patch.diff || true"
+ if inputs.patch.strip()
+ else ""
+ )
+ apply_test_patch = (
+ "git apply --reject --recount --ignore-space-change --whitespace=nowarn /tmp/nemo_gym_test_patch.diff || true"
+ if inputs.test_patch.strip()
+ else ""
+ )
+
+ return f"""#!/bin/bash
+cd {shlex.quote(inputs.workdir)} || exit 97
+set +e
+{apply_patch}
+{apply_test_patch}
+
+echo "{TEST_OUTPUT_BEGIN}"
+{TEST_COMMAND}
+__test_exit=$?
+echo "{TEST_OUTPUT_END}"
+exit $__test_exit
+"""
+
+
+def _slice(log: str, begin: str, end: str) -> str:
+ start = log.find(begin)
+ if start == -1:
+ return ""
+ start += len(begin)
+ stop = log.find(end, start)
+ return log[start:stop] if stop != -1 else log[start:]
+
+
+def verification_files(inputs: VerificationInputs) -> dict[str, str]:
+ files = {"/tmp/nemo_gym_eval.sh": build_eval_script(inputs)}
+ if inputs.patch.strip():
+ files["/tmp/nemo_gym_patch.diff"] = inputs.patch
+ if inputs.test_patch.strip():
+ files["/tmp/nemo_gym_test_patch.diff"] = inputs.test_patch
+ return files
+
+
+def parse_pytest_short_summary(output: str) -> dict[str, str]:
+ """Reimplementation of upstream's ``execution_log_parser.parse_log_pytest``.
+
+ Prefers the "short test summary info" block (compact, stable across pytest versions);
+ falls back to scanning the whole log for ``STATUS path::name`` lines otherwise. A test's key
+ is everything after the FIRST "::" (dropping only the file-path segment) with any trailing
+ " - message" stripped -- deliberately NOT a full class/method split, since a parametrize
+ bracket can itself contain "::" as data (e.g. an f-string format spec) and this dataset's own
+ ``expected_output_json`` was captured by this exact same rule, so matching only needs the two
+ sides to agree with each other, not to be "correct" pytest-id parsing in the abstract.
+ """
+ cleaned = _ANSI_ESCAPE_RE.sub("", output).replace("\r", "")
+ if "short test summary info" in cleaned:
+ lines = cleaned.split("short test summary info", 1)[1].strip().split("\n")
+ else:
+ lines = cleaned.splitlines()
+
+ statuses: dict[str, str] = {}
+ for line in lines:
+ stripped = line.strip()
+ if not stripped:
+ continue
+
+ status: str | None = None
+ if "PASSED" in stripped:
+ status = "PASSED"
+ elif "FAILED" in stripped:
+ status = "FAILED"
+ elif "ERROR" in stripped:
+ status = "ERROR"
+ if status is None:
+ continue
+
+ if "::" in stripped:
+ test_name = stripped.split("::", 1)[1].split(" - ")[0]
+ else:
+ parts = stripped.split()
+ try:
+ idx = parts.index(status)
+ except ValueError:
+ idx = 0
+ test_name = " ".join(parts[idx + 1 :]).split(" - ")[0] if len(parts) > idx + 1 else stripped
+
+ statuses[test_name] = status
+ return statuses
+
+
+def grade(expected: dict[str, str], parsed: dict[str, str]) -> dict[str, Any]:
+ """Upstream's ``_calculate_reward_r2e`` semantics: every expected-PASSED test must still be
+ observed PASSED; expected-FAILED/ERROR tests are unconstrained (an agent may fix more than the
+ golden patch did). ``expected`` and ``parsed`` come from the identical parser (see module
+ docstring), so this is a plain exact-key lookup -- no suffix matching. A handful of raw rows
+ (e.g. elastic/rally) bake ANSI color codes into ``expected_output_json``'s own keys, not just
+ FAIL_TO_PASS/PASS_TO_PASS -- stripped here too, on both sides, so those rows are gradeable."""
+ expected = {_strip_ansi(k): v for k, v in expected.items()}
+ parsed = {_strip_ansi(k): v for k, v in parsed.items()}
+ missing: list[str] = []
+ mismatched: list[str] = []
+ required_pass_total = 0
+ for name, exp_status in expected.items():
+ if exp_status != PASSED:
+ continue
+ required_pass_total += 1
+ got = parsed.get(name)
+ if got is None:
+ missing.append(name)
+ elif got != PASSED:
+ mismatched.append(name)
+
+ return {
+ "expected_total": len(expected),
+ "parsed_total": len(parsed),
+ "required_pass_total": required_pass_total,
+ "missing": missing[:20],
+ "missing_total": len(missing),
+ "mismatched": mismatched[:20],
+ "mismatched_total": len(mismatched),
+ "resolved": not missing and not mismatched,
+ }
+
+
+async def run_verification(
+ sandbox: Any,
+ inputs: VerificationInputs,
+ timeout_s: float | None = None,
+ log_dir: Path | None = None,
+) -> VerificationResult:
+ import asyncio
+
+ result = await sandbox.exec("bash /tmp/nemo_gym_eval.sh", timeout_s=timeout_s)
+ output = (result.stdout or "") + (("\n" + result.stderr) if result.stderr else "")
+
+ if log_dir is not None:
+
+ def _persist() -> None:
+ try:
+ log_dir.mkdir(parents=True, exist_ok=True)
+ (log_dir / "test_output.log").write_text(output, errors="replace")
+ except OSError:
+ pass
+
+ await asyncio.to_thread(_persist)
+
+ if result.return_code == 97:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output=output,
+ error=f"workdir {inputs.workdir} not present in the image",
+ )
+
+ stdout_section = _slice(output, TEST_OUTPUT_BEGIN, TEST_OUTPUT_END)
+
+ try:
+ expected = json.loads(inputs.expected_output_json or "{}")
+ except Exception as exc:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=True,
+ test_results=None,
+ test_output=output,
+ error=f"invalid expected_output_json: {exc}",
+ )
+ if not expected:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=True,
+ test_results=None,
+ test_output=output,
+ error="empty expected_output_json: row cannot be graded",
+ )
+
+ try:
+ parsed = await asyncio.to_thread(parse_pytest_short_summary, stdout_section)
+ except Exception as exc:
+ return VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=True,
+ test_results=None,
+ test_output=output,
+ error=f"parse failure (pytest): {exc}",
+ )
+
+ report = grade(expected, parsed)
+ return VerificationResult(
+ completed=True,
+ resolved=bool(report["resolved"]),
+ patch_applied=True,
+ test_results=report,
+ test_output=output,
+ )
diff --git a/resources_servers/swe_rebench/.gitignore b/resources_servers/swe_rebench/.gitignore
new file mode 100644
index 00000000000..c39f6d3d27c
--- /dev/null
+++ b/resources_servers/swe_rebench/.gitignore
@@ -0,0 +1,2 @@
+# This is where verification logs are stored locally
+logs
diff --git a/resources_servers/swe_rebench/README.md b/resources_servers/swe_rebench/README.md
new file mode 100644
index 00000000000..a760a05901d
--- /dev/null
+++ b/resources_servers/swe_rebench/README.md
@@ -0,0 +1,92 @@
+# SWE-rebench-V2 resources server
+
+Verification for [nebius/SWE-rebench-V2](https://huggingface.co/datasets/nebius/SWE-rebench-V2):
+32,079 software-engineering tasks across 20 languages.
+
+Unlike the SWE-bench servers, there is no image repository or per-language configuration here.
+Every row ships its own prebuilt image (`docker.io/swerebenchv2/...`), the commands to install
+and to test it, and the name of the upstream parser for its test log. Verification therefore
+reduces to: start the row's image, apply the patches, run the row's test command, parse, grade.
+
+Sandboxes come from `nemo_gym.sandbox`, so the same server runs on OpenSandbox or any other
+configured provider.
+
+## Grading
+
+An instance resolves only when **every** `FAIL_TO_PASS` and `PASS_TO_PASS` test is observed and
+passing. A test that is missing from the parsed output counts as not passing — treating absent
+as success is the standard way a broken test command scores as a resolved instance.
+
+Test names are normalised to strip per-run timings (`[123 ms]`, `(1.5 s)`, `in 2.0 sec`) before
+comparison, matching the existing `swe_agents` SWE-rebench grader so the two agree.
+
+The graded region of the log is delimited by markers, so install-time noise never reaches the
+parser. Several parsers are line-oriented and would otherwise read dependency-resolver output
+as test results.
+
+## Log parsers
+
+The dataset names one of 34 upstream parsers per row. Rather than reimplement that set, the
+MIT-licensed `log_parsers.py` from
+[SWE-rebench/SWE-rebench-V2](https://github.com/SWE-rebench/SWE-rebench-V2) is fetched on first
+use and called directly; see `log_parsers.py`. An unknown parser name is an error, never a
+fallback: a wrong parser returns an empty result, which grades as "nothing passed" and is
+indistinguishable from a real failure.
+
+## Prepare the data
+
+`prepare_swe_rebench.py` only writes rows already on `data/supported_instance_ids.txt` -- see
+Golden-patch validation below for what that list is and why. It streams the Hub dataset rather
+than loading the full ~2.5 GB split, since only about 70% of rows are kept.
+
+```bash
+SWE_REBENCH_LIMIT=200 python resources_servers/swe_rebench/prepare_swe_rebench.py
+```
+
+## Golden-patch validation
+
+Grades each task with the dataset's own patch, which measures the dataset rather than a model.
+A row whose golden patch does not resolve cannot be used for evaluation or training.
+
+```bash
+gym env start \
+ --config resources_servers/swe_rebench/configs/swe_rebench.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+python resources_servers/swe_rebench/apply_golden_patch.py \
+ +training_jsonl=resources_servers/swe_rebench/data/swe_rebench_training.jsonl \
+ +limit=40 +concurrency=8
+```
+
+It prints a resolved rate overall and per language, and writes one row per task.
+
+On a Slurm cluster where OpenSandbox is only reachable from inside, use
+`temp_launch_swe_rebench_golden_patch.sh`, which runs the same thing on the **cpu** partition —
+the workload needs no GPU, since the containers run remotely.
+
+`aggregate_golden_patch.py` joins repeated golden-patch passes (e.g. a 3x sweep) into
+supported / flaky / broken / inconclusive buckets, keeping an infra fault (no verdict) separate
+from a genuinely nondeterministic test so neither silently corrupts the other's label.
+`data/supported_instance_ids.txt` is the result of one such sweep over the full set: 22,684 of
+32,079 instances whose golden patch resolved in all three passes. `prepare_swe_rebench.py` reads
+this list and writes only those rows -- the training jsonl is the supported set, not the full
+Hub dataset. The other 9,395 are excluded from that list because none can be scored either way:
+6,813 never resolve
+(concentrated in the compiled-language rows -- java, kotlin, scala, cpp), 2,376 resolve
+inconsistently across passes (flaky tests), and 206 never produced a verdict in any pass (image
+pull / setup failures, not row failures -- see `diagnose_failures.py`).
+
+## Running an agent
+
+`configs/swe_rebench_opencode.yaml` wires the opencode sandboxed agent to
+`swe_rebench_resources_server`, pointed at `data/swe_rebench_training.jsonl`. It lives in a
+separate file rather than folded into `swe_rebench.yaml` so golden-patch validation (which never
+touches an agent) doesn't need to pull in the agent's much larger sandbox/permission config.
+
+```bash
+gym env start \
+ --config resources_servers/swe_rebench/configs/swe_rebench_opencode.yaml \
+ --config responses_api_models/vllm_model/configs/vllm_model.yaml
+```
+
+Upstream SWE-rebench code is MIT licensed. This adapter is Apache-2.0.
diff --git a/resources_servers/swe_rebench/__init__.py b/resources_servers/swe_rebench/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/resources_servers/swe_rebench/aggregate_golden_patch.py b/resources_servers/swe_rebench/aggregate_golden_patch.py
new file mode 100644
index 00000000000..7ae7eac45e4
--- /dev/null
+++ b/resources_servers/swe_rebench/aggregate_golden_patch.py
@@ -0,0 +1,136 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Join repeated golden-patch passes into the set of rows that are actually usable.
+
+A row is SUPPORTED when its golden patch resolved in every pass. That is the point of
+repeating: a row that resolves only sometimes has a nondeterministic test, and its reward is
+noise whether it is used for evaluation or for training.
+
+The one distinction that matters, and the reason this is not a single boolean: a pass can fail
+to produce a verdict at all (image pull, timeout, provider fault). That is evidence about the
+infrastructure, not about the row. Collapsing the two would discard good tasks for an unrelated
+hiccup, so incomplete passes are counted separately and those rows are reported as needing more
+evidence rather than as broken.
+
+ python resources_servers/swe_rebench/aggregate_golden_patch.py \
+ +runs=results/swe_rebench_golden_patch_full \
+ +output_jsonl=results/swe_rebench_supported.jsonl
+"""
+
+import json
+from collections import Counter, defaultdict
+from pathlib import Path
+from typing import Any
+
+from nemo_gym.global_config import get_global_config_dict
+
+
+def _rows(path: Path):
+ with path.open(encoding="utf-8") as handle:
+ for line in handle:
+ line = line.strip()
+ if line:
+ try:
+ yield json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+
+def classify(observations: list[dict[str, Any]], expected_passes: int) -> str:
+ """Bucket one row from its per-pass observations."""
+ completed = [o for o in observations if o.get("evaluation_completed")]
+ resolved = sum(1 for o in completed if o.get("resolved"))
+
+ if len(completed) < expected_passes:
+ # Not enough verdicts to judge the row. Distinguished from a genuine failure so an
+ # image-pull fault does not quietly delete a usable task.
+ return "inconclusive"
+ if resolved == len(completed):
+ return "supported"
+ if resolved == 0:
+ return "broken"
+ return "flaky"
+
+
+def main() -> None:
+ config = get_global_config_dict()
+ runs_dir = Path(config["runs"])
+ output_fpath = Path(config.get("output_jsonl") or "results/swe_rebench_supported.jsonl")
+
+ pass_files = sorted(p for p in runs_dir.glob("*.jsonl") if p.is_file())
+ if not pass_files:
+ raise SystemExit(f"no pass jsonl files under {runs_dir}")
+
+ by_instance: dict[str, list[dict[str, Any]]] = defaultdict(list)
+ language: dict[str, str] = {}
+ for pass_file in pass_files:
+ for row in _rows(pass_file):
+ instance_id = row.get("instance_id")
+ if not instance_id or instance_id == "?":
+ continue
+ by_instance[instance_id].append(row)
+ if row.get("language"):
+ language[instance_id] = row["language"]
+
+ expected = len(pass_files)
+ buckets: Counter[str] = Counter()
+ per_language: dict[str, Counter[str]] = defaultdict(Counter)
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ with output_fpath.open("w", encoding="utf-8") as out:
+ for instance_id, observations in sorted(by_instance.items()):
+ verdict = classify(observations, expected)
+ buckets[verdict] += 1
+ per_language[language.get(instance_id, "unknown")][verdict] += 1
+ out.write(
+ json.dumps(
+ {
+ "instance_id": instance_id,
+ "language": language.get(instance_id, ""),
+ "verdict": verdict,
+ "passes_observed": len(observations),
+ "passes_completed": sum(1 for o in observations if o.get("evaluation_completed")),
+ "passes_resolved": sum(1 for o in observations if o.get("resolved")),
+ "expected_passes": expected,
+ }
+ )
+ + "\n"
+ )
+
+ total = sum(buckets.values())
+ print(f"golden-patch aggregation over {total} row(s) from {expected} pass(es)\n")
+ for verdict, description in (
+ ("supported", "resolved in every pass - usable"),
+ ("flaky", "resolved in some passes only - nondeterministic test"),
+ ("broken", "never resolved - golden patch does not work"),
+ ("inconclusive", "too few verdicts - re-run before judging"),
+ ):
+ count = buckets.get(verdict, 0)
+ print(f" {verdict:<13} {count:>6} ({100 * count / max(total, 1):5.1f}%) {description}")
+
+ print("\n by language (supported / total):")
+ for lang, counts in sorted(per_language.items(), key=lambda kv: -sum(kv[1].values())):
+ rows_total = sum(counts.values())
+ supported = counts.get("supported", 0)
+ print(
+ f" {lang:<10} {supported:>5} / {rows_total:<6} ({100 * supported / rows_total:5.1f}%)"
+ f" flaky={counts.get('flaky', 0)} broken={counts.get('broken', 0)}"
+ f" inconclusive={counts.get('inconclusive', 0)}"
+ )
+ print(f"\nper-row verdicts: {output_fpath}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/resources_servers/swe_rebench/app.py b/resources_servers/swe_rebench/app.py
new file mode 100644
index 00000000000..99e91c7b44c
--- /dev/null
+++ b/resources_servers/swe_rebench/app.py
@@ -0,0 +1,373 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Resources server for nebius/SWE-rebench-V2.
+
+Each dataset row ships its own prebuilt image plus the commands to install and test it, so this
+server does not build environments — it starts the row's image in a sandbox, applies patches,
+runs the row's test command, and grades the output with the row's named upstream parser.
+
+Set ``is_verifying_golden_patch: true`` to grade the dataset's own patch instead of an agent's.
+That is the dataset-health check: a row whose golden patch does not resolve is a broken row, and
+scoring an agent against it is measuring noise.
+"""
+
+import sys
+from pathlib import Path
+from shlex import quote
+from time import time
+from traceback import format_exc
+from typing import Any
+
+from fastapi import Request
+from pydantic import BaseModel, ConfigDict
+
+from nemo_gym.base_resources_server import (
+ BaseResourcesServerConfig,
+ BaseSeedSessionRequest,
+ BaseSeedSessionResponse,
+ BaseVerifyRequest,
+ BaseVerifyResponse,
+ SimpleResourcesServer,
+)
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.sandbox import AsyncSandbox, SandboxResources, SandboxSpec
+from nemo_gym.sandbox.config import resolve_provider_config, resolve_provider_metadata
+from nemo_gym.sandbox.utils import cpu_cap_env
+from nemo_gym.server_utils import SESSION_ID_KEY, is_nemo_gym_fastapi_entrypoint
+from resources_servers.swe_rebench.log_parsers import default_cache_dir, resolve_parser
+from resources_servers.swe_rebench.verification import (
+ VerificationInputs,
+ VerificationResult,
+ as_command_list,
+ drop_patch_sections,
+ repo_directory,
+ run_verification,
+ verification_files,
+)
+from resources_servers.swebench.anti_cheat import apply_anti_cheat_setup
+
+
+# Gradle only auto-loads init scripts from $GRADLE_USER_HOME/init.d, so the mirror script
+# shipped by verification._mirror_files() is invisible unless this points at the same home.
+# Maven needs no equivalent: it reads ~/.m2/settings.xml by default.
+#
+# An earlier attempt set -Djava.net.preferIPv6Addresses=false here on the theory that the JVM
+# was misrouting over IPv6. It changed nothing -- the failures were identical -- so the cause is
+# Maven Central being unreachable from this network rather than an IP-version problem. Removed
+# rather than left in place, since an ineffective workaround invites the same dead end later.
+JVM_MIRROR_ENV = {
+ "GRADLE_USER_HOME": "/root/.gradle",
+}
+
+
+class SWERebenchResourcesServerConfig(BaseResourcesServerConfig):
+ is_verifying_golden_patch: bool = False
+ evaluation_timeout: int | None = 3600
+ # A verdict-less run is retried on a fresh sandbox: an image pull or a flaky provider start
+ # is not evidence about the patch.
+ inconclusive_verification_retries: int = 1
+ # Where the upstream log-parser repo is cloned. Empty uses the shared nemo_gym cache.
+ log_parser_cache_dir: str = ""
+ apply_anti_cheating: bool = True
+ sandbox_provider: str
+ sandbox_config: dict[str, Any]
+
+
+class SWERebenchInstanceRequest(BaseModel):
+ """One row of nebius/SWE-rebench-V2."""
+
+ model_config = ConfigDict(extra="allow")
+
+ instance_id: str
+ repo: str
+ base_commit: str
+ patch: str = ""
+ test_patch: str = ""
+ problem_statement: str = ""
+ language: str = ""
+ image_name: str
+ install_config: dict[str, Any] = {}
+ # Upstream spells these in caps; keep the dataset's own names so a row round-trips unchanged.
+ FAIL_TO_PASS: list[str] = []
+ PASS_TO_PASS: list[str] = []
+
+
+class SWERebenchSeedSessionRequest(SWERebenchInstanceRequest, BaseSeedSessionRequest):
+ sandbox_spec: dict[str, Any] | None = None
+
+
+class SWERebenchSeedSessionResponse(BaseSeedSessionResponse):
+ sandbox_handle: str
+
+
+class SWERebenchVerifyRequest(SWERebenchInstanceRequest, BaseVerifyRequest):
+ pass
+
+
+class SWERebenchVerifyResponse(BaseVerifyResponse):
+ evaluation_completed: bool
+ resolved: bool
+ patch_applied: bool
+ instance_id: str
+ language: str
+ test_results: dict[str, Any] | None
+ test_output: str
+ error: str | None
+ eval_sandbox_start_time_taken: float
+ patch_verification_time_taken: float
+
+
+class SWERebenchResourcesServer(SimpleResourcesServer):
+ config: SWERebenchResourcesServerConfig
+
+ def model_post_init(self, context: Any, /) -> None:
+ super().model_post_init(context)
+ self._session_id_to_sandbox: dict[str, AsyncSandbox] = {}
+ self._session_id_to_pristine_untracked: dict[str, frozenset[str]] = {}
+
+ @property
+ def _parser_cache_dir(self) -> Path:
+ return Path(self.config.log_parser_cache_dir) if self.config.log_parser_cache_dir else default_cache_dir()
+
+ def _inputs(self, body: SWERebenchInstanceRequest, patch: str) -> VerificationInputs:
+ install_config = body.install_config or {}
+ return VerificationInputs(
+ instance_id=body.instance_id,
+ repo=body.repo,
+ base_commit=body.base_commit,
+ patch=patch,
+ test_patch=body.test_patch,
+ install=as_command_list(install_config.get("install")),
+ test_cmd=as_command_list(install_config.get("test_cmd")),
+ log_parser=str(install_config.get("log_parser") or ""),
+ fail_to_pass=list(body.FAIL_TO_PASS or []),
+ pass_to_pass=list(body.PASS_TO_PASS or []),
+ )
+
+ async def _create_sandbox(
+ self, body: SWERebenchInstanceRequest, files: dict[str, str] | None = None
+ ) -> AsyncSandbox:
+ global_config_dict = get_global_config_dict()
+ provider_config = resolve_provider_config(self.config.sandbox_provider, global_config_dict)
+ provider_metadata = resolve_provider_metadata(self.config.sandbox_provider, global_config_dict)
+
+ # Cap build/test parallelism to the CPU limit. A container sees the HOST core count (96
+ # here), so `make -j$(nproc)`, cargo, gradle and `go test` fan out ~96 workers against a
+ # 4-CPU quota and spend most of their time CFS-throttled. This matters more for this set
+ # than any other: it is the compile-heaviest, with 6144 Go, 3123 Rust, 1716 Java, 411
+ # Scala and 182 C++ rows. Explicit sandbox_config.env keys still win.
+ sandbox_resources = SandboxResources.from_mapping(self.config.sandbox_config.get("resources", {}))
+ env = dict(self.config.sandbox_config.get("env", {}))
+ if self.config.sandbox_config.get("derive_cpu_env", True):
+ env = cpu_cap_env(sandbox_resources.cpu) | env
+ if self.config.sandbox_config.get("use_maven_mirror", True):
+ # See verification._mirror_files(): Maven Central is unreachable from this network
+ # while other registries are, so both build tools are pointed at the Google mirror.
+ env = JVM_MIRROR_ENV | env
+
+ spec = SandboxSpec(
+ # The row names its own image; there is no repository template to apply.
+ image=body.image_name,
+ ttl_s=self.config.sandbox_config.get("ttl_s"),
+ ready_timeout_s=self.config.sandbox_config.get("ready_timeout_s"),
+ workdir=repo_directory(body.repo),
+ env=env,
+ files=files or {},
+ metadata=provider_metadata
+ | self.config.sandbox_config.get("metadata", {})
+ | {
+ "nemo_gym_agent": self.config.name,
+ "instance_id": body.instance_id[:63],
+ "language": body.language[:63],
+ },
+ resources=sandbox_resources,
+ provider_options=self.config.sandbox_config.get("provider_options", {}),
+ )
+ sandbox = AsyncSandbox(provider_config)
+ await sandbox.start(spec)
+ return sandbox
+
+ async def _stop_sandbox(self, sandbox: AsyncSandbox | None) -> None:
+ if sandbox is None:
+ return
+ try:
+ await sandbox.stop()
+ except Exception:
+ print("Failed to stop SWE-rebench sandbox", format_exc(), file=sys.stderr)
+
+ async def _pristine_untracked_files(self, sandbox: AsyncSandbox, workdir: str) -> frozenset[str]:
+ """List of files ``workdir`` holds untracked before the agent touches it."""
+ try:
+ result = await sandbox.exec(f"git -C {quote(workdir)} ls-files --others --exclude-standard")
+ if result.return_code != 0:
+ print(f"Failed to list pristine untracked files: {result.stderr}", file=sys.stderr)
+ return frozenset()
+ return frozenset(line.strip() for line in (result.stdout or "").splitlines() if line.strip())
+ except Exception:
+ print("Failed to list pristine untracked files", format_exc(), file=sys.stderr)
+ return frozenset()
+
+ async def _extract_model_patch(self, session_id: str, workdir: str, base_commit: str) -> str:
+ """Diff the agent's own sandbox against ``base_commit``, then stop it.
+
+ ``git add -N`` (intent-to-add) is what makes brand-new files show up in ``git diff`` too,
+ not just edits to already-tracked files -- without it, a task an agent solves entirely by
+ adding new files would extract as an empty patch.
+ """
+ original_sandbox = self._session_id_to_sandbox.pop(session_id)
+ pristine_untracked = self._session_id_to_pristine_untracked.pop(session_id, frozenset())
+ try:
+ result = await original_sandbox.exec(
+ f"git -C {quote(workdir)} add -N . && git -C {quote(workdir)} --no-pager diff {quote(base_commit)}"
+ )
+ if result.return_code != 0:
+ raise RuntimeError(result.stderr or "git diff failed")
+ return drop_patch_sections(result.stdout or "", pristine_untracked)
+ finally:
+ await self._stop_sandbox(original_sandbox)
+
+ async def seed_session(
+ self, request: Request, body: SWERebenchSeedSessionRequest
+ ) -> SWERebenchSeedSessionResponse:
+ """Start the instance's image so an agent can work in it."""
+ session_id = request.session[SESSION_ID_KEY]
+ await self._stop_sandbox(self._session_id_to_sandbox.pop(session_id, None))
+ self._session_id_to_pristine_untracked.pop(session_id, None)
+ sandbox = await self._create_sandbox(body)
+ if self.config.apply_anti_cheating:
+ await apply_anti_cheat_setup(sandbox, repo_directory(body.repo), body.instance_id, "swe_rebench")
+ self._session_id_to_pristine_untracked[session_id] = await self._pristine_untracked_files(
+ sandbox, repo_directory(body.repo)
+ )
+ self._session_id_to_sandbox[session_id] = sandbox
+ return SWERebenchSeedSessionResponse(sandbox_handle=str(sandbox._handle.sandbox_id))
+
+ async def verify(self, request: Request, body: SWERebenchVerifyRequest) -> SWERebenchVerifyResponse:
+ session_id = request.session[SESSION_ID_KEY]
+ extraction_error = None
+ if self.config.is_verifying_golden_patch:
+ patch = body.patch
+ else:
+ try:
+ patch = await self._extract_model_patch(session_id, repo_directory(body.repo), body.base_commit)
+ except Exception as exc:
+ patch = ""
+ extraction_error = f"Failed to extract model patch: {exc}"
+
+ inputs = self._inputs(body, patch)
+ log_dir = Path(__file__).parent / "logs" / body.instance_id
+
+ # Resolve the parser before spending a sandbox on the run: an unknown parser name means
+ # this row can never be graded, and finding that out after the tests have run wastes the
+ # most expensive part.
+ try:
+ parser = resolve_parser(inputs.log_parser, self._parser_cache_dir)
+ except Exception as exc:
+ # Spread the request: BaseVerifyResponse extends BaseVerifyRequest, so
+ # responses_create_params and response are required and must be echoed back.
+ return SWERebenchVerifyResponse.model_validate(
+ body.model_dump()
+ | {
+ "reward": 0.0,
+ "evaluation_completed": False,
+ "resolved": False,
+ "patch_applied": False,
+ "instance_id": body.instance_id,
+ "language": body.language,
+ "test_results": None,
+ "test_output": "",
+ "error": f"{exc}",
+ "eval_sandbox_start_time_taken": 0.0,
+ "patch_verification_time_taken": 0.0,
+ }
+ )
+
+ files = verification_files(inputs)
+ attempts = 1 + max(self.config.inconclusive_verification_retries, 0)
+ start_time_taken = 0.0
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error="unattempted",
+ )
+ for attempt in range(1, attempts + 1):
+ sandbox: AsyncSandbox | None = None
+ started = time()
+ try:
+ sandbox = await self._create_sandbox(body, files=files)
+ start_time_taken = time() - started
+ verification_started = time()
+ result = await run_verification(
+ sandbox=sandbox,
+ inputs=inputs,
+ parser=parser,
+ timeout_s=self.config.evaluation_timeout,
+ log_dir=log_dir,
+ )
+ verification_time_taken = time() - verification_started
+ except Exception as exc:
+ start_time_taken = time() - started
+ verification_time_taken = 0.0
+ result = VerificationResult(
+ completed=False,
+ resolved=False,
+ patch_applied=False,
+ test_results=None,
+ test_output="",
+ error=f"Verification failed: {exc}",
+ )
+ finally:
+ await self._stop_sandbox(sandbox)
+ if result.completed:
+ break
+ if attempt < attempts:
+ print(
+ f"[swe_rebench] {body.instance_id}: inconclusive ({result.error}); "
+ f"retrying on a fresh sandbox ({attempt}/{attempts - 1})",
+ flush=True,
+ )
+
+ return SWERebenchVerifyResponse.model_validate(
+ body.model_dump()
+ | {
+ # An unresolved-but-completed run is a real 0. An incomplete run is also 0, but
+ # evaluation_completed distinguishes them so a broken row is not read as a hard task.
+ "reward": 1.0 if result.resolved else 0.0,
+ "evaluation_completed": result.completed,
+ "resolved": result.resolved,
+ "patch_applied": result.patch_applied,
+ "instance_id": body.instance_id,
+ "language": body.language,
+ "test_results": result.test_results,
+ "test_output": result.test_output[-100_000:],
+ "error": extraction_error or result.error,
+ "eval_sandbox_start_time_taken": start_time_taken,
+ "patch_verification_time_taken": verification_time_taken,
+ }
+ )
+
+
+if __name__ == "__main__":
+ SWERebenchResourcesServer.run_webserver()
+elif is_nemo_gym_fastapi_entrypoint(__file__):
+ # Required whenever num_workers > 1. Multi-worker uvicorn re-imports this entrypoint BY PATH
+ # in each forked child and expects a module-level `app`; without it every child exits, and
+ # uvicorn responds by stopping the parent. The server then never binds, so the symptom is not
+ # an import error but a flood of connection failures from clients talking to a dead port.
+ app = SWERebenchResourcesServer.run_webserver() # noqa: F401
diff --git a/resources_servers/swe_rebench/apply_golden_patch.py b/resources_servers/swe_rebench/apply_golden_patch.py
new file mode 100644
index 00000000000..7a388a582a9
--- /dev/null
+++ b/resources_servers/swe_rebench/apply_golden_patch.py
@@ -0,0 +1,165 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Grade every task with the dataset's own golden patch.
+
+This measures the dataset, not a model. A row whose golden patch does not make FAIL_TO_PASS
+pass is unusable for evaluation or training, so this is the check to run before trusting any
+score from SWE-rebench-V2.
+
+ gym env start --config resources_servers/swe_rebench/configs/swe_rebench.yaml \
+ --config nemo_gym/sandbox/providers/opensandbox/configs/opensandbox.yaml
+
+ python resources_servers/swe_rebench/apply_golden_patch.py \
+ +training_jsonl=resources_servers/swe_rebench/data/swe_rebench_training.jsonl \
+ +output_jsonl=results/swe_rebench_golden_patch.jsonl \
+ +concurrency=32 +limit=100
+"""
+
+import asyncio
+import json
+from collections import Counter
+from pathlib import Path
+
+from tqdm.auto import tqdm
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+SERVER_NAME = "swe_rebench_golden_patch_resources_server"
+
+
+def _stream_examples(path: Path, limit: int):
+ """Yield rows lazily.
+
+ The full set is 2.4 GB on disk and ~6.1 GB once parsed into dicts. Materialising it just to
+ feed a bounded worker pool wastes that memory for the whole run, and the peak lands hours in
+ when results have also accumulated.
+ """
+ with open(path, encoding="utf-8") as training:
+ for index, line in enumerate(training):
+ if limit and index >= limit:
+ return
+ line = line.strip()
+ if line:
+ yield json.loads(line)
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ limit = int(config.get("limit") or 0)
+ concurrency = int(config.get("concurrency") or 16)
+ training_fpath = Path(config["training_jsonl"])
+ output_fpath = Path(config.get("output_jsonl") or "results/swe_rebench_golden_patch.jsonl")
+
+ total = sum(1 for _ in _stream_examples(training_fpath, limit))
+ client = ServerClient.load_from_global_config()
+
+ # Bounded: the queue holds at most one row per worker, so resident rows track concurrency
+ # rather than dataset size.
+ queue: asyncio.Queue = asyncio.Queue(maxsize=concurrency)
+ resolved = 0
+ incomplete = 0
+ by_language: Counter[str] = Counter()
+ resolved_by_language: Counter[str] = Counter()
+ finished = 0
+
+ output_fpath.parent.mkdir(parents=True, exist_ok=True)
+ progress = tqdm(total=total, desc="golden patch")
+
+ with output_fpath.open("w", encoding="utf-8") as output:
+
+ async def worker() -> None:
+ nonlocal resolved, incomplete, finished
+ while True:
+ example = await queue.get()
+ if example is None:
+ queue.task_done()
+ return
+ try:
+ payload = example | {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+ try:
+ response = await client.post(server_name=SERVER_NAME, url_path="/verify", json=payload)
+ result = await response.json()
+ except Exception as exc:
+ # One unreachable task must not abandon the sweep; record it and carry on.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "language": example.get("language", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"request failed: {exc}",
+ }
+ if not isinstance(result, dict):
+ # Gym middleware returns repr(exc) as a bare JSON string when a handler
+ # raises, so a server-side fault arrives as a str.
+ result = {
+ "instance_id": example.get("instance_id", "?"),
+ "language": example.get("language", ""),
+ "resolved": False,
+ "evaluation_completed": False,
+ "error": f"server returned a non-object response: {str(result)[:300]}",
+ }
+
+ language = str(result.get("language") or example.get("language") or "unknown")
+ by_language[language] += 1
+ if result.get("resolved"):
+ resolved += 1
+ resolved_by_language[language] += 1
+ if not result.get("evaluation_completed", False):
+ incomplete += 1
+ output.write(json.dumps(result) + "\n")
+ finished += 1
+ if finished % 50 == 0:
+ output.flush() # a multi-hour run must leave usable rows if it is cut short
+ progress.update(1)
+ progress.set_description(
+ f"resolved {resolved}/{finished} ({100 * resolved / max(finished, 1):.1f}%) "
+ f"incomplete={incomplete}"
+ )
+ finally:
+ queue.task_done()
+
+ workers = [asyncio.create_task(worker()) for _ in range(concurrency)]
+ for example in _stream_examples(training_fpath, limit):
+ await queue.put(example)
+ for _ in workers:
+ await queue.put(None)
+ await asyncio.gather(*workers)
+
+ progress.close()
+ print(f"\ngolden-patch validation over {total} task(s)")
+ print(f" resolved: {resolved}/{total} ({100 * resolved / max(total, 1):.1f}%)")
+ print(f" incomplete: {incomplete}/{total} (no verdict: image, timeout or parser failure)")
+ print("\n by language (resolved / total):")
+ for language, count in by_language.most_common():
+ got = resolved_by_language[language]
+ print(f" {language:<10} {got:>5} / {count:<6} ({100 * got / count:5.1f}%)")
+ print(f"\nper-task rows: {output_fpath}")
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/swe_rebench/client.py b/resources_servers/swe_rebench/client.py
new file mode 100644
index 00000000000..f31abd3b5ca
--- /dev/null
+++ b/resources_servers/swe_rebench/client.py
@@ -0,0 +1,52 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Verify a single SWE-rebench row, for a quick smoke test of the server."""
+
+import asyncio
+import json
+
+from nemo_gym.global_config import get_global_config_dict
+from nemo_gym.server_utils import ServerClient
+
+
+EMPTY_RESPONSE = {
+ "output": [],
+ "id": "",
+ "created_at": 0,
+ "model": "",
+ "object": "response",
+ "parallel_tool_calls": False,
+ "tool_choice": "auto",
+ "tools": [],
+}
+
+
+async def main() -> None:
+ config = get_global_config_dict()
+ with open(config["training_jsonl"], encoding="utf-8") as training:
+ example = json.loads(next(training))
+ example |= {"responses_create_params": {"input": []}, "response": EMPTY_RESPONSE}
+
+ client = ServerClient.load_from_global_config()
+ result = await client.post(
+ server_name=config.get("resources_server_name", "swe_rebench_golden_patch_resources_server"),
+ url_path="/verify",
+ json=example,
+ )
+ print(json.dumps(await result.json(), indent=4))
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/resources_servers/swe_rebench/configs/swe_rebench.yaml b/resources_servers/swe_rebench/configs/swe_rebench.yaml
new file mode 100644
index 00000000000..b597770b5dd
--- /dev/null
+++ b/resources_servers/swe_rebench/configs/swe_rebench.yaml
@@ -0,0 +1,80 @@
+# Resources server for nebius/SWE-rebench-V2.
+#
+# Every row carries its own prebuilt image (docker.io/swerebenchv2/...), its install and test
+# commands, and the name of the upstream parser for its test log — so there is no image
+# repository or per-language configuration here. 32,079 rows across 20 languages.
+swe_rebench_resources_server:
+ resources_servers:
+ swe_rebench:
+ allowed_agents: [opencode_sandboxed_agent]
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ evaluation_timeout: 3600
+ is_verifying_golden_patch: false
+ apply_anti_cheating: true
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ # Limits are the BURST ceiling; requests are the guaranteed floor. cpu_cap_env sizes
+ # build tools to the limit, so a wider limit means faster compiles when a node has room.
+ resources:
+ # Wider than SWE-bench Verified: the set spans Go, Rust, Java, Scala and C++ builds,
+ # which are compile-bound where the Python rows are not.
+ cpu: 8
+ memory_mib: 30720
+ disk_gib: 30
+ provider_options:
+ # Requests well below limits so pods bin-pack on a loaded cluster. At the concurrency
+ # a full-set sweep needs, requests == limits would reserve the cluster up front.
+ #
+ # 1 full vCPU, not less: measured elsewhere on this infra, a 0.25 request left 22% of
+ # rollouts (228/1022) hitting their timeout outright from CPU starvation under
+ # contention. CPU is compressible so bursting is safe; memory is not, hence a 4 GiB
+ # floor with headroom to 30 GiB for the JVM and Go/Rust link steps.
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 30
+ metadata:
+ benchmark: swe-rebench-v2
+
+# Golden-patch validation: grade the dataset's own patch instead of an agent's. A row whose
+# golden patch does not resolve is a broken row, and scoring an agent against it measures noise.
+# Run it with resources_servers/swe_rebench/apply_golden_patch.py.
+swe_rebench_golden_patch_resources_server:
+ resources_servers:
+ swe_rebench:
+ entrypoint: app.py
+ domain: coding
+ verified: false
+
+ # 20 minutes: the pilot averaged ~6 min/task with nothing near the old 60-minute ceiling,
+ # so this caps the tail without truncating honest work.
+ evaluation_timeout: 1200
+ is_verifying_golden_patch: true
+
+ # A full-set sweep runs ~2000 verifications concurrently against this one server. Each is
+ # mostly awaiting a remote sandbox, but the per-task log parse and result encode are real
+ # CPU, and one event loop cannot absorb 2000 of them. Spreading across workers keeps the
+ # accept queue short; the file-based parser cache is shared, so each worker loads it once.
+ num_workers: 8
+
+ sandbox_provider: sandbox
+ sandbox_config:
+ ttl_s: 18000
+ ready_timeout_s: 1200
+ resources:
+ cpu: 8
+ memory_mib: 30720
+ disk_gib: 30
+ provider_options:
+ resource_requests:
+ cpu: 1
+ memory_mib: 4096
+ disk_gib: 30
+ metadata:
+ benchmark: swe-rebench-v2-golden-patch
diff --git a/resources_servers/swe_rebench/configs/swe_rebench_example.yaml b/resources_servers/swe_rebench/configs/swe_rebench_example.yaml
new file mode 100644
index 00000000000..3024dd46673
--- /dev/null
+++ b/resources_servers/swe_rebench/configs/swe_rebench_example.yaml
@@ -0,0 +1,25 @@
+# swe_rebench's CI "example" data-validation config -- separate from swe_rebench.yaml so starting
+# the base/golden-patch servers for golden-patch validation never needs to pull in an
+# agent+model config (mirrors the *_opencode.yaml split, same reasoning).
+config_paths:
+ - resources_servers/swe_rebench/configs/swe_rebench.yaml
+
+# CI's "example" data-validation gate (gym env test +should_validate_data=true): grades the
+# dataset's own golden patch for 5 rows via a plain simple_agent (not opencode_sandboxed_agent --
+# this only needs a real verify() round-trip to exercise data/example.jsonl's shape, not an agent
+# that can actually solve the task). See resources_servers/swebench_pro/configs/swebench_pro.yaml
+# for the same pattern.
+swe_rebench_example_agent:
+ responses_api_agents:
+ simple_agent:
+ entrypoint: app.py
+ resources_server:
+ type: resources_servers
+ name: swe_rebench_golden_patch_resources_server
+ model_server:
+ type: responses_api_models
+ name: policy_model
+ datasets:
+ - name: example
+ type: example
+ jsonl_fpath: resources_servers/swe_rebench/data/example.jsonl
diff --git a/resources_servers/swe_rebench/configs/swe_rebench_opencode.yaml b/resources_servers/swe_rebench/configs/swe_rebench_opencode.yaml
new file mode 100644
index 00000000000..76eced499d5
--- /dev/null
+++ b/resources_servers/swe_rebench/configs/swe_rebench_opencode.yaml
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Wires the opencode sandboxed agent to swe_rebench_resources_server for a training run --
+# `swe_rebench.yaml` alone only defines the resources server, which is enough for golden-patch
+# validation (apply_golden_patch.py talks to it directly, no agent involved) but not enough to
+# actually run an agent against the dataset. This is a separate file, not folded into
+# swe_rebench.yaml, so golden-patch validation keeps working without pulling in the agent's
+# (much larger) opencode/sandbox config.
+#
+# This is training data (data/swe_rebench_training.jsonl, only the 22,684 already-supported
+# instances -- see the README), not a fixed eval benchmark.
+#
+# gym env start --config resources_servers/swe_rebench/configs/swe_rebench_opencode.yaml
+
+config_paths:
+ - responses_api_agents/opencode_sandboxed_agent/configs/opencode_sandboxed_agent.yaml
+ - resources_servers/swe_rebench/configs/swe_rebench.yaml
+
+swe_rebench_opencode_sandboxed_agent:
+ _inherit_from: opencode_sandboxed_agent
+ responses_api_agents:
+ opencode_sandboxed_agent:
+ resources_server:
+ type: resources_servers
+ name: swe_rebench_resources_server
+ datasets:
+ - name: swe_rebench_v2
+ type: train
+ jsonl_fpath: resources_servers/swe_rebench/data/swe_rebench_training.jsonl
+ num_repeats: 1
+ # nebius/SWE-rebench-V2's own Hub metadata license (cc-by-4.0).
+ license: Creative Commons Attribution 4.0 International
diff --git a/resources_servers/swe_rebench/data/.gitignore b/resources_servers/swe_rebench/data/.gitignore
new file mode 100644
index 00000000000..a3ff8eff50a
--- /dev/null
+++ b/resources_servers/swe_rebench/data/.gitignore
@@ -0,0 +1,5 @@
+# Prepared training JSONL is a ~1.8 GB filtered slice of the Hub dataset (patch/test_patch
+# content for every supported instance). Regenerate with prepare_swe_rebench.py.
+*.jsonl
+!example.jsonl
+!example_rollouts.jsonl
diff --git a/resources_servers/swe_rebench/data/example.jsonl b/resources_servers/swe_rebench/data/example.jsonl
new file mode 100644
index 00000000000..ac35928f9ce
--- /dev/null
+++ b/resources_servers/swe_rebench/data/example.jsonl
@@ -0,0 +1,5 @@
+{"instance_id": "intel__rohd-458", "repo": "intel/rohd", "base_commit": "395921c5501612c62c812d3aa7c57517018c4fc8", "patch": "diff --git a/lib/src/signals/logic_structure.dart b/lib/src/signals/logic_structure.dart\nindex 0a5a2510d..47697c66a 100644\n--- a/lib/src/signals/logic_structure.dart\n+++ b/lib/src/signals/logic_structure.dart\n@@ -281,10 +281,12 @@ class LogicStructure implements Logic {\n Logic? get srcConnection => null;\n \n @override\n- LogicValue get value => packed.value;\n+ LogicValue get value =>\n+ elements.map((e) => e.value).toList(growable: false).rswizzle();\n \n @override\n- LogicValue? get previousValue => packed.previousValue;\n+ LogicValue? get previousValue =>\n+ elements.map((e) => e.value).toList(growable: false).rswizzle();\n \n @override\n late final int width = elements.map((e) => e.width).sum;\n@@ -396,10 +398,32 @@ class LogicStructure implements Logic {\n @Deprecated('Use `value` instead.'\n ' Check `width` separately to confirm single-bit.')\n @override\n+ // Can rely on `packed` here because it must be 1 bit.\n LogicValue get bit => packed.bit;\n \n @override\n- Stream get changed => packed.changed;\n+ late final Stream changed = _internalPacked.changed;\n+\n+ /// An internal version of [packed] for instrumentation operations on this\n+ /// [LogicStructure].\n+ late final _internalPacked = _generateInternalPacked();\n+\n+ /// Generates and subscribes to be stored lazily into [_internalPacked].\n+ Logic _generateInternalPacked() {\n+ final internalPacked = Logic(width: width)..put(value);\n+\n+ void updateInternalPacked() {\n+ internalPacked.put(value);\n+ }\n+\n+ for (final element in elements) {\n+ element.glitch.listen((args) {\n+ updateInternalPacked();\n+ });\n+ }\n+\n+ return internalPacked;\n+ }\n \n @override\n Logic eq(dynamic other) => packed.eq(other);\n@@ -408,7 +432,8 @@ class LogicStructure implements Logic {\n Logic neq(dynamic other) => packed.neq(other);\n \n @override\n- SynchronousEmitter get glitch => packed.glitch;\n+ late final SynchronousEmitter glitch =\n+ _internalPacked.glitch;\n \n @override\n Logic gt(dynamic other) => packed.gt(other);\n@@ -424,28 +449,32 @@ class LogicStructure implements Logic {\n \n @Deprecated('Use value.isValid instead.')\n @override\n- bool hasValidValue() => packed.hasValidValue();\n+ bool hasValidValue() => value.isValid;\n \n @Deprecated('Use value.isFloating instead.')\n @override\n- bool isFloating() => packed.isFloating();\n+ bool isFloating() => value.isFloating;\n \n @override\n Logic isIn(List list) => packed.isIn(list);\n \n @override\n+ // Can rely on `packed` here because it must be 1 bit.\n Stream get negedge => packed.negedge;\n \n @override\n+ // Can rely on `packed` here because it must be 1 bit.\n Stream get posedge => packed.posedge;\n \n @override\n- Future get nextChanged => packed.nextChanged;\n+ Future get nextChanged => changed.first;\n \n @override\n+ // Can rely on `packed` here because it must be 1 bit.\n Future get nextNegedge => packed.nextNegedge;\n \n @override\n+ // Can rely on `packed` here because it must be 1 bit.\n Future get nextPosedge => packed.nextPosedge;\n \n @override\n@@ -460,13 +489,14 @@ class LogicStructure implements Logic {\n @override\n Logic zeroExtend(int newWidth) => packed.zeroExtend(newWidth);\n \n+ @Deprecated('Use `value` instead.'\n+ ' Check `width` separately to confirm single-bit.')\n @override\n- // ignore: deprecated_member_use_from_same_package\n- BigInt get valueBigInt => packed.valueBigInt;\n+ BigInt get valueBigInt => value.toBigInt();\n \n+ @Deprecated('Use value.toInt() instead.')\n @override\n- // ignore: deprecated_member_use_from_same_package\n- int get valueInt => packed.valueInt;\n+ int get valueInt => value.toInt();\n \n @override\n Logic? get _srcConnection => throw UnsupportedError('Delegated to elements');\ndiff --git a/lib/src/signals/wire.dart b/lib/src/signals/wire.dart\nindex 24cd51184..17ab3c5f6 100644\n--- a/lib/src/signals/wire.dart\n+++ b/lib/src/signals/wire.dart\n@@ -55,11 +55,26 @@ class _Wire {\n // them! saves performance!\n _changedBeingWatched = true;\n \n- _postTickSubscription ??= Simulator.postTick.listen((event) {\n- if (value != _preTickValue && _preTickValue != null) {\n- _changedController.add(LogicValueChanged(value, _preTickValue!));\n- }\n- });\n+ StreamSubscription subscribe() {\n+ unawaited(Simulator.resetRequested.then((_) async {\n+ final oldPostTickSubscription = _postTickSubscription;\n+\n+ _postTickSubscription = subscribe();\n+\n+ unawaited(oldPostTickSubscription?.cancel());\n+ }));\n+\n+ return Simulator.postTick.listen((event) {\n+ if (value != _preTickValue && _preTickValue != null) {\n+ _changedController.add(LogicValueChanged(value, _preTickValue!));\n+ }\n+ });\n+ }\n+\n+ assert(_postTickSubscription == null,\n+ 'Should not be creating a new subscription if one exists.');\n+\n+ _postTickSubscription = subscribe();\n }\n return _changedController.stream;\n }\n@@ -68,9 +83,22 @@ class _Wire {\n ///\n /// If one already exists, it will not create a new one.\n void _setupPreTickListener() {\n- _preTickSubscription ??= Simulator.preTick.listen((event) {\n+ _preTickSubscription = Simulator.preTick.listen((event) {\n _preTickValue = value;\n });\n+\n+ unawaited(Simulator.resetRequested.then((_) async {\n+ assert(_preTickSubscription != null,\n+ 'Should not be null if we are setting up a new one.');\n+\n+ _preTickValue = value;\n+\n+ final oldPreTickSubscription = _preTickSubscription;\n+\n+ _setupPreTickListener();\n+\n+ unawaited(oldPreTickSubscription?.cancel());\n+ }));\n }\n \n /// The [value] of this signal before the most recent [Simulator.tick] had\ndiff --git a/lib/src/simulator.dart b/lib/src/simulator.dart\nindex 0cd8c2532..f115a55f4 100644\n--- a/lib/src/simulator.dart\n+++ b/lib/src/simulator.dart\n@@ -89,25 +89,29 @@ abstract class Simulator {\n \n /// Emits an event before any other actions take place on the tick.\n static Stream get preTick => _preTickController.stream;\n+ static StreamController _preTickController =\n+ StreamController.broadcast(sync: true);\n \n /// Emits an event at the start of actions within a tick.\n static Stream get startTick => _startTickController.stream;\n+ static StreamController _startTickController =\n+ StreamController.broadcast(sync: true);\n \n /// Emits an event when most events are complete, and clocks are stable.\n static Stream get clkStable => _clkStableController.stream;\n+ static StreamController _clkStableController =\n+ StreamController.broadcast(sync: true);\n \n /// Emits an event after all events are completed.\n static Stream get postTick => _postTickController.stream;\n-\n- static StreamController _preTickController =\n- StreamController.broadcast(sync: true);\n- static StreamController _startTickController =\n- StreamController.broadcast(sync: true);\n- static StreamController _clkStableController =\n- StreamController.broadcast(sync: true);\n static StreamController _postTickController =\n StreamController.broadcast(sync: true);\n \n+ /// Completes when [reset] is called after the [Simulator] has completed any\n+ /// actions it needs to perform to prepare for the next simulation.\n+ static Future get resetRequested => _resetCompleter.future;\n+ static Completer _resetCompleter = Completer();\n+\n /// Completes when the simulation has completed.\n static Future get simulationEnded => _simulationEndedCompleter.future;\n static Completer _simulationEndedCompleter = Completer();\n@@ -156,6 +160,13 @@ abstract class Simulator {\n _pendingTimestamps.clear();\n _phase = SimulatorPhase.outOfTick;\n _injectedActions.clear();\n+\n+ // make sure we've already passed the new completer so that listeners can\n+ // get the latest\n+ final oldResetCompleter = _resetCompleter;\n+ _resetCompleter = Completer();\n+ oldResetCompleter.complete();\n+ await oldResetCompleter.future;\n }\n \n /// Sets a time, after which, the [Simulator] will halt processing of new\n", "test_patch": "diff --git a/test/changed_test.dart b/test/changed_test.dart\nindex 4313cfbaa..808d59403 100644\n--- a/test/changed_test.dart\n+++ b/test/changed_test.dart\n@@ -39,6 +39,79 @@ void main() {\n expect(numChangesDetected, equals(1));\n });\n \n+ group('across simulator reset', () {\n+ Future testAcrossSimulatorResets(Logic a) async {\n+ var numChangesDetected = 0;\n+\n+ a.changed.listen((event) {\n+ numChangesDetected++;\n+ expect(event.newValue, event.previousValue + 1);\n+ });\n+\n+ a.glitch.listen((args) {});\n+\n+ Simulator.registerAction(10, () => a.put(1));\n+\n+ await Simulator.run();\n+\n+ expect(numChangesDetected, 1);\n+\n+ await Simulator.reset();\n+\n+ expect(a.value.toInt(), 1);\n+\n+ // should *not* trigger a change, didn't change!\n+ Simulator.registerAction(20, () => a.put(1));\n+\n+ await Simulator.run();\n+\n+ expect(numChangesDetected, 1);\n+\n+ await Simulator.reset();\n+\n+ expect(a.value.toInt(), 1);\n+\n+ // *should* trigger a change\n+ Simulator.registerAction(30, () => a.put(2));\n+ Simulator.registerAction(40, () => a.put(3));\n+\n+ await Simulator.run();\n+\n+ expect(a.value.toInt(), 3);\n+\n+ expect(numChangesDetected, 3);\n+ }\n+\n+ test('normal logic', () async {\n+ final a = Logic(width: 8)..put(0);\n+\n+ await testAcrossSimulatorResets(a);\n+ });\n+\n+ test('logic structure', () async {\n+ final a = LogicStructure([Logic(), Logic()])..put(0);\n+\n+ await testAcrossSimulatorResets(a);\n+ });\n+ });\n+\n+ test('changed does not trigger first time if no change', () async {\n+ final a = Logic()..put(1);\n+\n+ var numChangesDetected = 0;\n+\n+ a.changed.listen((event) {\n+ numChangesDetected++;\n+ });\n+\n+ Simulator.registerAction(10, () => a.put(1));\n+ Simulator.registerAction(20, () => a.put(1));\n+\n+ await Simulator.run();\n+\n+ expect(numChangesDetected, 0);\n+ });\n+\n test('clk edge counter', () async {\n final clk = SimpleClockGenerator(10).clk;\n final b = Logic();\ndiff --git a/test/logic_structure_test.dart b/test/logic_structure_test.dart\nindex 94705f243..aa8724e27 100644\n--- a/test/logic_structure_test.dart\n+++ b/test/logic_structure_test.dart\n@@ -7,6 +7,8 @@\n // 2023 May 5\n // Author: Max Korbel \n \n+import 'dart:async';\n+\n import 'package:rohd/rohd.dart';\n import 'package:rohd/src/utilities/simcompare.dart';\n import 'package:test/test.dart';\n@@ -70,11 +72,81 @@ class FancyStructInverter extends Module {\n }\n }\n \n+class StructModuleWithInstrumentation extends Module {\n+ StructModuleWithInstrumentation(Logic a) {\n+ a = addInput('a', a, width: 2);\n+\n+ MyStruct()\n+ ..gets(a)\n+ ..value\n+ ..previousValue\n+ ..width\n+ ..srcConnection\n+ ..dstConnections\n+ ..parentModule\n+ ..parentStructure\n+ ..naming\n+ ..arrayIndex\n+ ..isArrayMember\n+ ..leafElements\n+ ..isInput\n+ ..isOutput\n+ ..changed\n+ ..glitch\n+ ..nextChanged\n+ // ignore: deprecated_member_use_from_same_package\n+ ..hasValidValue()\n+ // ignore: deprecated_member_use_from_same_package\n+ ..isFloating()\n+ // ignore: deprecated_member_use_from_same_package\n+ ..valueBigInt\n+ // ignore: deprecated_member_use_from_same_package\n+ ..valueInt;\n+ }\n+}\n+\n void main() {\n tearDown(() async {\n await Simulator.reset();\n });\n \n+ test('late previousValue', () async {\n+ final s = MyStruct();\n+ final clk = SimpleClockGenerator(10).clk;\n+ Simulator.setMaxSimTime(200);\n+\n+ var i = 0;\n+ clk.posedge.listen((_) => s.inject(i++));\n+\n+ unawaited(Simulator.run());\n+\n+ await clk.nextPosedge;\n+ await clk.nextPosedge;\n+ await clk.nextPosedge;\n+\n+ expect(s.previousValue, isNotNull);\n+ expect(s.previousValue!.toInt(), 1);\n+\n+ s.packed;\n+ await clk.nextPosedge;\n+ await clk.nextPosedge;\n+ expect(s.packed.previousValue, s.previousValue);\n+ await clk.nextPosedge;\n+ expect(s.packed.previousValue, s.previousValue);\n+\n+ await Simulator.endSimulation();\n+ });\n+\n+ test('instrumentation on struct does not make hardware', () async {\n+ final mod = StructModuleWithInstrumentation(Const(0, width: 2));\n+ await mod.build();\n+\n+ final sv = mod.generateSynth();\n+\n+ expect(sv.contains('swizzle'), isFalse,\n+ reason: 'Should not pack from instrumentation!');\n+ });\n+\n group('LogicStructure construction', () {\n test('simple construction', () {\n final s = LogicStructure([\ndiff --git a/tool/gh_actions/run_tests.sh b/tool/gh_actions/run_tests.sh\nindex 4f82a45a3..d426240f3 100755\n--- a/tool/gh_actions/run_tests.sh\n+++ b/tool/gh_actions/run_tests.sh\n@@ -13,5 +13,6 @@ set -euo pipefail\n \n dart test\n \n-# run tests in JS\n+# run tests in JS (increase heap size also)\n+export NODE_OPTIONS=\"--max-old-space-size=6144\"\n dart test --platform node\n\\ No newline at end of file\n", "problem_statement": "Non-synthesizable APIs on `LogicStructure` rely on `packed`\n### Describe the bug\n\nNon-synthesizable APIs such as `posedge` or `value` depend on the result of `packed` to compute their value. This is generally accurate, but has two major downsides:\r\n- Calling `packed` creates and connects a new signal. If a testbench calls `packed` (directly or indirectly) on a signal within a `Module`, it will generate some additional hardware (though it won't have any functional impact).\r\n- The `previousValue` will be `null` the first time it is called since `packed` is lazily initialized. This can cause surprising testbench failures.\n\n### To Reproduce\n\nCall `previousValue` on a `LogicStructure` and observe that it is `null`.\n\n### Expected behavior\n\nThe APIs should not have side effects of creating hardware (even without functional impact) and should be functional in the same way as `Logic`.\n\n### Actual behavior\n\n_No response_\n\n### Additional: Dart SDK info\n\n_No response_\n\n### Additional: pubspec.yaml\n\n_No response_\n\n### Additional: Context\n\n_No response_", "language": "dart", "image_name": "docker.io/swerebenchv2/intel-rohd:458-395921c", "install_config": {"base_image_name": "dart_base", "docker_specs": {"_variant": null, "bazel_version": null, "bun_version": null, "cargo_version": null, "deno_version": null, "docker_version": null, "erlang_version": null, "gcc_version": null, "go_version": null, "helm_version": null, "java_version": null, "jdk_version": null, "llvm_version": null, "lua_version": null, "luajit_version": null, "neovim_version": null, "node_version": null, "npm_version": null, "nvim_version": null, "pnpm_version": null, "python_image": null, "python_version": null, "redis_version": null, "ruby_version": null, "rust_version": null, "rustc_version": null, "solana_version": null, "sqlite_version": null}, "install": ["export PUB_CACHE=/workspace/.pub-cache && mkdir -p /workspace/.pub-cache", "export PUB_CACHE=/workspace/.pub-cache && dart pub get"], "log_parser": "parse_log_dart", "test_cmd": "dart test --reporter json --no-color"}, "FAIL_TO_PASS": ["across simulator reset normal logic", "late previousValue", "across simulator reset logic structure", "instrumentation on struct does not make hardware"], "PASS_TO_PASS": ["build runs properly for comb sensitivity search", "module reuse should fail normally", "execute math conditionally normal", "false sensitivity does not cause false comb cycle", "false sensitivity does not cause false comb cycle (test with enable 1)", "functional NotGate bus", "false sensitivity does not cause false comb cycle (test with enable 0)", "functional And2Gate bus", "functional Bus shrink", "functional Operator Indexing", "functional Bus swizzle", "functional put width mismatches width too small", "collapse pretty", "functional put width mismatches width too big", "functional invalid connection exceptions self-connecting logic", "module duplicate assignment should fail normally", "simpler example normal", "staged example normal", "should return true if rohd version is similar in both pubspec.yaml and config class.", "propagation example normal", "Add Function: should return duplicates if duplicate value exists through addAll method", "Add Function: should return duplicates if duplicate value exists through add method", "propagation example ssa", "remove function: should return value if removed value are not duplicate", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is valid, THEN expect to compile successfully.", "remove function: should return exception if removed value that are duplicate", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is invalid, THEN expect to throw exception.", "functional conditional loopy comb normal", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is null, THEN expect to throw exception.", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is empty string, THEN expect to throw exception.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is valid, THEN expected to compile successfully.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is invalid, THEN expected to sanitize name.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is null, THEN expected to auto initialize name.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is null, AND runtime type name is invalid, THEN expect to sanitize the result", "should return Exception when super.name is empty string", "functional conditional loopy comb ssa", "should contains ROHD version number when sv is generated.", "functional flopped expressions for conditionals caseNormal", "functional flopped expressions for conditionals caseZ", "counter example", "instantiate", "functional flopped expressions for conditionals ifNormal", "should contains ROHD version number when wavedumper is generated.", "functional bad if blocks IfBlock with only else fails", "functional bad if blocks IfBlock with else in the middle fails", "tree example", "benchmark pipeline", "functional bad if blocks IfBlock with else at the start fails", "GIVEN logic name is valid THEN expected to see proper name being generated", "Logic extend zero extend with less width throws exception", "Test signals for sanitized names", "functional NotGate single bit", "fir filter example", "GIVEN logic name is invalid THEN expected to see sanitized name", "Logic extend sign extend with less width throws exception", "interface ports dont get doubled up", "functional Contention not gate", "GIVEN logic name is null THEN expected to see autogeneration of name", "uniquified interfaces get uniquified ports", "functional And2Gate single bit", "zero-out receivers in default case", "GIVEN logic name is empty string THEN expected to see autogeneration of name", "functional Or2Gate single bit", "should return exception when port name is not sanitary.", "conditional type is used", "functional Xor2Gate single bit", "fsm example", "maybe port tryPort, exists", "port name: GIVEN port name is empty string THEN expected to see exception", "maybe port tryPort, doesnt exist", "fsm validation duplicate state identifiers throws exception", "mux shorthand", "renameable name stays present", "dLatch assignments en = 0, out is blocked", "iterable removable queue forEach no removal", "fsm validation missing reset state throws exception", "iterable removable queue forEach remove even", "mergeable name is omitted", "dLatch assignments en = 1, passthrough is blocked", "iterable removable queue forEach remove odd", "state index", "unnamed is omitted", "Cases test LogicValue", "dLatch assignments en 1->0, value latch is blocked", "simcompare if invalid ", "iterable removable queue forEach remove all", "construct LogicArray empty array", "unnamed is omitted even when named", "iterable removable queue clear", "non-synthesizable signal deposition should not impact generated verilog", "construct LogicArray empty multi-dim array", "Cases test Int", "iterable removable queue takeAll", "dLatch oneComb en = 0, out is blocked", "reserved name stays present", "unconnected port does not duplicate internal signal", "Cases test Logic", "construct LogicArray single-dim array", "crash compare", "tryInput, exists", "reserved and input with same name errors", "dLatch oneComb en = 1, passthrough is blocked", "construct LogicArray many-dim array", "Cases test Default", "Logic withSet setting with bigger number throws exception", "sensitive naming assigns and gates", "bin with underscores", "simcompare Conditional assign module with invalid inputs", "tryInput, doesnt exist", "bad compare", "reserved and output with same name errors", "Cases test Exceptions(Int)", "Logic withSet setting with number in middle overrun throws exception", "tryOutput, exists", "big value test", "construct LogicArray no dim exception", "dLatch oneComb en 1->0, value latch is blocked", "sensitive naming bus subset", "sv expansion handles lint issues", "2x reserved name errors", "two input bitwise and2", "tryOutput, doesnt exist", "mod3 sizes", "Cases test Condition width mismatch Exception", "construct LogicArray overly unpacking exception", "floating signals unconnected floating", "dLatch manyCombs en = 0, out is blocked", "LogicValue Misc reversed", "compare two positive int-width numbers", "floating signals driven to z", "Cases test Expression width mismatch Exception for Logic", "construct LogicArray unpacked dims get passed down", "unpreferred signals get lower priority when merging", "dLatch manyCombs en = 1, passthrough is blocked", "simcompare Unique case", "multimodules4", "logic value fromBool", "values test small Int storage len=62", "Cases test Expression width mismatch Exception for LogicValue", "values test big Int storage len=62", "dLatch manyCombs en 1->0, value latch is blocked", "LogicValue factory and to methods", "Cases test Null width Exception", "long chain of combinational logic and modules", "values test cross compare len=62", "LogicValue big unsigned int string", "LogicValue extend extend with same width returns same thing", "values test big math len=62", "LogicValue -1 int vs. 64 1s for big width", "LogicValue extend extend with less width throws exception", "simcompare should return exception if a conditional is used multiple times.", "values test division test len=62", "LogicValue invalid string ofString", "LogicValue extend extend with more width properly extends", "values test modulo test len=62", "LogicValue extend zero extend pads 0s", "LogicValue extend sign extend for positive number pads 0s", "values test clog test len=62", "LogicValue LogicValue Construction", "multimodules5", "LogicValue extend sign extend for negative number pads 1s", "LogicValue unary", "values test small Int storage len=63", "values test big Int storage len=63", "LogicValue and", "LogicValue withSet setting with bigger number throws exception", "values test cross compare len=63", "LogicValue or", "LogicValue withSet setting with number in middle overrun throws exception", "values test big math len=63", "LogicValue withSet setting same width returns only new", "LogicValue xor", "values test division test len=63", "LogicValue withSet setting at front", "LogicValue ==", "values test modulo test len=63", "LogicValue withSet setting at end", "signal and module naming conflicts inputPort == outputPort", "LogicValue isPosEdge", "LogicValue withSet setting in the middle", "values test clog test len=63", "LogicValue isNegEdge", "complex trunk with leaves doesnt duplicate identical modules", "should return SignalRedrivenException when there are multiple drivers for a flop when redrive not allowed.", "values test small Int storage len=64", "values test big Int storage len=64", "different reserved definition name modules stay separate", "values test cross compare len=64", "values test big math len=64", "two input bitwise or2", "values test division test len=64", "should return NonSupportedTypeException when simcompare expected output values has invalid runtime type. ", "values test modulo test len=64", "values test clog test len=64", "two input bitwise xor2", "should return SignalRedrivenException when driven with x signals and valid signals when redrive not allowed.", "values test small Int storage len=65", "LogicValue.of example", "values test big Int storage len=65", "LogicValue toString 1 bit", "values test cross compare len=65", "values test big math len=65", "LogicValue toString 1 bit invalid", "values test division test len=65", "hier pair interface", "LogicValue toString <64-bit positive", "values test modulo test len=65", "LogicValue toString <64-bit negative", "signal and module naming conflicts inputPort == reservedInternalSignal", "values test clog test len=65", "LogicValue toString 64-bit positive", "values test small Int storage len=66", "LogicValue toString 64-bit negative", "values test big Int storage len=66", "simple pair interface", "values test cross compare len=66", "values test big math len=66", "LogicValue toString >64-bit positive", "values test division test len=66", "LogicValue toString >64-bit negative", "values test modulo test len=66", "priority amongst different types of signals", "signal and module naming conflicts inputPort == reservedInternalModuleInstance", "sample on flop with listen", "LogicValue toString include width", "values test clog test len=66", "unary operations (including \"to\") toMethods", "non-mergeable name sticks around when not needed", "sample on flop with await", "values test small Int storage len=67", "unary operations (including \"to\") large-width toInt big", "values test big Int storage len=67", "unary operations (including \"to\") large-width toInt filled", "benchmark logic value of", "values test cross compare len=67", "values test big math len=67", "values test division test len=67", "values test modulo test len=67", "unary operations (including \"to\") properties+indexing", "logicarray passthrough simple single element, unpacked", "Logic replicate multiply by a multiplier <1 throws exception", "values test clog test len=67", "shifts basic", "values test small Int storage len=68", "shifts small int boundary shift right logical", "values test big Int storage len=68", "shifts small int boundary shift left logical", "values test cross compare len=68", "values test big math len=68", "values test division test len=68", "shifts small int boundary shift right arithmetic", "values test modulo test len=68", "shifts big shift right logical", "values test clog test len=68", "signal and module naming conflicts outputPort == reservedInternalSignal", "simulator supports registration of actions at time stamps", "shifts big shift left logical", "shifts big shift right arithmetic", "simulator stops at maximum time", "shifts filled shift right logical", "simulator stops when endSimulation is called", "shifts filled shift left logical", "simulator reset waits for simulation to complete", "shifts filled shift right arithmetic", "signal and module naming conflicts outputPort == reservedInternalModuleInstance", "simulator end of action waits before ending", "shifts more than width", "Timestamper format must be correct", "simulator end of action waits async before ending", "synth builder should throw exception if module is not built", "simcompare getting out of range on pipeline is error", "LogicValue simple swizzle", "shifts huge left", "simcompare getting unregisterd signal on pipeline is error", "LogicValue simple rswizzle", "shifts huge right", "shifts huge right arithmetic", "LogicValue of multi-bit simple swizzle", "simulator end simulation waits for simulation to end", "flying output", "synth builder should able to create submodule in system verilog rtl", "signal declaration order input, output, and internal signals are sorted", "LogicValue of multi-bit simple rswizzle", "simulator waits for async registered actions to complete", "shifts huge right arithmetic zero", "flying input", "Logic replicate LogicValue.replicate tests", "simulator waits for async injected actions to complete", "signal declaration order input, output, and internal signals are sorted (different widths)", "shifts invalid values shift left", "doubled input", "Using same reserved name twice throws", "LogicValue of multi-bit 64-bit swizzle", "submodule port connections input, output are sorted by declaration order", "shifts invalid values shift right", "shifts invalid values shift right arithmetic", "shifts shift by 0", "LogicValue of multi-bit >64-bit swizzle single concat", "shifts invalid shamt", "doubled gapped input", "expressions in sub-module declaration", "LogicValue of multi-bit >64-bit swizzle", "shifts unsupported shamt type", "no floating assignments", "LogicValue of multi-bit variety of sizes smaller", "shorthand with sequential arrays with double reset error", "shifts example large shifts", "VCD parser can parse Icarus Verilog generated VCD file", "single changed multiple injections", "infer width int", "infer width bigint", "infer width negative int", "infer width negative BigInt", "simcompare Index Logic by an Integer test", "infer width logicvalue", "simcompare index Logic(1bit) by Logic index out of bounds test", "infer width unsupported", "changed does not trigger first time if no change", "simcompare slice 1 bit wide Logic test", "comparison operations equalsWithDontCare", "signal and module naming conflicts reservedInternalSignal == reservedInternalModuleInstance", "simcompare Index Logic by does not accept input other than int or Logic", "comparison operations equality", "clk edge counter", "comparison operations inequality", "injection triggers edge", "comparison operations greater", "attach dumper after put", "comparison operations less", "arithmetic operations power", "LogicStructure construction simple construction", "attach dumper before put", "injection triggers flop normal logic", "arithmetic operations addsub", "arithmetic operations muldiv", "LogicStructure construction sub logic in two structures throws exception", "injection triggers flop arrays", "not and reductions not", "LogicStructure construction sub structure in two structures throws exception", "multiple injects in the same timestamp", "injection triggers flop with enable logicvalue 1", "not and reductions and", "not and reductions or", "not and reductions xor", "LogicStructure construction structure clone", "LogicValue of multi-bit variety of sizes larger", "multi-bit value", "injection triggers flop with enable", "LogicValue of multi-bit filled simple swizzle", "BigLogicValue overrides", "LogicValue of multi-bit filled big swizzle", "reconnected signal still hits changed events", "LogicValue of multi-bit filled 0-width both swizzle", "multi-bit value mixed invalid", "FilledLogicValue overrides", "LogicValue of multi-bit filled 0-width lhs swizzle", "chain of reconnected signals still changes", "LogicValue of multi-bit filled 0-width rhs swizzle", "64-bit conversions 64-bit LogicValues larger than maximum positive value on integer are properly converted when converted from BigInt", "64-bit conversions 64-bit BigInts larger than max pos int value constructing a LogicValue is correct", "LogicValue of multi-bit non-filled 0-width both swizzle", "chain of reconnected signals still glitches", "64-bit conversions 64-bit binary negatives are converted properly with bin", "LogicValue of multi-bit non-filled 0-width lhs swizzle", "hash and equality hash", "late connection propagates without put", "LogicValue of multi-bit non-filled 0-width rhs swizzle", "dump after max sim time works", "hash and equality zero-width", "Utility operations clog2 operation", "create non-existent output directories", "Utility operations clog2 with 1 then 0s", "random value generation should throw exception when max is not int or BigInt.", "random value generation should throw exception when max is less than 0.", "random value generation should throw exception when max is set when generate random num with invalid bits.", "signal and module naming conflicts internalModuleDefinition == topDefinitionName", "injection on edge happens on same edge", "random value generation should return random logic value with invalid bits when includeInvalidBits is set to true.", "random value generation should return empty LogicValue when width is 0.", "random value generation should return empty LogicValue when max is 0 for int and big int.", "chain of changed and injects", "random value generation should return random int logic value without invalid bits when having different width and max constraint.", "random value generation should return random big integer logic value with width greater than 64 when having different width and max constraint.", "Comparable LogicValue positive - int", "Comparable LogicValue unsigned values - int 64 bits", "definition name respected with no conflicts", "Comparable LogicValue unsigned values - int 8 bits", "definition name uniquified with conflicts", "Comparable LogicValue unsigned BigInt & int", "Comparable LogicValue compare interpretable neg int-width numbers", "zero-width swizzle", "Comparable LogicValue unsigned BigInt", "definition name reserved throws exception with conflicts", "Comparable LogicValue Exceptions", "BigInt toIntUnsigned extension", "BigInt toIntUnsigned Width Exception", "instance name uniquified with conflicts", "one shift left by", "instance name reserved throws exception with conflicts", "precision adjustment handled for all widths", "ssa uninitialized", "benchmark byte enable", "benchmark waveform", "benchmark many seq and comb assignments", "benchmark many seq and comb manyCombs", "benchmark many seq and comb oneComb", "benchmark many seq and comb manySsaCombs", "benchmark many seq and comb oneSsaComb", "benchmark comb guard fanout", "benchmark ssa driver search"], "responses_create_params": {"input": [{"role": "user", "content": "Non-synthesizable APIs on `LogicStructure` rely on `packed`\n### Describe the bug\n\nNon-synthesizable APIs such as `posedge` or `value` depend on the result of `packed` to compute their value. This is generally accurate, but has two major downsides:\r\n- Calling `packed` creates and connects a new signal. If a testbench calls `packed` (directly or indirectly) on a signal within a `Module`, it will generate some additional hardware (though it won't have any functional impact).\r\n- The `previousValue` will be `null` the first time it is called since `packed` is lazily initialized. This can cause surprising testbench failures.\n\n### To Reproduce\n\nCall `previousValue` on a `LogicStructure` and observe that it is `null`.\n\n### Expected behavior\n\nThe APIs should not have side effects of creating hardware (even without functional impact) and should be functional in the same way as `Logic`.\n\n### Actual behavior\n\n_No response_\n\n### Additional: Dart SDK info\n\n_No response_\n\n### Additional: pubspec.yaml\n\n_No response_\n\n### Additional: Context\n\n_No response_"}]}, "task_source": "swe_rebench_example_agent"}
+{"instance_id": "syuilo__aiscript-257", "repo": "syuilo/aiscript", "base_commit": "5460323e2d450d036536556bbe96a23be62577c7", "patch": "diff --git a/CHANGELOG.md b/CHANGELOG.md\nindex c2c56c0..de7586a 100644\n--- a/CHANGELOG.md\n+++ b/CHANGELOG.md\n@@ -1,5 +1,5 @@\n [Read translated version (en)](./translations/en/CHANGELOG.md)\n-\n+- array.sort\u3068String\u7528\u6bd4\u8f03\u95a2\u6570Str:lt, Str:gt\u306e\u8ffd\u52a0\n # 0.13.1\n - Json:stringify\u306b\u95a2\u6570\u3092\u6e21\u3059\u3068\u4e0d\u6b63\u306a\u5024\u304c\u751f\u6210\u3055\u308c\u308b\u306e\u3092\u4fee\u6b63\n \ndiff --git a/docs/std.md b/docs/std.md\nindex 5add719..7f59d59 100644\n--- a/docs/std.md\n+++ b/docs/std.md\n@@ -116,6 +116,14 @@ _min_ \u304a\u3088\u3073 _max_ \u3092\u6e21\u3057\u305f\u5834\u5408\u3001_min_ <= x, x <= _max_ \u306e\u6574\u6570\u3001\n \u578b: `str` \n \u6539\u884c\u30b3\u30fc\u30c9(LF)\u3067\u3059\u3002 \n \n+### #Str:lt(a: str, b: str): num\n+a < b \u306a\u3089\u3070 -1\u3001a == b \u306a\u3089\u3070 0\u3001a > b \u306a\u3089\u3070 1 \u3092\u8fd4\u3057\u307e\u3059\u3002\n+arr.sort\u306e\u6bd4\u8f03\u95a2\u6570\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n+\n+### #Str:gt(a: str, b: str): num\n+a > b \u306a\u3089\u3070 -1\u3001a == b \u306a\u3089\u3070 0\u3001a < b \u306a\u3089\u3070 1 \u3092\u8fd4\u3057\u307e\u3059\u3002\n+arr.sort\u306e\u6bd4\u8f03\u95a2\u6570\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n+\n ### @(_v_: str).to_num(): num | null\n \u5024\u3092\u8868\u3059\u6570\u5024\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 \n \n@@ -182,6 +190,9 @@ _min_ \u304a\u3088\u3073 _max_ \u3092\u6e21\u3057\u305f\u5834\u5408\u3001_min_ <= x, x <= _max_ \u306e\u6574\u6570\u3001\n ### @(_v_: arr).copy(): arr\n \u914d\u5217\u306e\u30b3\u30d4\u30fc\u3092\u751f\u6210\u3057\u307e\u3059\u3002 \n \n+### @(_v_: arr).sort(comp: @(a: value, b: value)): arr\n+\u914d\u5217\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002comp\u306b\u306fStr:lt, Str:gt\u3068\u540c\u69d8\u306enum\u3092\u8fd4\u3059\u6bd4\u8f03\u95a2\u6570\u3092\u6e21\u3057\u307e\u3059\u3002\n+\n ## :: Obj\n \n ### @Obj:keys(_v_: obj): arr\ndiff --git a/src/interpreter/lib/std.ts b/src/interpreter/lib/std.ts\nindex 3c3dd74..23c7a6b 100644\n--- a/src/interpreter/lib/std.ts\n+++ b/src/interpreter/lib/std.ts\n@@ -276,6 +276,29 @@ export const std: Record = {\n \n \t//#region Str\n \t'Str:lf': STR('\\n'),\n+\n+\t'Str:lt': FN_NATIVE(([a, b]) => {\n+\t\tassertString(a);\n+\t\tassertString(b);\n+\t\tif (a.value < b.value) {\n+\t\t\treturn NUM(-1);\n+\t\t}else if (a.value === b.value){\n+\t\t\treturn NUM(0);\n+\t\t}else {\n+\t\t\treturn NUM(1);\n+\t\t}\n+\t}),\n+\t'Str:gt': FN_NATIVE(([a, b]) => {\n+\t\tassertString(a);\n+\t\tassertString(b);\n+\t\tif (a.value > b.value) {\n+\t\t\treturn NUM(-1);\n+\t\t}else if (a.value === b.value){\n+\t\t\treturn NUM(0);\n+\t\t}else {\n+\t\t\treturn NUM(1);\n+\t\t}\n+\t}),\n \t//#endregion\n \n \t//#region Arr\ndiff --git a/src/interpreter/primitive-props.ts b/src/interpreter/primitive-props.ts\nindex 1c97d7c..c848008 100644\n--- a/src/interpreter/primitive-props.ts\n+++ b/src/interpreter/primitive-props.ts\n@@ -174,5 +174,38 @@ export const PRIMITIVE_PROPS = {\n \t\tcopy: (target: VArr): VFn => FN_NATIVE(async ([], opts) => {\n \t\t\treturn ARR([...target.value]);\n \t\t}),\n+\t\tsort: (target: VArr): VFn => FN_NATIVE(async ([comp], opts) => {\n+\t\t\tconst mergeSort = async (arr: Value[], comp: VFn): Promise => {\n+\t\t\t\tif (arr.length <= 1) return arr;\n+\t\t\t\tconst mid = Math.floor(arr.length / 2);\n+\t\t\t\tconst left = await mergeSort(arr.slice(0, mid), comp);\n+\t\t\t\tconst right = await mergeSort(arr.slice(mid), comp);\n+\t\t\t\treturn merge(left, right, comp);\n+\t\t\t}\n+\t\t\tconst merge = async (left: Value[], right: Value[], comp: VFn): Promise => {\n+\t\t\t\tconst result: Value[] = [];\n+\t\t\t\tlet leftIndex = 0;\n+\t\t\t\tlet rightIndex = 0;\n+\t\t\t\twhile (leftIndex < left.length && rightIndex < right.length) {\n+\t\t\t\t\tconst l = left[leftIndex] as Value;\n+\t\t\t\t\tconst r = right[rightIndex] as Value;\n+\t\t\t\t\tlet compValue = await opts.call(comp, [l, r]);\n+\t\t\t\t\tassertNumber(compValue);\n+\t\t\t\t\tif (compValue.value < 0) {\n+\t\t\t\t\t\tresult.push(left[leftIndex] as Value);\n+\t\t\t\t\t\tleftIndex++;\n+\t\t\t\t\t} else {\n+\t\t\t\t\t\tresult.push(right[rightIndex] as Value);\n+\t\t\t\t\t\trightIndex++;\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\treturn result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));\n+\t\t\t}\n+\n+\t\t\tassertFunction(comp);\n+\t\t\tassertArray(target);\n+\t\t\ttarget.value = await mergeSort(target.value, comp);\n+\t\t\treturn target\n+\t\t}),\n \t},\n } as const;\n", "test_patch": "diff --git a/test/index.ts b/test/index.ts\nindex 87ec9e1..60f8858 100644\n--- a/test/index.ts\n+++ b/test/index.ts\n@@ -2349,6 +2349,41 @@ describe('primitive props', () => {\n \t\t\t\tARR([NUM(1), NUM(2), NUM(3)])\n \t\t\t]));\n \t\t});\n+\ttest.concurrent('sort num array', async () => {\n+\t\t\tconst res = await exe(`\n+\t\t\t\t\tvar arr = [2, 10, 3]\n+\t\t\t\t\tlet comp = @(a, b) { a - b }\n+\t\t\t\t\tarr.sort(comp)\n+\t\t\t\t\t<: arr\n+\t\t\t\t`);\n+\t\t\teq(res, ARR([NUM(2), NUM(3), NUM(10)]));\n+\t});\n+\ttest.concurrent('sort string array (with Str:lt)', async () => {\n+\t\t\tconst res = await exe(`\n+\t\t\t\t\tvar arr = [\"hoge\", \"huga\", \"piyo\", \"hoge\"]\n+\t\t\t\t\tarr.sort(Str:lt)\n+\t\t\t\t\t<: arr\n+\t\t\t\t`);\n+\t\t\teq(res, ARR([STR('hoge'), STR('hoge'), STR('huga'), STR('piyo')]));\n+\t});\n+\ttest.concurrent('sort string array (with Str:gt)', async () => {\n+\t\t\tconst res = await exe(`\n+\t\t\t\t\tvar arr = [\"hoge\", \"huga\", \"piyo\", \"hoge\"]\n+\t\t\t\t\tarr.sort(Str:gt)\n+\t\t\t\t\t<: arr\n+\t\t\t\t`);\n+\t\teq(res, ARR([ STR('piyo'), STR('huga'), STR('hoge'), STR('hoge')]));\n+\t});\n+\ttest.concurrent('sort object array', async () => {\n+\t\t\tconst res = await exe(`\n+\t\t\t\t\tvar arr = [{x: 2}, {x: 10}, {x: 3}]\n+\t\t\t\t\tlet comp = @(a, b) { a.x - b.x }\n+\n+\t\t\t\t\tarr.sort(comp)\n+\t\t\t\t\t<: arr\n+\t\t\t\t`);\n+\t\t\teq(res, ARR([OBJ(new Map([['x', NUM(2)]])), OBJ(new Map([['x', NUM(3)]])), OBJ(new Map([['x', NUM(10)]]))]));\n+\t});\n \t});\n });\n \n", "problem_statement": "Ability to sort arrays\n## Summary\r\n\r\nI wish I could sort the array.\r\n\r\n## API usage\r\n\r\n```aiscript\r\nsort(array, @(x, y)) //comparison predicate that returns positive value if x > y, 0 if equal, and negative value if x < y\r\n```", "language": "ts", "image_name": "docker.io/swerebenchv2/syuilo-aiscript:257-5460323", "install_config": {"base_image_name": "node_16", "docker_specs": null, "install": ["npm ci --prefer-offline --no-audit --quiet", "npm run build --quiet"], "log_parser": "parse_log_js_4", "test_cmd": "npm run jest -- --verbose --no-color"}, "FAIL_TO_PASS": ["sort num array", "sort string array (with Str:lt)", "sort string array (with Str:gt)", "sort object array"], "PASS_TO_PASS": ["Hello, world!", "empty script", "\u5f0f\u306b\u30b3\u30ed\u30f3\u304c\u3042\u3063\u3066\u3082\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u5224\u5b9a\u3055\u308c\u306a\u3044", "inc", "dec", "var", "\u53c2\u7167\u304c\u7e4b\u304c\u3089\u306a\u3044", "empty function", "empty lambda", "lambda that returns an object", "Closure", "Closure (counter)", "Recursion", "Throws error when divied by zero", "getAll", "==", "!=", "&&", "||", "+", "-", "*", "^", "/", "%", ">", "<", ">=", "<=", "precedence", "simple infix expression", "combination", "use parentheses to distinguish expr", "syntax symbols vs infix operators", "number + if expression", "number + match expression", "eval + eval", "disallow line break", "escaped line break", "infix-to-fncall on namespace", "single line comment", "multi line comment", "multi line comment 2", "// as string", "var def", "var def (op)", "let", "return", "each", "for", "loop", "break", "continue", "if", "match", "true", "false", "null", "def", "attr", "ns", "prop", "meta", "fn", "property access", "property access (fn call)", "property assign", "Array item access", "Array item assign", "index out of range error", "chain access (prop + index + call)", "chained assign left side (prop + index)", "chained assign right side (prop + index + call)", "chained inc/dec left side (index + prop)", "chained inc/dec left side (prop + index)", "prop in def", "prop in return", "prop in each", "prop in for", "Basic", "convert to str", "Escape", "without args", "with args", "with args (separated by comma)", "with args (separated by space)", "std: throw AiScript error when required arg missing", "Early return", "Early return (nested)", "Early return (nested) 2", "Early return without block", "return inside for", "return inside for 2", "return inside loop", "return inside loop 2", "return inside each", "return inside each 2", "returns value", "else", "elif", "if ~ elif ~ else", "expr", "When default not provided, returns null", "With default", "With block", "With return", "with continue", "initial value", "wuthout iterator", "without brackets", "Break", "single statement", "standard", "self ref", "assign variable", "increment", "string (single quote)", "string (double quote)", "Escaped double quote", "Escaped single quote", "bool (true)", "bool (false)", "number (Int)", "number (Float)", "arr (separated by comma)", "arr (separated by comma) (with trailing comma)", "arr (separated by line break)", "arr (separated by line break and comma)", "arr (separated by line break and comma) (with trailing comma)", "obj (separated by comma)", "obj (separated by comma) (with trailing comma)", "obj (separated by semicolon)", "obj (separated by semicolon) (with trailing semicolon)", "obj (separated by line break)", "obj (separated by line break and semicolon)", "obj (separated by line break and semicolon) (with trailing semicolon)", "obj and arr (separated by line break)", "fn def", "default meta", "valid", "invalid", "number", "chars", "complex", "no specified", "single attribute with function (str)", "multiple attributes with function (obj, str, bool)", "single attribute (no value)", "function", "to_str", "len", "to_num", "upper", "lower", "trim", "replace", "index_of", "incl", "split", "pick", "slice", "push", "unshift", "pop", "shift", "concat", "join", "map", "map with index", "filter", "filter with index", "reduce", "reduce with index", "find", "find with index", "reverse", "copy", "range", "trig", "abs", "sqrt", "round", "ceil", "floor", "min", "max", "rnd", "rnd with arg", "gen_rng", "keys", "kvs", "lf", "stringify: fn", "Cannot access js native property via var", "Cannot access js native property via object", "Cannot access js native property via primitive prop", "Fizz Buzz", "SKI"], "responses_create_params": {"input": [{"role": "user", "content": "Ability to sort arrays\n## Summary\r\n\r\nI wish I could sort the array.\r\n\r\n## API usage\r\n\r\n```aiscript\r\nsort(array, @(x, y)) //comparison predicate that returns positive value if x > y, 0 if equal, and negative value if x < y\r\n```\n\n## New interfaces to add:\nMethod: @(_v_: arr).sort(comp: @(a: value, b: value)) \u2192 arr\nLocation: src/interpreter/primitive-props.ts\nInputs: \n- **target** (implicit `this`): the array to be sorted (`VArr`).\n- **comp**: a user\u2011provided comparator function taking two values (`a`, `b`) and returning a numeric result (negative if `a < b`, zero if equal, positive if `a > b`). The function must be a callable `VFn`; otherwise a type error is raised.\nOutputs: The same array object (`VArr`) whose internal `value` array is reordered in ascending order according to the comparator. The method returns the mutated array so it can be used in expression chains.\nDescription: Performs a stable merge\u2011sort on the array using the supplied comparator. It validates that the comparator is a function and that it returns a number for each element pair. The original array is mutated and also returned.\n\nFunction: Str:lt(a: str, b: str) \u2192 num\nLocation: src/interpreter/lib/std.ts\nInputs:\n- **a**: first string (`VStr`).\n- **b**: second string (`VStr`).\nOutputs: A numeric `VNum` \u2013 `-1` if `a < b`, `0` if `a == b`, `1` if `a > b`.\nDescription: Built\u2011in string comparator returning a signed integer suitable for use as an `arr.sort` comparator to achieve ascending lexical order.\n\nFunction: Str:gt(a: str, b: str) \u2192 num\nLocation: src/interpreter/lib/std.ts\nInputs:\n- **a**: first string (`VStr`).\n- **b**: second string (`VStr`).\nOutputs: A numeric `VNum` \u2013 `-1` if `a > b`, `0` if `a == b`, `1` if `a < b`.\nDescription: Built\u2011in string comparator returning a signed integer suitable for use as an `arr.sort` comparator to achieve descending lexical order."}]}, "task_source": "swe_rebench_example_agent"}
+{"instance_id": "taiki-e__cargo-hack-70", "repo": "taiki-e/cargo-hack", "base_commit": "d4b501da6115782f1c57110965fbce9eb87e7424", "patch": "diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml\nindex 637f63c..dab2067 100644\n--- a/.github/workflows/ci.yml\n+++ b/.github/workflows/ci.yml\n@@ -33,6 +33,8 @@ jobs:\n - 1.36.0\n - 1.38.0\n - 1.39.0\n+ - 1.40.0\n+ - 1.41.0\n - stable\n - beta\n - nightly\ndiff --git a/CHANGELOG.md b/CHANGELOG.md\nindex dafb164..af70a9b 100644\n--- a/CHANGELOG.md\n+++ b/CHANGELOG.md\n@@ -19,10 +19,13 @@ This project adheres to [Semantic Versioning](https://semver.org).\n \n * [Add `--include-features` option.][66] See [#66][66] for details.\n \n+* [Add --include-deps-features option.][70] See [#29][29] for details.\n+\n * [Fix an issue where using `--features` with `--each-feature` or `--feature-powerset` together would result in the same feature combination being performed multiple times.][64]\n \n * [Improve performance by avoiding reading and parsing Cargo manifest.][73]\n \n+[29]: https://github.com/taiki-e/cargo-hack/pull/29\n [42]: https://github.com/taiki-e/cargo-hack/pull/42\n [61]: https://github.com/taiki-e/cargo-hack/pull/61\n [62]: https://github.com/taiki-e/cargo-hack/pull/62\n@@ -30,6 +33,7 @@ This project adheres to [Semantic Versioning](https://semver.org).\n [64]: https://github.com/taiki-e/cargo-hack/pull/64\n [65]: https://github.com/taiki-e/cargo-hack/pull/65\n [66]: https://github.com/taiki-e/cargo-hack/pull/66\n+[70]: https://github.com/taiki-e/cargo-hack/pull/70\n [73]: https://github.com/taiki-e/cargo-hack/pull/73\n \n ## [0.3.14] - 2020-10-10\ndiff --git a/Cargo.lock b/Cargo.lock\nindex fc6aa6c..ea75117 100644\n--- a/Cargo.lock\n+++ b/Cargo.lock\n@@ -17,6 +17,7 @@ dependencies = [\n \"anyhow 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"ctrlc 3.1.7 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"easy-ext 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)\",\n+ \"rustversion 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"term_size 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)\",\n@@ -88,6 +89,16 @@ dependencies = [\n \"proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)\",\n ]\n \n+[[package]]\n+name = \"rustversion\"\n+version = \"1.0.3\"\n+source = \"registry+https://github.com/rust-lang/crates.io-index\"\n+dependencies = [\n+ \"proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)\",\n+ \"quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)\",\n+ \"syn 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)\",\n+]\n+\n [[package]]\n name = \"ryu\"\n version = \"1.0.5\"\n@@ -187,6 +198,7 @@ source = \"registry+https://github.com/rust-lang/crates.io-index\"\n \"checksum nix 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)\" = \"83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055\"\n \"checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)\" = \"1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71\"\n \"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)\" = \"aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37\"\n+\"checksum rustversion 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)\" = \"b9bdc5e856e51e685846fb6c13a1f5e5432946c2c90501bdc76a1319f19e29da\"\n \"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)\" = \"71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e\"\n \"checksum serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)\" = \"b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a\"\n \"checksum serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)\" = \"dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95\"\ndiff --git a/Cargo.toml b/Cargo.toml\nindex d8a8b51..3fb8e28 100644\n--- a/Cargo.toml\n+++ b/Cargo.toml\n@@ -28,3 +28,4 @@ toml = \"0.5.2\"\n \n [dev-dependencies]\n easy-ext = \"0.2\"\n+rustversion = \"1\"\ndiff --git a/src/cli.rs b/src/cli.rs\nindex 12d51f2..1820c75 100644\n--- a/src/cli.rs\n+++ b/src/cli.rs\n@@ -211,6 +211,8 @@ pub(crate) struct Args<'a> {\n pub(crate) depth: Option,\n /// --include-features\n pub(crate) include_features: Vec<&'a str>,\n+ /// --include-deps-features\n+ pub(crate) include_deps_features: bool,\n \n /// --no-default-features\n pub(crate) no_default_features: bool,\n@@ -290,6 +292,7 @@ pub(crate) fn perse_args<'a>(\n raw: &'a RawArgs,\n coloring: &mut Option,\n cargo: &OsStr,\n+ version: u32,\n ) -> Result> {\n let mut iter = raw.0.iter();\n let mut args = iter.by_ref().map(String::as_str).peekable();\n@@ -322,6 +325,7 @@ pub(crate) fn perse_args<'a>(\n let mut ignore_unknown_features = false;\n let mut clean_per_run = false;\n let mut depth = None;\n+ let mut include_deps_features = false;\n \n let mut exclude_features = Vec::new();\n let mut exclude_no_default_features = false;\n@@ -486,6 +490,7 @@ pub(crate) fn perse_args<'a>(\n continue;\n }\n \"--exclude-all-features\" => parse_flag!(exclude_all_features),\n+ \"--include-deps-features\" => parse_flag!(include_deps_features),\n \"--clean-per-run\" => parse_flag!(clean_per_run),\n \"--ignore-unknown-features\" => parse_flag!(ignore_unknown_features),\n \"--ignore-non-exist-features\" => bail!(\n@@ -554,6 +559,10 @@ pub(crate) fn perse_args<'a>(\n bail!(\n \"--include-features can only be used together with either --each-feature or --feature-powerset\"\n );\n+ } else if include_deps_features {\n+ bail!(\n+ \"--include-deps-features can only be used together with either --each-feature or --feature-powerset\"\n+ );\n }\n }\n if depth.is_some() && !feature_powerset {\n@@ -595,6 +604,10 @@ pub(crate) fn perse_args<'a>(\n bail!(\"--all-features may not be used together with --feature-powerset\");\n }\n \n+ if include_deps_features && version < 41 {\n+ bail!(\"--all-features requires Cargo 1.41 or leter\")\n+ }\n+\n if subcommand.is_none() {\n if leading.contains(&\"--list\") {\n let mut line = ProcessBuilder::new(cargo);\n@@ -653,6 +666,7 @@ For more information try --help\n clean_per_run,\n depth,\n include_features,\n+ include_deps_features,\n \n no_default_features,\n verbose,\ndiff --git a/src/context.rs b/src/context.rs\nindex 75e1f9a..f4f6b89 100644\n--- a/src/context.rs\n+++ b/src/context.rs\n@@ -3,7 +3,7 @@ use std::{collections::HashMap, env, ffi::OsString, ops::Deref, path::Path};\n use crate::{\n cli::{self, Args, Coloring, RawArgs},\n manifest::Manifest,\n- metadata::{Metadata, Package, PackageId},\n+ metadata::{Metadata, Node, Package, PackageId},\n version, ProcessBuilder, Result,\n };\n \n@@ -28,7 +28,7 @@ impl<'a> Context<'a> {\n }\n };\n \n- let args = cli::perse_args(args, coloring, &cargo)?;\n+ let args = cli::perse_args(args, coloring, &cargo, cargo_version)?;\n assert!(\n args.subcommand.is_some() || args.remove_dev_deps,\n \"no subcommand or valid flag specified\"\n@@ -59,9 +59,9 @@ impl<'a> Context<'a> {\n pub(crate) fn workspace_members(&self) -> impl Iterator- {\n self.metadata.workspace_members.iter()\n }\n- // pub(crate) fn nodes(&self, id: &PackageId) -> &Node {\n- // &self.metadata.resolve.nodes[id]\n- // }\n+ pub(crate) fn nodes(&self, id: &PackageId) -> &Node {\n+ &self.metadata.resolve.nodes[id]\n+ }\n pub(crate) fn current_package(&self) -> Option<&PackageId> {\n self.metadata.resolve.root.as_ref()\n }\ndiff --git a/src/main.rs b/src/main.rs\nindex 3b5bfe5..d25e68f 100644\n--- a/src/main.rs\n+++ b/src/main.rs\n@@ -21,7 +21,7 @@ mod restore;\n mod version;\n \n use anyhow::{bail, Context as _};\n-use std::{fmt::Write, fs};\n+use std::{borrow::Cow, fmt::Write, fs};\n \n use crate::{\n cli::Coloring,\n@@ -82,8 +82,8 @@ enum Kind<'a> {\n NoSubcommand,\n SkipAsPrivate,\n Nomal,\n- Each { features: Vec<&'a str> },\n- Powerset { features: Vec> },\n+ Each { features: Vec> },\n+ Powerset { features: Vec>> },\n }\n \n fn determine_kind<'a>(cx: &'a Context<'_>, id: &PackageId, progress: &mut Progress) -> Kind<'a> {\n@@ -105,21 +105,52 @@ fn determine_kind<'a>(cx: &'a Context<'_>, id: &PackageId, progress: &mut Progre\n .iter()\n .map(String::as_str)\n .filter(|f| *f != \"default\" && !cx.exclude_features.contains(f))\n+ .map(Cow::Borrowed)\n .collect();\n+\n if let Some(opt_deps) = &cx.optional_deps {\n- features.extend(package.dependencies.iter().filter_map(Dependency::as_feature).filter(\n- move |&f| {\n- !cx.exclude_features.contains(&f)\n- && (opt_deps.is_empty() || opt_deps.contains(&f))\n- },\n- ));\n+ features.extend(\n+ package\n+ .dependencies\n+ .iter()\n+ .filter_map(Dependency::as_feature)\n+ .filter(move |f| {\n+ !cx.exclude_features.contains(f)\n+ && (opt_deps.is_empty() || opt_deps.contains(f))\n+ })\n+ .map(Cow::Borrowed),\n+ );\n }\n+\n+ if cx.include_deps_features {\n+ let node = cx.nodes(id);\n+ let package = cx.packages(id);\n+ // TODO: Unpublished dependencies are not included in `node.deps`.\n+ for dep in node.deps.iter().filter(|dep| {\n+ // ignore if `dep_kinds` is empty (i.e., not Rust 1.41+), target specific or not a normal dependency.\n+ dep.dep_kinds.iter().any(|kind| kind.kind.is_none() && kind.target.is_none())\n+ }) {\n+ let dep_package = cx.packages(&dep.pkg);\n+ // TODO: `dep.name` (`resolve.nodes[].deps[].name`) is a valid rust identifier, not a valid feature flag.\n+ // And `packages[].dependencies` doesn't have package identifier,\n+ // so I'm not sure if there is a way to find the actual feature name exactly.\n+ if let Some(d) = package.dependencies.iter().find(|d| d.name == dep_package.name) {\n+ let name = d.rename.as_ref().unwrap_or(&d.name);\n+ features.extend(\n+ dep_package.features.iter().map(|f| Cow::Owned(format!(\"{}/{}\", name, f))),\n+ );\n+ }\n+ // TODO: Optional deps of `dep_package`.\n+ }\n+ }\n+\n features\n } else {\n cx.include_features\n .iter()\n .filter(|&&f| f != \"default\" && !cx.exclude_features.contains(&f))\n .copied()\n+ .map(Cow::Borrowed)\n .collect()\n };\n \ndiff --git a/src/metadata.rs b/src/metadata.rs\nindex 5fbb9ea..5603a59 100644\n--- a/src/metadata.rs\n+++ b/src/metadata.rs\n@@ -6,7 +6,6 @@ use std::{\n ffi::OsStr,\n fmt,\n path::PathBuf,\n- rc::Rc,\n };\n \n use crate::{cli::Args, Context, ProcessBuilder, Result};\n@@ -25,12 +24,12 @@ type ParseResult = Result;\n #[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]\n pub(crate) struct PackageId {\n /// The underlying string representation of id.\n- repr: Rc,\n+ repr: String,\n }\n \n impl PackageId {\n fn new(repr: String) -> Self {\n- Self { repr: repr.into() }\n+ Self { repr }\n }\n }\n \n@@ -78,9 +77,6 @@ impl Metadata {\n .remove_array(\"packages\")?\n .into_iter()\n .map(|v| Package::from_value(v, version))\n- .filter(|res| {\n- res.as_ref().map(|(id, _)| workspace_members.contains(id)).unwrap_or(true)\n- })\n .collect::>()?,\n workspace_members,\n resolve: Resolve::from_obj(map.remove_object(\"resolve\")?, version)?,\n@@ -91,126 +87,114 @@ impl Metadata {\n \n /// A dependency graph\n pub(crate) struct Resolve {\n- // /// Nodes in a dependencies graph\n- // pub(crate) nodes: HashMap,\n+ /// Nodes in a dependencies graph\n+ pub(crate) nodes: HashMap,\n // if `None`, cargo-hack called in the root of a virtual workspace\n /// The crate for which the metadata was read.\n pub(crate) root: Option,\n }\n \n impl Resolve {\n- fn from_obj(mut map: Object, _version: u32) -> ParseResult {\n+ fn from_obj(mut map: Object, version: u32) -> ParseResult {\n Ok(Self {\n- // nodes: map\n- // .remove_array(\"nodes\")?\n- // .into_iter()\n- // .map(|v| Node::from_value(v, version))\n- // .collect::>()?,\n+ nodes: map\n+ .remove_array(\"nodes\")?\n+ .into_iter()\n+ .map(|v| Node::from_value(v, version))\n+ .collect::>()?,\n root: map.remove_nullable(\"root\", into_string)?.map(PackageId::new),\n })\n }\n }\n \n-// /// A node in a dependencies graph\n-// pub(crate) struct Node {\n-// /// An opaque identifier for a package\n-// pub(crate) id: PackageId,\n-// /// Dependencies in a structured format.\n-// ///\n-// /// This is always empty if running with a version of Cargo older than 1.30.\n-// pub(crate) deps: Vec,\n-// /// Features enabled on the crate\n-// pub(crate) features: Vec,\n-// }\n-\n-// impl Node {\n-// fn from_value(mut value: Value, version: u32) -> ParseResult<(PackageId, Self)> {\n-// let map = value.as_object_mut().ok_or(\"nodes\")?;\n-\n-// let this = Self {\n-// id: map.remove_string(\"id\").map(PackageId::new)?,\n-// // This field was added in Rust 1.30.\n-// deps: if version >= 30 {\n-// map.remove_array(\"deps\")?\n-// .into_iter()\n-// .map(|v| NodeDep::from_value(v, version))\n-// .collect::>()?\n-// } else {\n-// Vec::new()\n-// },\n-// features: map\n-// .remove_array(\"features\")?\n-// .into_iter()\n-// .map(|v| into_string(v).ok_or(\"features\"))\n-// .collect::>()?,\n-// };\n-// Ok((this.id.clone(), this))\n-// }\n-// }\n-\n-// /// A dependency in a node\n-// pub(crate) struct NodeDep {\n-// /// Package ID (opaque unique identifier)\n-// pub(crate) pkg: PackageId,\n-// /// The kinds of dependencies.\n-// ///\n-// /// This is always empty if running with a version of Cargo older than 1.41.\n-// pub(crate) dep_kinds: Vec,\n-// }\n-\n-// impl NodeDep {\n-// fn from_value(mut value: Value, version: u32) -> ParseResult {\n-// let map = value.as_object_mut().ok_or(\"deps\")?;\n-\n-// Ok(Self {\n-// pkg: PackageId::new(map.remove_string(\"pkg\")?),\n-// // This field was added in Rust 1.41.\n-// dep_kinds: if version >= 41 {\n-// map.remove_array(\"dep_kinds\")?\n-// .into_iter()\n-// .map(DepKindInfo::from_value)\n-// .collect::>()?\n-// } else {\n-// Vec::new()\n-// },\n-// })\n-// }\n-// }\n-\n-// /// Information about a dependency kind.\n-// pub(crate) struct DepKindInfo {\n-// /// The kind of dependency.\n-// pub(crate) kind: Option,\n-// /// The target platform for the dependency.\n-// ///\n-// /// This is `None` if it is not a target dependency.\n-// ///\n-// /// By default all platform dependencies are included in the resolve\n-// /// graph. Use Cargo's `--filter-platform` flag if you only want to\n-// /// include dependencies for a specific platform.\n-// pub(crate) target: Option,\n-// }\n-\n-// impl DepKindInfo {\n-// fn from_value(mut value: Value) -> ParseResult {\n-// let map = value.as_object_mut().ok_or(\"dep_kinds\")?;\n-\n-// Ok(Self {\n-// kind: map.remove_nullable(\"kind\", into_string)?,\n-// target: map.remove_nullable(\"target\", into_string)?,\n-// })\n-// }\n-// }\n-\n-// type Platform = String;\n+/// A node in a dependencies graph\n+pub(crate) struct Node {\n+ /// Dependencies in a structured format.\n+ ///\n+ /// This is always empty if running with a version of Cargo older than 1.30.\n+ pub(crate) deps: Vec,\n+}\n+\n+impl Node {\n+ fn from_value(mut value: Value, version: u32) -> ParseResult<(PackageId, Self)> {\n+ let map = value.as_object_mut().ok_or(\"nodes\")?;\n+\n+ let id = map.remove_string(\"id\").map(PackageId::new)?;\n+ Ok((id, Self {\n+ // This field was added in Rust 1.30.\n+ deps: if version >= 30 {\n+ map.remove_array(\"deps\")?\n+ .into_iter()\n+ .map(|v| NodeDep::from_value(v, version))\n+ .collect::>()?\n+ } else {\n+ Vec::new()\n+ },\n+ }))\n+ }\n+}\n+\n+/// A dependency in a node\n+pub(crate) struct NodeDep {\n+ /// Package ID (opaque unique identifier)\n+ pub(crate) pkg: PackageId,\n+ /// The kinds of dependencies.\n+ ///\n+ /// This is always empty if running with a version of Cargo older than 1.41.\n+ pub(crate) dep_kinds: Vec,\n+}\n+\n+impl NodeDep {\n+ fn from_value(mut value: Value, version: u32) -> ParseResult {\n+ let map = value.as_object_mut().ok_or(\"deps\")?;\n+\n+ Ok(Self {\n+ pkg: PackageId::new(map.remove_string(\"pkg\")?),\n+ // This field was added in Rust 1.41.\n+ dep_kinds: if version >= 41 {\n+ map.remove_array(\"dep_kinds\")?\n+ .into_iter()\n+ .map(DepKindInfo::from_value)\n+ .collect::>()?\n+ } else {\n+ Vec::new()\n+ },\n+ })\n+ }\n+}\n+\n+/// Information about a dependency kind.\n+pub(crate) struct DepKindInfo {\n+ /// The kind of dependency.\n+ pub(crate) kind: Option,\n+ /// The target platform for the dependency.\n+ ///\n+ /// This is `None` if it is not a target dependency.\n+ ///\n+ /// By default all platform dependencies are included in the resolve\n+ /// graph. Use Cargo's `--filter-platform` flag if you only want to\n+ /// include dependencies for a specific platform.\n+ pub(crate) target: Option,\n+}\n+\n+impl DepKindInfo {\n+ fn from_value(mut value: Value) -> ParseResult {\n+ let map = value.as_object_mut().ok_or(\"dep_kinds\")?;\n+\n+ Ok(Self {\n+ kind: map.remove_nullable(\"kind\", into_string)?,\n+ target: map.remove_nullable(\"target\", into_string)?,\n+ })\n+ }\n+}\n+\n+type Platform = String;\n \n pub(crate) struct Package {\n /// Name as given in the `Cargo.toml`\n pub(crate) name: String,\n // /// Version given in the `Cargo.toml`\n // pub(crate) version: String,\n- /// An opaque identifier for a package\n- pub(crate) id: PackageId,\n /// List of dependencies of this particular package\n pub(crate) dependencies: Vec,\n /// Features provided by the crate, mapped to the features required by that feature.\n@@ -227,10 +211,10 @@ impl Package {\n fn from_value(mut value: Value, version: u32) -> ParseResult<(PackageId, Self)> {\n let map = value.as_object_mut().ok_or(\"packages\")?;\n \n- let this = Self {\n+ let id = PackageId::new(map.remove_string(\"id\")?);\n+ Ok((id, Self {\n name: map.remove_string(\"name\")?,\n // version: map.remove_string(\"version\")?,\n- id: PackageId::new(map.remove_string(\"id\")?),\n dependencies: map\n .remove_array(\"dependencies\")?\n .into_iter()\n@@ -250,8 +234,7 @@ impl Package {\n } else {\n true\n },\n- };\n- Ok((this.id.clone(), this))\n+ }))\n }\n \n pub(crate) fn name_verbose(&self, cx: &Context<'_>) -> Cow<'_, str> {\n", "test_patch": "diff --git a/tests/test.rs b/tests/test.rs\nindex c2b7653..ef9a174 100644\n--- a/tests/test.rs\n+++ b/tests/test.rs\n@@ -821,6 +821,48 @@ fn each_feature_all() {\n );\n }\n \n+#[rustversion::attr(not(since(1.41)), ignore)]\n+#[test]\n+fn include_deps_features() {\n+ cargo_hack()\n+ .args(&[\"check\", \"--each-feature\", \"--include-deps-features\"])\n+ .test_dir(\"tests\")\n+ .assert_success()\n+ .assert_stderr_contains(\"\n+ running `cargo check` on cargo-hack (1/21)\n+ running `cargo check --no-default-features` on cargo-hack (2/21)\n+ running `cargo check --no-default-features --features anyhow/default` on cargo-hack (3/21)\n+ running `cargo check --no-default-features --features anyhow/std` on cargo-hack (4/21)\n+ running `cargo check --no-default-features --features ctrlc/termination` on cargo-hack (5/21)\n+ running `cargo check --no-default-features --features serde_json/alloc` on cargo-hack (6/21)\n+ running `cargo check --no-default-features --features serde_json/arbitrary_precision` on cargo-hack (7/21)\n+ running `cargo check --no-default-features --features serde_json/default` on cargo-hack (8/21)\n+ running `cargo check --no-default-features --features serde_json/float_roundtrip` on cargo-hack (9/21)\n+ running `cargo check --no-default-features --features serde_json/preserve_order` on cargo-hack (10/21)\n+ running `cargo check --no-default-features --features serde_json/raw_value` on cargo-hack (11/21)\n+ running `cargo check --no-default-features --features serde_json/std` on cargo-hack (12/21)\n+ running `cargo check --no-default-features --features serde_json/unbounded_depth` on cargo-hack (13/21)\n+ running `cargo check --no-default-features --features term_size/debug` on cargo-hack (14/21)\n+ running `cargo check --no-default-features --features term_size/default` on cargo-hack (15/21)\n+ running `cargo check --no-default-features --features term_size/nightly` on cargo-hack (16/21)\n+ running `cargo check --no-default-features --features term_size/travis` on cargo-hack (17/21)\n+ running `cargo check --no-default-features --features term_size/unstable` on cargo-hack (18/21)\n+ running `cargo check --no-default-features --features toml/default` on cargo-hack (19/21)\n+ running `cargo check --no-default-features --features toml/preserve_order` on cargo-hack (20/21)\n+ running `cargo check --no-default-features --all-features` on cargo-hack (21/21)\n+ \");\n+}\n+\n+#[rustversion::attr(not(before(1.41)), ignore)]\n+#[test]\n+fn include_deps_features_version_failure() {\n+ cargo_hack()\n+ .args(&[\"check\", \"--each-feature\", \"--include-deps-features\"])\n+ .test_dir(\"tests\")\n+ .assert_failure()\n+ .assert_stderr_contains(\"--all-features requires Cargo 1.41 or leter\");\n+}\n+\n #[test]\n fn trailing_args() {\n cargo_hack()\n", "problem_statement": "request: option to also enumerate second-order features\nA little known thing is you can do:\r\n\r\n```\r\n cargo test --features \"foo/bar\"\r\n```\r\n\r\nWhich activates the \"bar\" feature of the \"foo\" crate. ( it makes sense when you see how features are defined in Cargo.toml ).\r\n\r\nSubsequently, this means there is a way to expand test coverage to test situations where somebody turns on that feature in a different crate, and you get it through cargo composition.\r\n\r\nSo it would be nice if there was a way to test these, understandably, the set size it may generate could be prohibitively large in some cases, so its not a sensible default.", "language": "rust", "image_name": "docker.io/swerebenchv2/taiki-e-cargo-hack:70-d4b501d", "install_config": {"base_image_name": "rust_1.84", "docker_specs": {"_variant": null, "bazel_version": null, "bun_version": null, "cargo_version": null, "deno_version": null, "docker_version": null, "erlang_version": null, "gcc_version": null, "go_version": null, "helm_version": null, "java_version": null, "jdk_version": null, "llvm_version": null, "lua_version": null, "luajit_version": null, "neovim_version": null, "node_version": null, "npm_version": null, "nvim_version": null, "pnpm_version": null, "python_image": null, "python_version": null, "redis_version": null, "ruby_version": null, "rust_version": null, "rustc_version": null, "solana_version": null, "sqlite_version": null}, "install": ["curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y", "export PATH=/root/.cargo/bin:/usr/local/cargo/bin:$PATH && rustup toolchain install stable && rustup default stable && /root/.cargo/bin/rustc --version && cargo --version", "export PATH=\"$HOME/.cargo/bin:$PATH\" && rustup toolchain install stable", "export PATH=\"$HOME/.cargo/bin:$PATH\" && cargo build"], "log_parser": "parse_log_cargo", "test_cmd": "export PATH=/root/.cargo/bin:/usr/local/cargo/bin:$PATH && cargo test --workspace --all-features -- --nocapture"}, "FAIL_TO_PASS": ["remove_dev_deps::tests::a", "cli::tests::short_help", "remove_dev_deps::tests::b", "cli::tests::long_help", "remove_dev_deps::tests::c", "remove_dev_deps::tests::d", "remove_dev_deps::tests::many_lines", "remove_dev_deps::tests::target_deps1", "remove_dev_deps::tests::not_table", "remove_dev_deps::tests::target_deps2", "remove_dev_deps::tests::target_deps3", "tests::powerset_depth2", "tests::powerset_depth1", "tests::powerset_full", "tests::powerset_depth3", "depth_failure", "exclude_failure", "exclude_all_features_failure", "exclude_features_failure", "exclude_no_default_features_failure", "exclude_all_features", "exclude", "exclude_features_default", "ignore_unknown_features_failure", "ignore_unknown_features", "each_feature", "feature_powerset_depth", "each_feature_skip_success", "no_dev_deps_failure", "feature_powerset", "include_features", "optional_deps_failure", "no_dev_deps", "package", "package_no_packages", "list_separator", "package_collision", "exclude_no_default_features", "not_find_manifest", "remove_dev_deps_failure", "removed_flags", "real_ignore_private", "powerset_skip_success", "each_feature_all", "real_all_in_subcrate", "propagate", "real_manifest", "trailing_args", "verbose", "virtual_all_in_subcrate", "virtual_ignore_private", "virtual_manifest"], "PASS_TO_PASS": [], "responses_create_params": {"input": [{"role": "user", "content": "request: option to also enumerate second-order features\nA little known thing is you can do:\r\n\r\n```\r\n cargo test --features \"foo/bar\"\r\n```\r\n\r\nWhich activates the \"bar\" feature of the \"foo\" crate. ( it makes sense when you see how features are defined in Cargo.toml ).\r\n\r\nSubsequently, this means there is a way to expand test coverage to test situations where somebody turns on that feature in a different crate, and you get it through cargo composition.\r\n\r\nSo it would be nice if there was a way to test these, understandably, the set size it may generate could be prohibitively large in some cases, so its not a sensible default."}]}, "task_source": "swe_rebench_example_agent"}
+{"instance_id": "tox-dev__pipdeptree-279", "repo": "tox-dev/pipdeptree", "base_commit": "6dddc85520ee044b4322a78c9ca7ccdb55d9b071", "patch": "diff --git a/src/pipdeptree/__main__.py b/src/pipdeptree/__main__.py\nindex c581f3d..4268f8e 100644\n--- a/src/pipdeptree/__main__.py\n+++ b/src/pipdeptree/__main__.py\n@@ -27,11 +27,17 @@ def main(args: Sequence[str] | None = None) -> None | int:\n if options.reverse:\n tree = tree.reverse()\n \n- show_only = set(options.packages.split(\",\")) if options.packages else None\n+ show_only = options.packages.split(\",\") if options.packages else None\n exclude = set(options.exclude.split(\",\")) if options.exclude else None\n \n if show_only is not None or exclude is not None:\n- tree = tree.filter_nodes(show_only, exclude)\n+ try:\n+ tree = tree.filter_nodes(show_only, exclude)\n+ except ValueError as e:\n+ if options.warn in (\"suppress\", \"fail\"):\n+ print(e, file=sys.stderr) # noqa: T201\n+ return_code |= 1 if options.warn == \"fail\" else 0\n+ return return_code\n \n render(options, tree)\n \ndiff --git a/src/pipdeptree/_models/dag.py b/src/pipdeptree/_models/dag.py\nindex 48fbbdb..dd38600 100644\n--- a/src/pipdeptree/_models/dag.py\n+++ b/src/pipdeptree/_models/dag.py\n@@ -91,14 +91,15 @@ class PackageDAG(Mapping[DistPackage, List[ReqPackage]]):\n node = self.get_node_as_parent(node_key)\n return self._obj[node] if node else []\n \n- def filter_nodes(self, include: set[str] | None, exclude: set[str] | None) -> PackageDAG: # noqa: C901\n+ def filter_nodes(self, include: list[str] | None, exclude: set[str] | None) -> PackageDAG: # noqa: C901, PLR0912\n \"\"\"\n Filters nodes in a graph by given parameters.\n \n If a node is included, then all it's children are also included.\n \n- :param include: set of node keys to include (or None)\n+ :param include: list of node keys to include (or None)\n :param exclude: set of node keys to exclude (or None)\n+ :raises ValueError: If include has node keys that do not exist in the graph\n :returns: filtered version of the graph\n \"\"\"\n # If neither of the filters are specified, short circuit\n@@ -110,25 +111,40 @@ class PackageDAG(Mapping[DistPackage, List[ReqPackage]]):\n # documentation, `key` is simply\n # `project_name.lower()`. Refer:\n # https://setuptools.readthedocs.io/en/latest/pkg_resources.html#distribution-objects\n+ include_with_casing_preserved: list[str] = []\n if include:\n- include = {s.lower() for s in include}\n+ include_with_casing_preserved = include\n+ include = [s.lower() for s in include]\n exclude = {s.lower() for s in exclude} if exclude else set()\n \n # Check for mutual exclusion of show_only and exclude sets\n # after normalizing the values to lowercase\n if include and exclude:\n- assert not (include & exclude)\n+ assert not (set(include) & exclude)\n \n # Traverse the graph in a depth first manner and filter the\n # nodes according to `show_only` and `exclude` sets\n stack: deque[DistPackage] = deque()\n m: dict[DistPackage, list[ReqPackage]] = {}\n seen = set()\n+ matched_includes: set[str] = set()\n for node in self._obj:\n if any(fnmatch(node.key, e) for e in exclude):\n continue\n- if include is None or any(fnmatch(node.key, i) for i in include):\n+ if include is None:\n stack.append(node)\n+ else:\n+ should_append = False\n+ for i in include:\n+ if fnmatch(node.key, i):\n+ # Add all patterns that match with the node key. Otherwise if we break, patterns like py* or\n+ # pytest* (which both should match \"pytest\") may cause one pattern to be missed and will\n+ # raise an error\n+ matched_includes.add(i)\n+ should_append = True\n+ if should_append:\n+ stack.append(node)\n+\n while stack:\n n = stack.pop()\n cldn = [c for c in self._obj[n] if not any(fnmatch(c.key, e) for e in exclude)]\n@@ -144,6 +160,10 @@ class PackageDAG(Mapping[DistPackage, List[ReqPackage]]):\n # a dependency is missing\n continue\n \n+ non_existent_includes = [i for i in include_with_casing_preserved if i.lower() not in matched_includes]\n+ if non_existent_includes:\n+ raise ValueError(\"No packages matched using the following patterns: \" + \", \".join(non_existent_includes))\n+\n return self.__class__(m)\n \n def reverse(self) -> ReversedPackageDAG:\n", "test_patch": "diff --git a/tests/_models/test_dag.py b/tests/_models/test_dag.py\nindex 5e16698..d7e1c8a 100644\n--- a/tests/_models/test_dag.py\n+++ b/tests/_models/test_dag.py\n@@ -39,14 +39,14 @@ def dag_to_dict(g: PackageDAG) -> dict[str, list[str]]:\n \n def test_package_dag_filter_fnmatch_include_a(t_fnmatch: PackageDAG) -> None:\n # test include for a.*in the result we got only a.* nodes\n- graph = dag_to_dict(t_fnmatch.filter_nodes({\"a.*\"}, None))\n+ graph = dag_to_dict(t_fnmatch.filter_nodes([\"a.*\"], None))\n assert graph == {\"a.a\": [\"a.b\", \"a.c\"], \"a.b\": [\"a.c\"]}\n \n \n def test_package_dag_filter_fnmatch_include_b(t_fnmatch: PackageDAG) -> None:\n # test include for b.*, which has a.b and a.c in tree, but not a.a\n # in the result we got the b.* nodes plus the a.b node as child in the tree\n- graph = dag_to_dict(t_fnmatch.filter_nodes({\"b.*\"}, None))\n+ graph = dag_to_dict(t_fnmatch.filter_nodes([\"b.*\"], None))\n assert graph == {\"b.a\": [\"b.b\"], \"b.b\": [\"a.b\"], \"a.b\": [\"a.c\"]}\n \n \n@@ -62,6 +62,16 @@ def test_package_dag_filter_fnmatch_exclude_a(t_fnmatch: PackageDAG) -> None:\n assert graph == {\"b.a\": [\"b.b\"], \"b.b\": []}\n \n \n+def test_package_dag_filter_include_exclude_both_used(t_fnmatch: PackageDAG) -> None:\n+ with pytest.raises(AssertionError):\n+ t_fnmatch.filter_nodes([\"a.a\", \"a.b\"], {\"a.b\"})\n+\n+\n+def test_package_dag_filter_nonexistent_packages(t_fnmatch: PackageDAG) -> None:\n+ with pytest.raises(ValueError, match=\"No packages matched using the following patterns: x, y, z\"):\n+ t_fnmatch.filter_nodes([\"x\", \"y\", \"z\"], None)\n+\n+\n def test_package_dag_reverse(example_dag: PackageDAG) -> None:\n def sort_map_values(m: dict[str, Any]) -> dict[str, Any]:\n return {k: sorted(v) for k, v in m.items()}\ndiff --git a/tests/render/test_text.py b/tests/render/test_text.py\nindex e136bbe..767c8a5 100644\n--- a/tests/render/test_text.py\n+++ b/tests/render/test_text.py\n@@ -525,7 +525,7 @@ def test_render_text_list_all_and_packages_options_used(\n package_dag = PackageDAG.from_pkgs(list(mock_pkgs(graph)))\n \n # NOTE: Mimicking the --packages option being used here.\n- package_dag = package_dag.filter_nodes({\"examplePy\"}, None)\n+ package_dag = package_dag.filter_nodes([\"examplePy\"], None)\n \n render_text(package_dag, max_depth=float(\"inf\"), encoding=\"utf-8\", list_all=True, frozen=False)\n captured = capsys.readouterr()\n", "problem_statement": "Success code returned on missing packages\nI was totally confused by output of pipdeptree when I tried to call it with `pipdeptree -p ansiblelint`, as it listed not deps and returned as success.\r\n\r\nIt was my mistake to mention module name instead of correct packaga name `ansible-lint` but clearly returning 0 is a bug, as a missing package should clearly return an error.", "language": "python", "image_name": "docker.io/swerebenchv2/tox-dev-pipdeptree:279-6dddc85", "install_config": {"base_image_name": "python_base_310", "docker_specs": {"_variant": null, "bazel_version": null, "bun_version": null, "cargo_version": null, "deno_version": null, "docker_version": null, "erlang_version": null, "gcc_version": null, "go_version": null, "helm_version": null, "java_version": null, "jdk_version": null, "llvm_version": null, "lua_version": null, "luajit_version": null, "neovim_version": null, "node_version": null, "npm_version": null, "nvim_version": null, "pnpm_version": null, "python_image": "python_base_310", "python_version": null, "redis_version": null, "ruby_version": null, "rust_version": null, "rustc_version": null, "solana_version": null, "sqlite_version": null}, "install": ["pip install -q -e .[test]"], "log_parser": "parse_log_pytest", "test_cmd": "pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning tests/_models/test_dag.py tests/render/test_text.py"}, "FAIL_TO_PASS": ["tests/_models/test_dag.py::test_package_dag_filter_nonexistent_packages"], "PASS_TO_PASS": ["tests/_models/test_dag.py::test_package_dag_get_node_as_parent", "tests/_models/test_dag.py::test_package_dag_filter_fnmatch_include_a", "tests/_models/test_dag.py::test_package_dag_filter_fnmatch_include_b", "tests/_models/test_dag.py::test_package_dag_filter_fnmatch_exclude_c", "tests/_models/test_dag.py::test_package_dag_filter_fnmatch_exclude_a", "tests/_models/test_dag.py::test_package_dag_filter_include_exclude_both_used", "tests/_models/test_dag.py::test_package_dag_reverse", "tests/_models/test_dag.py::test_package_dag_from_pkgs", "tests/render/test_text.py::test_render_text[True-False-True-expected_output0]", "tests/render/test_text.py::test_render_text[True-True-True-expected_output1]", "tests/render/test_text.py::test_render_text[False-False-True-expected_output2]", "tests/render/test_text.py::test_render_text[False-True-True-expected_output3]", "tests/render/test_text.py::test_render_text[True-False-False-expected_output4]", "tests/render/test_text.py::test_render_text[True-True-False-expected_output5]", "tests/render/test_text.py::test_render_text[False-False-False-expected_output6]", "tests/render/test_text.py::test_render_text[False-True-False-expected_output7]", "tests/render/test_text.py::test_render_text_given_depth[True-0-expected_output0]", "tests/render/test_text.py::test_render_text_given_depth[False-0-expected_output1]", "tests/render/test_text.py::test_render_text_given_depth[True-2-expected_output2]", "tests/render/test_text.py::test_render_text_given_depth[False-2-expected_output3]", "tests/render/test_text.py::test_render_text_encoding[0-utf-8-expected_output0]", "tests/render/test_text.py::test_render_text_encoding[0-utf-8-expected_output1]", "tests/render/test_text.py::test_render_text_encoding[2-utf-8-expected_output2]", "tests/render/test_text.py::test_render_text_encoding[2-ascii-expected_output3]", "tests/render/test_text.py::test_render_text_encoding[2-utf-8-expected_output4]", "tests/render/test_text.py::test_render_text_encoding[2-ascii-expected_output5]", "tests/render/test_text.py::test_render_text_list_all_and_packages_options_used"], "responses_create_params": {"input": [{"role": "user", "content": "Success code returned on missing packages\nI was totally confused by output of pipdeptree when I tried to call it with `pipdeptree -p ansiblelint`, as it listed not deps and returned as success.\r\n\r\nIt was my mistake to mention module name instead of correct packaga name `ansible-lint` but clearly returning 0 is a bug, as a missing package should clearly return an error.\n\n## New interfaces to add:\nMethod: PackageDAG.filter_nodes(self, include: list[str] | None, exclude: set[str] | None)\nLocation: src/pipdeptree/_models/dag.py\nInputs: \n- **include** \u2013 optional list of fnmatch patterns (case\u2011insensitive) that specify which package keys should be kept in the resulting graph. If *None*, no inclusion filtering is applied. \n- **exclude** \u2013 optional set of fnmatch patterns (case\u2011insensitive) that specify which package keys should be removed from the resulting graph. If *None*, no exclusion filtering is applied. \n- The method asserts that no pattern appears in both *include* and *exclude* (overlap raises\u202fAssertionError). \n- When *include* is provided, at least one of its patterns must match an existing package; otherwise a\u202fValueError is raised with a message listing the non\u2011matching patterns.\nOutputs: Returns a new **PackageDAG** instance containing only the nodes that satisfy the include/exclude criteria, together with their transitive child dependencies. May raise **AssertionError** for overlapping include/exclude patterns or **ValueError** when include patterns match no packages.\nDescription: Filters the dependency graph according to glob\u2011style include and exclude specifications, preserving children of included nodes. Updated to accept a list for *include* (instead of a set) and to report unmatched include patterns, as exercised by the new tests."}]}, "task_source": "swe_rebench_example_agent"}
+{"instance_id": "cta-observatory__ctapipe-2397", "repo": "cta-observatory/ctapipe", "base_commit": "74724b899fc9eb013f9445faf090fafe265ef68b", "patch": "diff --git a/ctapipe/instrument/camera/geometry.py b/ctapipe/instrument/camera/geometry.py\nindex dd55b144..1d83a1ba 100644\n--- a/ctapipe/instrument/camera/geometry.py\n+++ b/ctapipe/instrument/camera/geometry.py\n@@ -954,12 +954,13 @@ class CameraGeometry:\n pix_indices: Pixel index or array of pixel indices. Returns -1 if position falls\n outside camera\n \"\"\"\n-\n if not self._all_pixel_areas_equal:\n logger.warning(\n \" Method not implemented for cameras with varying pixel sizes\"\n )\n unit = x.unit\n+ scalar = x.ndim == 0\n+\n points_searched = np.dstack([x.to_value(unit), y.to_value(unit)])\n circum_rad = self._pixel_circumradius[0].to_value(unit)\n kdtree = self._kdtree\n@@ -969,8 +970,9 @@ class CameraGeometry:\n del dist\n pix_indices = pix_indices.flatten()\n \n+ invalid = np.iinfo(pix_indices.dtype).min\n # 1. Mark all points outside pixel circumeference as lying outside camera\n- pix_indices[pix_indices == self.n_pixels] = -1\n+ pix_indices[pix_indices == self.n_pixels] = invalid\n \n # 2. Accurate check for the remaing cases (within circumference, but still outside\n # camera). It is first checked if any border pixel numbers are returned.\n@@ -1006,17 +1008,9 @@ class CameraGeometry:\n )\n del dist_check\n if index_check != insidepix_index:\n- pix_indices[index] = -1\n-\n- # print warning:\n- for index in np.where(pix_indices == -1)[0]:\n- logger.warning(\n- \" Coordinate ({} m, {} m) lies outside camera\".format(\n- points_searched[0][index, 0], points_searched[0][index, 1]\n- )\n- )\n+ pix_indices[index] = invalid\n \n- return pix_indices if len(pix_indices) > 1 else pix_indices[0]\n+ return np.squeeze(pix_indices) if scalar else pix_indices\n \n @staticmethod\n def simtel_shape_to_type(pixel_shape):\ndiff --git a/docs/changes/2397.api.rst b/docs/changes/2397.api.rst\nnew file mode 100644\nindex 00000000..45b64781\n--- /dev/null\n+++ b/docs/changes/2397.api.rst\n@@ -0,0 +1,8 @@\n+``CameraGeometry.position_to_pix_index`` will now return the minimum integer value for invalid\n+pixel coordinates instead of -1 due to the danger of using -1 as an index in python accessing\n+the last element of a data array for invalid pixels.\n+The function will now also no longer raise an error if the arguments are empty arrays and instead\n+just return an empty index array.\n+The function will also no longer log a warning in case of coordinates that do not match a camera pixel.\n+The function is very low-level and if not finding a pixel at the tested position warrants a warning or\n+is expected will depend on the calling code.\n", "test_patch": "diff --git a/ctapipe/instrument/camera/tests/test_geometry.py b/ctapipe/instrument/camera/tests/test_geometry.py\nindex 10410e0e..8e3a7545 100644\n--- a/ctapipe/instrument/camera/tests/test_geometry.py\n+++ b/ctapipe/instrument/camera/tests/test_geometry.py\n@@ -68,10 +68,20 @@ def test_load_lst_camera(prod5_lst):\n \n def test_position_to_pix_index(prod5_lst):\n \"\"\"test that we can lookup a pixel from a coordinate\"\"\"\n+ geometry = prod5_lst.camera.geometry\n+\n x, y = (0.80 * u.m, 0.79 * u.m)\n- pix_id = prod5_lst.camera.geometry.position_to_pix_index(x, y)\n+\n+ pix_id = geometry.position_to_pix_index(x, y)\n+\n assert pix_id == 1575\n \n+ pix_ids = geometry.position_to_pix_index([0.8, 0.8] * u.m, [0.79, 0.79] * u.m)\n+ np.testing.assert_array_equal(pix_ids, [1575, 1575])\n+\n+ assert len(geometry.position_to_pix_index([] * u.m, [] * u.m)) == 0\n+ assert geometry.position_to_pix_index(5 * u.m, 5 * u.m) == np.iinfo(int).min\n+\n \n def test_find_neighbor_pixels():\n \"\"\"test basic neighbor functionality\"\"\"\n", "problem_statement": "CameraGeometry position_to_pix_index returns -1 for nan input\nhttps://github.com/cta-observatory/ctapipe/blob/39762693534f7dc9b884684c3f82e153bd9da560/ctapipe/instrument/camera/geometry.py#L859\r\n\r\nFor example, of one uses it on image centroid coordinates to make a \"pixelized\" 2d histogram, all non-reconstructed images end up in the highest-index pixel (=-1). It would be better to return np.nan.", "language": "python", "image_name": "docker.io/swerebenchv2/cta-observatory-ctapipe:2397-74724b8", "install_config": {"base_image_name": "python_base_310", "docker_specs": {"_variant": null, "bazel_version": null, "bun_version": null, "cargo_version": null, "deno_version": null, "docker_version": null, "erlang_version": null, "gcc_version": null, "go_version": null, "helm_version": null, "java_version": null, "jdk_version": null, "llvm_version": null, "lua_version": null, "luajit_version": null, "neovim_version": null, "node_version": null, "npm_version": null, "nvim_version": null, "pnpm_version": null, "python_image": "python_base_310", "python_version": null, "redis_version": null, "ruby_version": null, "rust_version": null, "rustc_version": null, "solana_version": null, "sqlite_version": null}, "install": ["pip install -q -e .[tests]", "pip install -q ./test_plugin"], "log_parser": "parse_log_pytest", "test_cmd": "pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning ctapipe/instrument/camera/tests/test_geometry.py"}, "FAIL_TO_PASS": ["ctapipe/instrument/camera/tests/test_geometry.py::test_position_to_pix_index"], "PASS_TO_PASS": ["ctapipe/instrument/camera/tests/test_geometry.py::test_construct", "ctapipe/instrument/camera/tests/test_geometry.py::test_make_rectangular_camera_geometry", "ctapipe/instrument/camera/tests/test_geometry.py::test_load_lst_camera", "ctapipe/instrument/camera/tests/test_geometry.py::test_to_and_from_table", "ctapipe/instrument/camera/tests/test_geometry.py::test_write_read", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[ASTRICam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[CHEC]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[DigiCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[FACT]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[FlashCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[HESS-I]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[HESS-II]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[LSTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[MAGICCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[NectarCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[SCTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[VERITAS]", "ctapipe/instrument/camera/tests/test_geometry.py::test_slicing_rotation[Whipple490]", "ctapipe/instrument/camera/tests/test_geometry.py::test_equals", "ctapipe/instrument/camera/tests/test_geometry.py::test_hashing", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[ASTRICam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[CHEC]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[DigiCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[FACT]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[FlashCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[HESS-I]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[HESS-II]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[LSTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[MAGICCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[NectarCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[SCTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[VERITAS]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_from_name[Whipple490]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[ASTRICam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[CHEC]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[DigiCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[FACT]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[FlashCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[HESS-I]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[HESS-II]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[LSTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[MAGICCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[NectarCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[SCTCam]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[VERITAS]", "ctapipe/instrument/camera/tests/test_geometry.py::test_camera_coordinate_transform[Whipple490]", "ctapipe/instrument/camera/tests/test_geometry.py::test_guess_width", "ctapipe/instrument/camera/tests/test_geometry.py::test_pixel_width", "ctapipe/instrument/camera/tests/test_geometry.py::test_guess_radius"], "responses_create_params": {"input": [{"role": "user", "content": "CameraGeometry position_to_pix_index returns -1 for nan input\nhttps://github.com/cta-observatory/ctapipe/blob/39762693534f7dc9b884684c3f82e153bd9da560/ctapipe/instrument/camera/geometry.py#L859\r\n\r\nFor example, of one uses it on image centroid coordinates to make a \"pixelized\" 2d histogram, all non-reconstructed images end up in the highest-index pixel (=-1). It would be better to return np.nan.\n\n## New interfaces to add:\nMethod: CameraGeometry.position_to_pix_index(self, x, y)\nLocation: ctapipe/instrument/camera/geometry.py\nInputs: \n- **x**, **y**: astropy Quantity objects representing X and Y coordinates (scalar or 1\u2011D array). Units must be compatible; empty arrays are permitted.\nOutputs: \n- Returns a NumPy integer pixel index for scalar inputs or a NumPy integer array for vectorized inputs. \n- Returns `np.iinfo(int).min` for any coordinate that falls outside the camera. \n- Returns an empty integer array when the input arrays are empty. \n- No warning is emitted for out\u2011of\u2011bounds coordinates.\nDescription: Low\u2011level routine that looks up the camera pixel that contains a given (x, y) position. It now handles scalar and array inputs uniformly, returns a sentinel minimum\u2011int value for invalid positions, and gracefully handles empty inputs without raising errors."}]}, "task_source": "swe_rebench_example_agent"}
diff --git a/resources_servers/swe_rebench/data/example_metrics.json b/resources_servers/swe_rebench/data/example_metrics.json
new file mode 100644
index 00000000000..ffad6732f23
--- /dev/null
+++ b/resources_servers/swe_rebench/data/example_metrics.json
@@ -0,0 +1,79 @@
+{
+ "name": "example",
+ "type": "example",
+ "jsonl_fpath": "resources_servers/swe_rebench/data/example.jsonl",
+ "num_repeats": 1,
+ "source": null,
+ "gitlab_identifier": null,
+ "huggingface_identifier": null,
+ "license": null,
+ "Number of examples": 5,
+ "Number of tools": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "Json-dumped number of words (proxy for token count)": {
+ "Total # non-null values": 5,
+ "Average": 188.8,
+ "Min": 106.0,
+ "Max": 278.0,
+ "Standard deviation": 72.71
+ },
+ "Number of turns": {
+ "Total # non-null values": 5,
+ "Average": 1.0,
+ "Min": 1.0,
+ "Max": 1.0,
+ "Standard deviation": 0.0
+ },
+ "Temperature": {
+ "Total # non-null values": 0,
+ "Average": 0.0,
+ "Min": 0.0,
+ "Max": 0.0,
+ "Standard deviation": 0.0
+ },
+ "instance_id": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "repo": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "base_commit": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "test_patch": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "problem_statement": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "language": {
+ "unique_count": 4,
+ "total_count": 5
+ },
+ "image_name": {
+ "unique_count": 5,
+ "total_count": 5
+ },
+ "FAIL_TO_PASS": {
+ "unique_count": 62,
+ "total_count": 62
+ },
+ "PASS_TO_PASS": {
+ "unique_count": 685,
+ "total_count": 685
+ }
+}
\ No newline at end of file
diff --git a/resources_servers/swe_rebench/data/example_rollouts.jsonl b/resources_servers/swe_rebench/data/example_rollouts.jsonl
new file mode 100644
index 00000000000..1ac63b6be87
--- /dev/null
+++ b/resources_servers/swe_rebench/data/example_rollouts.jsonl
@@ -0,0 +1,5 @@
+{"responses_create_params": {"background": null, "include": null, "input": [], "instructions": null, "max_output_tokens": null, "max_tool_calls": null, "metadata": null, "model": null, "parallel_tool_calls": true, "previous_response_id": null, "prompt": null, "reasoning": null, "service_tier": null, "store": null, "context_management": null, "conversation": null, "moderation": null, "prompt_cache_key": null, "prompt_cache_retention": null, "safety_identifier": null, "stream_options": null, "temperature": null, "text": null, "tool_choice": "auto", "tools": [], "top_logprobs": null, "top_p": null, "truncation": null, "user": null, "stream": null}, "response": {"id": "", "created_at": 0.0, "error": null, "incomplete_details": null, "instructions": null, "metadata": null, "model": "", "object": "response", "output": [], "parallel_tool_calls": false, "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null, "background": null, "completed_at": null, "conversation": null, "max_output_tokens": null, "max_tool_calls": null, "moderation": null, "previous_response_id": null, "prompt": null, "prompt_cache_key": null, "prompt_cache_retention": null, "reasoning": null, "safety_identifier": null, "service_tier": null, "status": null, "text": null, "top_logprobs": null, "truncation": null, "usage": null, "user": null}, "reward": 1.0, "failure_reason": null, "evaluation_completed": true, "resolved": true, "patch_applied": true, "instance_id": "intel__rohd-458", "language": "dart", "test_results": {"FAIL_TO_PASS": {"success": ["across simulator reset normal logic", "late previousValue", "across simulator reset logic structure", "instrumentation on struct does not make hardware"], "failure": []}, "PASS_TO_PASS": {"success": ["build runs properly for comb sensitivity search", "module reuse should fail normally", "execute math conditionally normal", "false sensitivity does not cause false comb cycle", "false sensitivity does not cause false comb cycle (test with enable 1)", "functional NotGate bus", "false sensitivity does not cause false comb cycle (test with enable 0)", "functional And2Gate bus", "functional Bus shrink", "functional Operator Indexing", "functional Bus swizzle", "functional put width mismatches width too small", "collapse pretty", "functional put width mismatches width too big", "functional invalid connection exceptions self-connecting logic", "module duplicate assignment should fail normally", "simpler example normal", "staged example normal", "should return true if rohd version is similar in both pubspec.yaml and config class.", "propagation example normal", "Add Function: should return duplicates if duplicate value exists through addAll method", "Add Function: should return duplicates if duplicate value exists through add method", "propagation example ssa", "remove function: should return value if removed value are not duplicate", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is valid, THEN expect to compile successfully.", "remove function: should return exception if removed value that are duplicate", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is invalid, THEN expect to throw exception.", "functional conditional loopy comb normal", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is null, THEN expect to throw exception.", "GIVEN that Reserved Definition Name is TRUE, WHEN definition name is empty string, THEN expect to throw exception.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is valid, THEN expected to compile successfully.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is invalid, THEN expected to sanitize name.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is null, THEN expected to auto initialize name.", "GIVEN that Reserved Definition Name is FALSE, WHEN definition name is null, AND runtime type name is invalid, THEN expect to sanitize the result", "should return Exception when super.name is empty string", "functional conditional loopy comb ssa", "should contains ROHD version number when sv is generated.", "functional flopped expressions for conditionals caseNormal", "functional flopped expressions for conditionals caseZ", "counter example", "instantiate", "functional flopped expressions for conditionals ifNormal", "should contains ROHD version number when wavedumper is generated.", "functional bad if blocks IfBlock with only else fails", "functional bad if blocks IfBlock with else in the middle fails", "tree example", "benchmark pipeline", "functional bad if blocks IfBlock with else at the start fails", "GIVEN logic name is valid THEN expected to see proper name being generated", "Logic extend zero extend with less width throws exception", "Test signals for sanitized names", "functional NotGate single bit", "fir filter example", "GIVEN logic name is invalid THEN expected to see sanitized name", "Logic extend sign extend with less width throws exception", "interface ports dont get doubled up", "functional Contention not gate", "GIVEN logic name is null THEN expected to see autogeneration of name", "uniquified interfaces get uniquified ports", "functional And2Gate single bit", "zero-out receivers in default case", "GIVEN logic name is empty string THEN expected to see autogeneration of name", "functional Or2Gate single bit", "should return exception when port name is not sanitary.", "conditional type is used", "functional Xor2Gate single bit", "fsm example", "maybe port tryPort, exists", "port name: GIVEN port name is empty string THEN expected to see exception", "maybe port tryPort, doesnt exist", "fsm validation duplicate state identifiers throws exception", "mux shorthand", "renameable name stays present", "dLatch assignments en = 0, out is blocked", "iterable removable queue forEach no removal", "fsm validation missing reset state throws exception", "iterable removable queue forEach remove even", "mergeable name is omitted", "dLatch assignments en = 1, passthrough is blocked", "iterable removable queue forEach remove odd", "state index", "unnamed is omitted", "Cases test LogicValue", "dLatch assignments en 1->0, value latch is blocked", "simcompare if invalid ", "iterable removable queue forEach remove all", "construct LogicArray empty array", "unnamed is omitted even when named", "iterable removable queue clear", "non-synthesizable signal deposition should not impact generated verilog", "construct LogicArray empty multi-dim array", "Cases test Int", "iterable removable queue takeAll", "dLatch oneComb en = 0, out is blocked", "reserved name stays present", "unconnected port does not duplicate internal signal", "Cases test Logic", "construct LogicArray single-dim array", "crash compare", "tryInput, exists", "reserved and input with same name errors", "dLatch oneComb en = 1, passthrough is blocked", "construct LogicArray many-dim array", "Cases test Default", "Logic withSet setting with bigger number throws exception", "sensitive naming assigns and gates", "bin with underscores", "simcompare Conditional assign module with invalid inputs", "tryInput, doesnt exist", "bad compare", "reserved and output with same name errors", "Cases test Exceptions(Int)", "Logic withSet setting with number in middle overrun throws exception", "tryOutput, exists", "big value test", "construct LogicArray no dim exception", "dLatch oneComb en 1->0, value latch is blocked", "sensitive naming bus subset", "sv expansion handles lint issues", "2x reserved name errors", "two input bitwise and2", "tryOutput, doesnt exist", "mod3 sizes", "Cases test Condition width mismatch Exception", "construct LogicArray overly unpacking exception", "floating signals unconnected floating", "dLatch manyCombs en = 0, out is blocked", "LogicValue Misc reversed", "compare two positive int-width numbers", "floating signals driven to z", "Cases test Expression width mismatch Exception for Logic", "construct LogicArray unpacked dims get passed down", "unpreferred signals get lower priority when merging", "dLatch manyCombs en = 1, passthrough is blocked", "simcompare Unique case", "multimodules4", "logic value fromBool", "values test small Int storage len=62", "Cases test Expression width mismatch Exception for LogicValue", "values test big Int storage len=62", "dLatch manyCombs en 1->0, value latch is blocked", "LogicValue factory and to methods", "Cases test Null width Exception", "long chain of combinational logic and modules", "values test cross compare len=62", "LogicValue big unsigned int string", "LogicValue extend extend with same width returns same thing", "values test big math len=62", "LogicValue -1 int vs. 64 1s for big width", "LogicValue extend extend with less width throws exception", "simcompare should return exception if a conditional is used multiple times.", "values test division test len=62", "LogicValue invalid string ofString", "LogicValue extend extend with more width properly extends", "values test modulo test len=62", "LogicValue extend zero extend pads 0s", "LogicValue extend sign extend for positive number pads 0s", "values test clog test len=62", "LogicValue LogicValue Construction", "multimodules5", "LogicValue extend sign extend for negative number pads 1s", "LogicValue unary", "values test small Int storage len=63", "values test big Int storage len=63", "LogicValue and", "LogicValue withSet setting with bigger number throws exception", "values test cross compare len=63", "LogicValue or", "LogicValue withSet setting with number in middle overrun throws exception", "values test big math len=63", "LogicValue withSet setting same width returns only new", "LogicValue xor", "values test division test len=63", "LogicValue withSet setting at front", "LogicValue ==", "values test modulo test len=63", "LogicValue withSet setting at end", "signal and module naming conflicts inputPort == outputPort", "LogicValue isPosEdge", "LogicValue withSet setting in the middle", "values test clog test len=63", "LogicValue isNegEdge", "complex trunk with leaves doesnt duplicate identical modules", "should return SignalRedrivenException when there are multiple drivers for a flop when redrive not allowed.", "values test small Int storage len=64", "values test big Int storage len=64", "different reserved definition name modules stay separate", "values test cross compare len=64", "values test big math len=64", "two input bitwise or2", "values test division test len=64", "should return NonSupportedTypeException when simcompare expected output values has invalid runtime type. ", "values test modulo test len=64", "values test clog test len=64", "two input bitwise xor2", "should return SignalRedrivenException when driven with x signals and valid signals when redrive not allowed.", "values test small Int storage len=65", "LogicValue.of example", "values test big Int storage len=65", "LogicValue toString 1 bit", "values test cross compare len=65", "values test big math len=65", "LogicValue toString 1 bit invalid", "values test division test len=65", "hier pair interface", "LogicValue toString <64-bit positive", "values test modulo test len=65", "LogicValue toString <64-bit negative", "signal and module naming conflicts inputPort == reservedInternalSignal", "values test clog test len=65", "LogicValue toString 64-bit positive", "values test small Int storage len=66", "LogicValue toString 64-bit negative", "values test big Int storage len=66", "simple pair interface", "values test cross compare len=66", "values test big math len=66", "LogicValue toString >64-bit positive", "values test division test len=66", "LogicValue toString >64-bit negative", "values test modulo test len=66", "priority amongst different types of signals", "signal and module naming conflicts inputPort == reservedInternalModuleInstance", "sample on flop with listen", "LogicValue toString include width", "values test clog test len=66", "unary operations (including \"to\") toMethods", "non-mergeable name sticks around when not needed", "sample on flop with await", "values test small Int storage len=67", "unary operations (including \"to\") large-width toInt big", "values test big Int storage len=67", "unary operations (including \"to\") large-width toInt filled", "benchmark logic value of", "values test cross compare len=67", "values test big math len=67", "values test division test len=67", "values test modulo test len=67", "unary operations (including \"to\") properties+indexing", "logicarray passthrough simple single element, unpacked", "Logic replicate multiply by a multiplier <1 throws exception", "values test clog test len=67", "shifts basic", "values test small Int storage len=68", "shifts small int boundary shift right logical", "values test big Int storage len=68", "shifts small int boundary shift left logical", "values test cross compare len=68", "values test big math len=68", "values test division test len=68", "shifts small int boundary shift right arithmetic", "values test modulo test len=68", "shifts big shift right logical", "values test clog test len=68", "signal and module naming conflicts outputPort == reservedInternalSignal", "simulator supports registration of actions at time stamps", "shifts big shift left logical", "shifts big shift right arithmetic", "simulator stops at maximum time", "shifts filled shift right logical", "simulator stops when endSimulation is called", "shifts filled shift left logical", "simulator reset waits for simulation to complete", "shifts filled shift right arithmetic", "signal and module naming conflicts outputPort == reservedInternalModuleInstance", "simulator end of action waits before ending", "shifts more than width", "Timestamper format must be correct", "simulator end of action waits async before ending", "synth builder should throw exception if module is not built", "simcompare getting out of range on pipeline is error", "LogicValue simple swizzle", "shifts huge left", "simcompare getting unregisterd signal on pipeline is error", "LogicValue simple rswizzle", "shifts huge right", "shifts huge right arithmetic", "LogicValue of multi-bit simple swizzle", "simulator end simulation waits for simulation to end", "flying output", "synth builder should able to create submodule in system verilog rtl", "signal declaration order input, output, and internal signals are sorted", "LogicValue of multi-bit simple rswizzle", "simulator waits for async registered actions to complete", "shifts huge right arithmetic zero", "flying input", "Logic replicate LogicValue.replicate tests", "simulator waits for async injected actions to complete", "signal declaration order input, output, and internal signals are sorted (different widths)", "shifts invalid values shift left", "doubled input", "Using same reserved name twice throws", "LogicValue of multi-bit 64-bit swizzle", "submodule port connections input, output are sorted by declaration order", "shifts invalid values shift right", "shifts invalid values shift right arithmetic", "shifts shift by 0", "LogicValue of multi-bit >64-bit swizzle single concat", "shifts invalid shamt", "doubled gapped input", "expressions in sub-module declaration", "LogicValue of multi-bit >64-bit swizzle", "shifts unsupported shamt type", "no floating assignments", "LogicValue of multi-bit variety of sizes smaller", "shorthand with sequential arrays with double reset error", "shifts example large shifts", "VCD parser can parse Icarus Verilog generated VCD file", "single changed multiple injections", "infer width int", "infer width bigint", "infer width negative int", "infer width negative BigInt", "simcompare Index Logic by an Integer test", "infer width logicvalue", "simcompare index Logic(1bit) by Logic index out of bounds test", "infer width unsupported", "changed does not trigger first time if no change", "simcompare slice 1 bit wide Logic test", "comparison operations equalsWithDontCare", "signal and module naming conflicts reservedInternalSignal == reservedInternalModuleInstance", "simcompare Index Logic by does not accept input other than int or Logic", "comparison operations equality", "clk edge counter", "comparison operations inequality", "injection triggers edge", "comparison operations greater", "attach dumper after put", "comparison operations less", "arithmetic operations power", "LogicStructure construction simple construction", "attach dumper before put", "injection triggers flop normal logic", "arithmetic operations addsub", "arithmetic operations muldiv", "LogicStructure construction sub logic in two structures throws exception", "injection triggers flop arrays", "not and reductions not", "LogicStructure construction sub structure in two structures throws exception", "multiple injects in the same timestamp", "injection triggers flop with enable logicvalue 1", "not and reductions and", "not and reductions or", "not and reductions xor", "LogicStructure construction structure clone", "LogicValue of multi-bit variety of sizes larger", "multi-bit value", "injection triggers flop with enable", "LogicValue of multi-bit filled simple swizzle", "BigLogicValue overrides", "LogicValue of multi-bit filled big swizzle", "reconnected signal still hits changed events", "LogicValue of multi-bit filled 0-width both swizzle", "multi-bit value mixed invalid", "FilledLogicValue overrides", "LogicValue of multi-bit filled 0-width lhs swizzle", "chain of reconnected signals still changes", "LogicValue of multi-bit filled 0-width rhs swizzle", "64-bit conversions 64-bit LogicValues larger than maximum positive value on integer are properly converted when converted from BigInt", "64-bit conversions 64-bit BigInts larger than max pos int value constructing a LogicValue is correct", "LogicValue of multi-bit non-filled 0-width both swizzle", "chain of reconnected signals still glitches", "64-bit conversions 64-bit binary negatives are converted properly with bin", "LogicValue of multi-bit non-filled 0-width lhs swizzle", "hash and equality hash", "late connection propagates without put", "LogicValue of multi-bit non-filled 0-width rhs swizzle", "dump after max sim time works", "hash and equality zero-width", "Utility operations clog2 operation", "create non-existent output directories", "Utility operations clog2 with 1 then 0s", "random value generation should throw exception when max is not int or BigInt.", "random value generation should throw exception when max is less than 0.", "random value generation should throw exception when max is set when generate random num with invalid bits.", "signal and module naming conflicts internalModuleDefinition == topDefinitionName", "injection on edge happens on same edge", "random value generation should return random logic value with invalid bits when includeInvalidBits is set to true.", "random value generation should return empty LogicValue when width is 0.", "random value generation should return empty LogicValue when max is 0 for int and big int.", "chain of changed and injects", "random value generation should return random int logic value without invalid bits when having different width and max constraint.", "random value generation should return random big integer logic value with width greater than 64 when having different width and max constraint.", "Comparable LogicValue positive - int", "Comparable LogicValue unsigned values - int 64 bits", "definition name respected with no conflicts", "Comparable LogicValue unsigned values - int 8 bits", "definition name uniquified with conflicts", "Comparable LogicValue unsigned BigInt & int", "Comparable LogicValue compare interpretable neg int-width numbers", "zero-width swizzle", "Comparable LogicValue unsigned BigInt", "definition name reserved throws exception with conflicts", "Comparable LogicValue Exceptions", "BigInt toIntUnsigned extension", "BigInt toIntUnsigned Width Exception", "instance name uniquified with conflicts", "one shift left by", "instance name reserved throws exception with conflicts", "precision adjustment handled for all widths", "ssa uninitialized", "benchmark byte enable", "benchmark waveform", "benchmark many seq and comb assignments", "benchmark many seq and comb manyCombs", "benchmark many seq and comb oneComb", "benchmark many seq and comb manySsaCombs", "benchmark many seq and comb oneSsaComb", "benchmark comb guard fanout", "benchmark ssa driver search"], "failure": []}, "tests_observed": 625, "resolved": true}, "test_output": "oup\",\"time\":3875}\n{\"group\":{\"id\":682,\"suiteID\":670,\"parentID\":681,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":69,\"column\":3,\"url\":\"file:///rohd/test/multimodule2_test.dart\"},\"type\":\"group\",\"time\":3875}\n{\"test\":{\"id\":683,\"name\":\"simcompare multimodules2\",\"suiteID\":670,\"groupIDs\":[681,682],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":70,\"column\":5,\"url\":\"file:///rohd/test/multimodule2_test.dart\"},\"type\":\"testStart\",\"time\":3875}\n{\"testID\":680,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":3914}\n{\"group\":{\"id\":684,\"suiteID\":679,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":3914}\n{\"group\":{\"id\":685,\"suiteID\":679,\"parentID\":684,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":50,\"column\":3,\"url\":\"file:///rohd/test/multimodule3_test.dart\"},\"type\":\"group\",\"time\":3914}\n{\"test\":{\"id\":686,\"name\":\"simcompare multimodules3\",\"suiteID\":679,\"groupIDs\":[684,685],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":51,\"column\":5,\"url\":\"file:///rohd/test/multimodule3_test.dart\"},\"type\":\"testStart\",\"time\":3914}\n{\"testID\":683,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out24332026 tmp_test/tmp_test24332026.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/multimodule2_test.dart 83:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":3949}\n{\"testID\":683,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":3952}\n{\"test\":{\"id\":687,\"name\":\"simcompare multimodules2 with enable\",\"suiteID\":670,\"groupIDs\":[681,682],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":86,\"column\":5,\"url\":\"file:///rohd/test/multimodule2_test.dart\"},\"type\":\"testStart\",\"time\":3952}\n{\"testID\":687,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out108001580 tmp_test/tmp_test108001580.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/multimodule2_test.dart 108:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":3967}\n{\"testID\":687,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":3968}\n{\"suite\":{\"id\":688,\"platform\":\"vm\",\"path\":\"test/multimodule4_test.dart\"},\"type\":\"suite\",\"time\":3969}\n{\"test\":{\"id\":689,\"name\":\"loading test/multimodule4_test.dart\",\"suiteID\":688,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":3969}\n{\"testID\":673,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":3969}\n{\"test\":{\"id\":690,\"name\":\"different reserved definition name modules stay separate\",\"suiteID\":658,\"groupIDs\":[672],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":99,\"column\":3,\"url\":\"file:///rohd/test/module_merging_test.dart\"},\"type\":\"testStart\",\"time\":3970}\n{\"testID\":690,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":3973}\n{\"suite\":{\"id\":691,\"platform\":\"vm\",\"path\":\"test/multimodule5_test.dart\"},\"type\":\"suite\",\"time\":3973}\n{\"test\":{\"id\":692,\"name\":\"loading test/multimodule5_test.dart\",\"suiteID\":691,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":3973}\n{\"testID\":686,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out815593403 tmp_test/tmp_test815593403.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/multimodule3_test.dart 58:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":3992}\n{\"testID\":686,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":3994}\n{\"suite\":{\"id\":693,\"platform\":\"vm\",\"path\":\"test/multimodule_test.dart\"},\"type\":\"suite\",\"time\":3995}\n{\"test\":{\"id\":694,\"name\":\"loading test/multimodule_test.dart\",\"suiteID\":693,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":3995}\n{\"testID\":689,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4055}\n{\"group\":{\"id\":695,\"suiteID\":688,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4055}\n{\"test\":{\"id\":696,\"name\":\"multimodules4\",\"suiteID\":688,\"groupIDs\":[695],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":44,\"column\":3,\"url\":\"file:///rohd/test/multimodule4_test.dart\"},\"type\":\"testStart\",\"time\":4055}\n{\"testID\":692,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4058}\n{\"group\":{\"id\":697,\"suiteID\":691,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4058}\n{\"test\":{\"id\":698,\"name\":\"multimodules5\",\"suiteID\":691,\"groupIDs\":[697],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":30,\"column\":3,\"url\":\"file:///rohd/test/multimodule5_test.dart\"},\"type\":\"testStart\",\"time\":4058}\n{\"testID\":694,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4080}\n{\"group\":{\"id\":699,\"suiteID\":693,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4080}\n{\"group\":{\"id\":700,\"suiteID\":693,\"parentID\":699,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":56,\"column\":3,\"url\":\"file:///rohd/test/multimodule_test.dart\"},\"type\":\"group\",\"time\":4080}\n{\"test\":{\"id\":701,\"name\":\"simcompare multimodules\",\"suiteID\":693,\"groupIDs\":[699,700],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":57,\"column\":5,\"url\":\"file:///rohd/test/multimodule_test.dart\"},\"type\":\"testStart\",\"time\":4081}\n{\"testID\":696,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4094}\n{\"suite\":{\"id\":702,\"platform\":\"vm\",\"path\":\"test/name_test.dart\"},\"type\":\"suite\",\"time\":4095}\n{\"test\":{\"id\":703,\"name\":\"loading test/name_test.dart\",\"suiteID\":702,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4095}\n{\"testID\":698,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4097}\n{\"suite\":{\"id\":704,\"platform\":\"vm\",\"path\":\"test/pair_interface_hier_test.dart\"},\"type\":\"suite\",\"time\":4097}\n{\"test\":{\"id\":705,\"name\":\"loading test/pair_interface_hier_test.dart\",\"suiteID\":704,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4097}\n{\"testID\":701,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out1026304227 tmp_test/tmp_test1026304227.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/multimodule_test.dart 65:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4140}\n{\"testID\":701,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4142}\n{\"suite\":{\"id\":706,\"platform\":\"vm\",\"path\":\"test/pair_interface_test.dart\"},\"type\":\"suite\",\"time\":4143}\n{\"test\":{\"id\":707,\"name\":\"loading test/pair_interface_test.dart\",\"suiteID\":706,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4143}\n{\"testID\":705,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4186}\n{\"group\":{\"id\":708,\"suiteID\":704,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4187}\n{\"test\":{\"id\":709,\"name\":\"hier pair interface\",\"suiteID\":704,\"groupIDs\":[708],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":84,\"column\":3,\"url\":\"file:///rohd/test/pair_interface_hier_test.dart\"},\"type\":\"testStart\",\"time\":4187}\n{\"testID\":703,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4219}\n{\"group\":{\"id\":710,\"suiteID\":702,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":43,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4219}\n{\"group\":{\"id\":711,\"suiteID\":702,\"parentID\":710,\"name\":\"signal and module naming conflicts\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":38,\"line\":102,\"column\":3,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"group\",\"time\":4219}\n{\"test\":{\"id\":712,\"name\":\"signal and module naming conflicts inputPort == outputPort\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4219}\n{\"testID\":707,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4231}\n{\"group\":{\"id\":713,\"suiteID\":706,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":3,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4231}\n{\"test\":{\"id\":714,\"name\":\"simple pair interface\",\"suiteID\":706,\"groupIDs\":[713],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":99,\"column\":3,\"url\":\"file:///rohd/test/pair_interface_test.dart\"},\"type\":\"testStart\",\"time\":4231}\n{\"testID\":709,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4232}\n{\"suite\":{\"id\":715,\"platform\":\"vm\",\"path\":\"test/pipeline_test.dart\"},\"type\":\"suite\",\"time\":4233}\n{\"test\":{\"id\":716,\"name\":\"loading test/pipeline_test.dart\",\"suiteID\":715,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4233}\n{\"testID\":712,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4237}\n{\"test\":{\"id\":717,\"name\":\"signal and module naming conflicts inputPort == internalSignal\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4237}\n{\"testID\":714,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4270}\n{\"group\":{\"id\":718,\"suiteID\":706,\"parentID\":713,\"name\":\"drive and receive other\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":108,\"column\":3,\"url\":\"file:///rohd/test/pair_interface_test.dart\"},\"type\":\"group\",\"time\":4270}\n{\"test\":{\"id\":719,\"name\":\"drive and receive other with assign\",\"suiteID\":706,\"groupIDs\":[713,718],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":130,\"column\":5,\"url\":\"file:///rohd/test/pair_interface_test.dart\"},\"type\":\"testStart\",\"time\":4270}\n{\"testID\":717,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4283}\n{\"testID\":717,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4283}\n{\"test\":{\"id\":720,\"name\":\"signal and module naming conflicts inputPort == reservedInternalSignal\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4283}\n{\"testID\":720,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4292}\n{\"test\":{\"id\":721,\"name\":\"signal and module naming conflicts inputPort == internalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4292}\n{\"testID\":721,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4301}\n{\"testID\":721,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4302}\n{\"test\":{\"id\":722,\"name\":\"signal and module naming conflicts inputPort == reservedInternalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4302}\n{\"testID\":722,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4315}\n{\"test\":{\"id\":723,\"name\":\"signal and module naming conflicts inputPort == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4315}\n{\"testID\":719,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out184485194 tmp_test/tmp_test184485194.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pair_interface_test.dart 127:18 main..testDriveAndReceive\\n===== asynchronous gap ===========================\\ntest/pair_interface_test.dart 131:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4317}\n{\"testID\":719,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4317}\n{\"test\":{\"id\":724,\"name\":\"drive and receive other with conditional assign\",\"suiteID\":706,\"groupIDs\":[713,718],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":134,\"column\":5,\"url\":\"file:///rohd/test/pair_interface_test.dart\"},\"type\":\"testStart\",\"time\":4317}\n{\"testID\":723,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4325}\n{\"testID\":723,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4325}\n{\"test\":{\"id\":725,\"name\":\"signal and module naming conflicts inputPort == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4325}\n{\"testID\":725,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4334}\n{\"testID\":725,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4335}\n{\"test\":{\"id\":726,\"name\":\"signal and module naming conflicts inputPort == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4336}\n{\"testID\":724,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out429194886 tmp_test/tmp_test429194886.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pair_interface_test.dart 127:18 main..testDriveAndReceive\\n===== asynchronous gap ===========================\\ntest/pair_interface_test.dart 135:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4342}\n{\"testID\":724,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4343}\n{\"suite\":{\"id\":727,\"platform\":\"vm\",\"path\":\"test/previous_value_test.dart\"},\"type\":\"suite\",\"time\":4349}\n{\"test\":{\"id\":728,\"name\":\"loading test/previous_value_test.dart\",\"suiteID\":727,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4350}\n{\"testID\":726,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4350}\n{\"testID\":726,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4351}\n{\"test\":{\"id\":729,\"name\":\"signal and module naming conflicts outputPort == internalSignal\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4351}\n{\"testID\":729,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4360}\n{\"testID\":729,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4361}\n{\"test\":{\"id\":730,\"name\":\"signal and module naming conflicts outputPort == reservedInternalSignal\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4361}\n{\"testID\":730,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4370}\n{\"test\":{\"id\":731,\"name\":\"signal and module naming conflicts outputPort == internalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4371}\n{\"testID\":731,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4380}\n{\"testID\":731,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4381}\n{\"test\":{\"id\":732,\"name\":\"signal and module naming conflicts outputPort == reservedInternalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4381}\n{\"testID\":732,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4390}\n{\"test\":{\"id\":733,\"name\":\"signal and module naming conflicts outputPort == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4391}\n{\"testID\":716,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4401}\n{\"group\":{\"id\":734,\"suiteID\":715,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":12,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4401}\n{\"group\":{\"id\":735,\"suiteID\":715,\"parentID\":734,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":12,\"line\":200,\"column\":3,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"group\",\"time\":4401}\n{\"test\":{\"id\":736,\"name\":\"simcompare simple pipeline\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":201,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4401}\n{\"testID\":733,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4401}\n{\"testID\":733,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4401}\n{\"test\":{\"id\":737,\"name\":\"signal and module naming conflicts outputPort == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4402}\n{\"testID\":737,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4410}\n{\"testID\":737,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4411}\n{\"test\":{\"id\":738,\"name\":\"signal and module naming conflicts outputPort == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4412}\n{\"testID\":738,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4420}\n{\"testID\":738,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4422}\n{\"test\":{\"id\":739,\"name\":\"signal and module naming conflicts internalSignal == reservedInternalSignal\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4422}\n{\"testID\":739,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4431}\n{\"testID\":739,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4432}\n{\"test\":{\"id\":740,\"name\":\"signal and module naming conflicts internalSignal == internalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4432}\n{\"testID\":740,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4440}\n{\"testID\":740,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4441}\n{\"test\":{\"id\":741,\"name\":\"signal and module naming conflicts internalSignal == reservedInternalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4442}\n{\"testID\":741,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4450}\n{\"testID\":741,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4451}\n{\"test\":{\"id\":742,\"name\":\"signal and module naming conflicts internalSignal == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4452}\n{\"testID\":742,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4460}\n{\"testID\":742,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4461}\n{\"test\":{\"id\":743,\"name\":\"signal and module naming conflicts internalSignal == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4461}\n{\"testID\":743,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4469}\n{\"testID\":743,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4470}\n{\"test\":{\"id\":744,\"name\":\"signal and module naming conflicts internalSignal == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4470}\n{\"testID\":744,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4479}\n{\"testID\":744,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4480}\n{\"test\":{\"id\":745,\"name\":\"signal and module naming conflicts reservedInternalSignal == internalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4480}\n{\"testID\":745,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4488}\n{\"testID\":745,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4489}\n{\"test\":{\"id\":746,\"name\":\"signal and module naming conflicts reservedInternalSignal == reservedInternalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4490}\n{\"testID\":746,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4499}\n{\"test\":{\"id\":747,\"name\":\"signal and module naming conflicts reservedInternalSignal == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4499}\n{\"testID\":747,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4507}\n{\"testID\":728,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4508}\n{\"group\":{\"id\":748,\"suiteID\":727,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4509}\n{\"test\":{\"id\":749,\"name\":\"sample on flop with listen\",\"suiteID\":727,\"groupIDs\":[748],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":20,\"column\":3,\"url\":\"file:///rohd/test/previous_value_test.dart\"},\"type\":\"testStart\",\"time\":4509}\n{\"testID\":747,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4509}\n{\"test\":{\"id\":750,\"name\":\"signal and module naming conflicts reservedInternalSignal == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4509}\n{\"testID\":750,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4517}\n{\"testID\":750,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4518}\n{\"test\":{\"id\":751,\"name\":\"signal and module naming conflicts reservedInternalSignal == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4518}\n{\"testID\":751,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4526}\n{\"testID\":751,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4528}\n{\"test\":{\"id\":752,\"name\":\"signal and module naming conflicts internalModuleInstance == reservedInternalModuleInstance\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4528}\n{\"testID\":752,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4536}\n{\"testID\":752,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4537}\n{\"test\":{\"id\":753,\"name\":\"signal and module naming conflicts internalModuleInstance == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4537}\n{\"testID\":753,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4550}\n{\"testID\":753,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4551}\n{\"test\":{\"id\":754,\"name\":\"signal and module naming conflicts internalModuleInstance == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4551}\n{\"testID\":736,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out710528556 tmp_test/tmp_test710528556.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 215:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4552}\n{\"testID\":754,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4560}\n{\"testID\":754,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4561}\n{\"test\":{\"id\":755,\"name\":\"signal and module naming conflicts internalModuleInstance == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4561}\n{\"testID\":736,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4562}\n{\"test\":{\"id\":756,\"name\":\"simcompare simple pipeline with intermediate gets\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":218,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4562}\n{\"testID\":755,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4570}\n{\"testID\":755,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4571}\n{\"test\":{\"id\":757,\"name\":\"signal and module naming conflicts reservedInternalModuleInstance == internalModuleDefinition\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4571}\n{\"testID\":757,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4580}\n{\"testID\":757,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4580}\n{\"test\":{\"id\":758,\"name\":\"signal and module naming conflicts reservedInternalModuleInstance == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4581}\n{\"testID\":758,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4595}\n{\"testID\":749,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4595}\n{\"testID\":756,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out42931966 tmp_test/tmp_test42931966.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 231:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4595}\n{\"test\":{\"id\":759,\"name\":\"sample on flop with await\",\"suiteID\":727,\"groupIDs\":[748],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":41,\"column\":3,\"url\":\"file:///rohd/test/previous_value_test.dart\"},\"type\":\"testStart\",\"time\":4596}\n{\"testID\":758,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4596}\n{\"test\":{\"id\":760,\"name\":\"signal and module naming conflicts reservedInternalModuleInstance == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4596}\n{\"testID\":756,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4596}\n{\"test\":{\"id\":761,\"name\":\"simcompare getting out of range on pipeline is error\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":234,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4596}\n{\"testID\":760,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4604}\n{\"testID\":760,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4605}\n{\"test\":{\"id\":762,\"name\":\"signal and module naming conflicts internalModuleDefinition == topDefinitionName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4605}\n{\"testID\":761,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4605}\n{\"test\":{\"id\":763,\"name\":\"simcompare getting unregisterd signal on pipeline is error\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":246,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4606}\n{\"testID\":759,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4607}\n{\"suite\":{\"id\":764,\"platform\":\"vm\",\"path\":\"test/provider_consumer_test.dart\"},\"type\":\"suite\",\"time\":4607}\n{\"test\":{\"id\":765,\"name\":\"loading test/provider_consumer_test.dart\",\"suiteID\":764,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4607}\n{\"testID\":762,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4608}\n{\"test\":{\"id\":766,\"name\":\"signal and module naming conflicts internalModuleDefinition == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4608}\n{\"testID\":763,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4609}\n{\"test\":{\"id\":767,\"name\":\"simcompare empty pipeline\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":257,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4609}\n{\"testID\":766,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4617}\n{\"testID\":766,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4617}\n{\"test\":{\"id\":768,\"name\":\"signal and module naming conflicts topDefinitionName == topName\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":160,\"column\":9,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4617}\n{\"testID\":768,\"error\":\"Expected to pass!\",\"stackTrace\":\"package:matcher fail\\ntest/name_test.dart 173:15 main..\\n\",\"isFailure\":true,\"type\":\"error\",\"time\":4626}\n{\"testID\":768,\"result\":\"failure\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4626}\n{\"test\":{\"id\":769,\"name\":\"signal and module naming conflicts input port name != internal signal name\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":180,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4627}\n{\"testID\":767,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out242626541 tmp_test/tmp_test242626541.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 273:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4640}\n{\"testID\":769,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out196019137 tmp_test/tmp_test196019137.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/name_test.dart 112:36 main..runTest\\n===== asynchronous gap ===========================\\ntest/name_test.dart 181:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4640}\n{\"testID\":769,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4641}\n{\"test\":{\"id\":770,\"name\":\"signal and module naming conflicts output port name != internal signal name\",\"suiteID\":702,\"groupIDs\":[710,711],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":184,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4641}\n{\"testID\":767,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4641}\n{\"test\":{\"id\":771,\"name\":\"simcompare multiuse pipeline\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":276,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4641}\n{\"testID\":770,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out621613426 tmp_test/tmp_test621613426.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/name_test.dart 112:36 main..runTest\\n===== asynchronous gap ===========================\\ntest/name_test.dart 185:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4650}\n{\"testID\":770,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4651}\n{\"group\":{\"id\":772,\"suiteID\":702,\"parentID\":710,\"name\":\"definition name\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":3,\"line\":190,\"column\":3,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"group\",\"time\":4651}\n{\"test\":{\"id\":773,\"name\":\"definition name respected with no conflicts\",\"suiteID\":702,\"groupIDs\":[710,772],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":191,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4651}\n{\"testID\":773,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4653}\n{\"test\":{\"id\":774,\"name\":\"definition name uniquified with conflicts\",\"suiteID\":702,\"groupIDs\":[710,772],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":196,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4653}\n{\"testID\":774,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4656}\n{\"test\":{\"id\":775,\"name\":\"definition name reserved throws exception with conflicts\",\"suiteID\":702,\"groupIDs\":[710,772],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":203,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4656}\n{\"testID\":775,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4658}\n{\"group\":{\"id\":776,\"suiteID\":702,\"parentID\":710,\"name\":\"instance name\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":210,\"column\":3,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"group\",\"time\":4658}\n{\"test\":{\"id\":777,\"name\":\"instance name uniquified with conflicts\",\"suiteID\":702,\"groupIDs\":[710,776],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":211,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4658}\n{\"testID\":777,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4660}\n{\"test\":{\"id\":778,\"name\":\"instance name reserved throws exception with conflicts\",\"suiteID\":702,\"groupIDs\":[710,776],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":219,\"column\":5,\"url\":\"file:///rohd/test/name_test.dart\"},\"type\":\"testStart\",\"time\":4660}\n{\"testID\":778,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4662}\n{\"suite\":{\"id\":779,\"platform\":\"vm\",\"path\":\"test/replication_test.dart\"},\"type\":\"suite\",\"time\":4663}\n{\"test\":{\"id\":780,\"name\":\"loading test/replication_test.dart\",\"suiteID\":779,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4663}\n{\"testID\":771,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out1012724650 tmp_test/tmp_test1012724650.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 288:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4697}\n{\"testID\":771,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4702}\n{\"test\":{\"id\":781,\"name\":\"simcompare simple pipeline late add\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":291,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4703}\n{\"testID\":781,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out661538436 tmp_test/tmp_test661538436.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 308:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4718}\n{\"testID\":781,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4722}\n{\"test\":{\"id\":782,\"name\":\"simcompare pipeline initialized via get\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":311,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4722}\n{\"testID\":765,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4723}\n{\"group\":{\"id\":783,\"suiteID\":764,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4724}\n{\"test\":{\"id\":784,\"name\":\"provider and consumer\",\"suiteID\":764,\"groupIDs\":[783],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":122,\"column\":3,\"url\":\"file:///rohd/test/provider_consumer_test.dart\"},\"type\":\"testStart\",\"time\":4724}\n{\"testID\":782,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out537265091 tmp_test/tmp_test537265091.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 327:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4737}\n{\"testID\":782,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4741}\n{\"test\":{\"id\":785,\"name\":\"simcompare pipeline initialized directly instead of via get\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":330,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4741}\n{\"testID\":785,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out937151665 tmp_test/tmp_test937151665.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 346:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4755}\n{\"testID\":785,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4758}\n{\"test\":{\"id\":786,\"name\":\"simcompare rv pipeline simple\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":349,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4758}\n{\"testID\":786,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out503409642 tmp_test/tmp_test503409642.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 378:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4782}\n{\"testID\":780,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4785}\n{\"group\":{\"id\":787,\"suiteID\":779,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4785}\n{\"group\":{\"id\":788,\"suiteID\":779,\"parentID\":787,\"name\":\"Logic\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":25,\"column\":3,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"group\",\"time\":4785}\n{\"group\":{\"id\":789,\"suiteID\":779,\"parentID\":788,\"name\":\"Logic replicate\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":27,\"column\":5,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"group\",\"time\":4785}\n{\"test\":{\"id\":790,\"name\":\"Logic replicate multiply by a multiplier <1 throws exception\",\"suiteID\":779,\"groupIDs\":[787,788,789],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":38,\"column\":7,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"testStart\",\"time\":4785}\n{\"testID\":786,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4785}\n{\"test\":{\"id\":791,\"name\":\"simcompare rv pipeline notready\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":381,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4785}\n{\"testID\":791,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out133086056 tmp_test/tmp_test133086056.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 432:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4811}\n{\"testID\":790,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4812}\n{\"test\":{\"id\":792,\"name\":\"Logic replicate multiply by 1 returns same thing\",\"suiteID\":779,\"groupIDs\":[787,788,789],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":47,\"column\":7,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"testStart\",\"time\":4812}\n{\"testID\":791,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4814}\n{\"test\":{\"id\":793,\"name\":\"simcompare rv pipeline multi\",\"suiteID\":715,\"groupIDs\":[734,735],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":435,\"column\":5,\"url\":\"file:///rohd/test/pipeline_test.dart\"},\"type\":\"testStart\",\"time\":4814}\n{\"testID\":784,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out465104896 tmp_test/tmp_test465104896.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/provider_consumer_test.dart 137:16 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4827}\n{\"testID\":784,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4830}\n{\"suite\":{\"id\":794,\"platform\":\"vm\",\"path\":\"test/sequential_test.dart\"},\"type\":\"suite\",\"time\":4831}\n{\"test\":{\"id\":795,\"name\":\"loading test/sequential_test.dart\",\"suiteID\":794,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4831}\n{\"testID\":793,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out917212221 tmp_test/tmp_test917212221.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/pipeline_test.dart 476:18 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4844}\n{\"testID\":793,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4846}\n{\"suite\":{\"id\":796,\"platform\":\"vm\",\"path\":\"test/shuffle_test.dart\"},\"type\":\"suite\",\"time\":4847}\n{\"test\":{\"id\":797,\"name\":\"loading test/shuffle_test.dart\",\"suiteID\":796,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4847}\n{\"testID\":792,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out193374514 tmp_test/tmp_test193374514.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/replication_test.dart 34:38 main...replicateVectors\\n===== asynchronous gap ===========================\\ntest/replication_test.dart 48:9 main...\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4864}\n{\"testID\":792,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4864}\n{\"test\":{\"id\":798,\"name\":\"Logic replicate multiply by 2 replicates the input signal twice\",\"suiteID\":779,\"groupIDs\":[787,788,789],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":55,\"column\":7,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"testStart\",\"time\":4865}\n{\"testID\":798,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out790167999 tmp_test/tmp_test790167999.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/replication_test.dart 34:38 main...replicateVectors\\n===== asynchronous gap ===========================\\ntest/replication_test.dart 56:9 main...\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4873}\n{\"testID\":798,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4874}\n{\"test\":{\"id\":799,\"name\":\"Logic replicate multiply by 3 replicates the input signal thrice\",\"suiteID\":779,\"groupIDs\":[787,788,789],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":63,\"column\":7,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"testStart\",\"time\":4874}\n{\"testID\":799,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out167761720 tmp_test/tmp_test167761720.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/replication_test.dart 34:38 main...replicateVectors\\n===== asynchronous gap ===========================\\ntest/replication_test.dart 64:9 main...\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":4882}\n{\"testID\":799,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4882}\n{\"test\":{\"id\":800,\"name\":\"Logic replicate LogicValue.replicate tests\",\"suiteID\":779,\"groupIDs\":[787,788,789],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":71,\"column\":7,\"url\":\"file:///rohd/test/replication_test.dart\"},\"type\":\"testStart\",\"time\":4882}\n{\"testID\":800,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4885}\n{\"suite\":{\"id\":801,\"platform\":\"vm\",\"path\":\"test/simulator_test.dart\"},\"type\":\"suite\",\"time\":4886}\n{\"test\":{\"id\":802,\"name\":\"loading test/simulator_test.dart\",\"suiteID\":801,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":4886}\n{\"testID\":795,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4935}\n{\"group\":{\"id\":803,\"suiteID\":794,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4936}\n{\"test\":{\"id\":804,\"name\":\"simple pipeline\",\"suiteID\":794,\"groupIDs\":[803],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":133,\"column\":3,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"testStart\",\"time\":4936}\n{\"testID\":797,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4940}\n{\"group\":{\"id\":805,\"suiteID\":796,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4941}\n{\"test\":{\"id\":806,\"name\":\"shuffle test\",\"suiteID\":796,\"groupIDs\":[805],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":43,\"column\":3,\"url\":\"file:///rohd/test/shuffle_test.dart\"},\"type\":\"testStart\",\"time\":4941}\n{\"testID\":802,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":4976}\n{\"group\":{\"id\":807,\"suiteID\":801,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":9,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":4976}\n{\"test\":{\"id\":808,\"name\":\"simulator supports registration of actions at time stamps\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":20,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4976}\n{\"testID\":808,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4989}\n{\"test\":{\"id\":809,\"name\":\"simulator stops at maximum time\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":27,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4989}\n{\"testID\":809,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4993}\n{\"test\":{\"id\":810,\"name\":\"simulator stops when endSimulation is called\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":40,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4993}\n{\"testID\":810,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4993}\n{\"test\":{\"id\":811,\"name\":\"simulator reset waits for simulation to complete\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":54,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4993}\n{\"testID\":811,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4994}\n{\"test\":{\"id\":812,\"name\":\"simulator end of action waits before ending\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":63,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4994}\n{\"testID\":812,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4995}\n{\"test\":{\"id\":813,\"name\":\"simulator end of action waits async before ending\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":73,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4995}\n{\"testID\":813,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":4996}\n{\"test\":{\"id\":814,\"name\":\"simulator end simulation waits for simulation to end\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":84,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":4996}\n{\"testID\":806,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out696804982 tmp_test/tmp_test696804982.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/shuffle_test.dart 50:34 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5011}\n{\"testID\":814,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5013}\n{\"test\":{\"id\":815,\"name\":\"simulator waits for async registered actions to complete\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":95,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":5013}\n{\"testID\":804,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out390895518 tmp_test/tmp_test390895518.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/sequential_test.dart 155:34 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5013}\n{\"testID\":815,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5014}\n{\"testID\":806,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5014}\n{\"test\":{\"id\":816,\"name\":\"simulator waits for async injected actions to complete\",\"suiteID\":801,\"groupIDs\":[807],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":106,\"column\":3,\"url\":\"file:///rohd/test/simulator_test.dart\"},\"type\":\"testStart\",\"time\":5014}\n{\"suite\":{\"id\":817,\"platform\":\"vm\",\"path\":\"test/ssa_test.dart\"},\"type\":\"suite\",\"time\":5015}\n{\"test\":{\"id\":818,\"name\":\"loading test/ssa_test.dart\",\"suiteID\":817,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5015}\n{\"testID\":816,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5016}\n{\"suite\":{\"id\":819,\"platform\":\"vm\",\"path\":\"test/sv_gen_test.dart\"},\"type\":\"suite\",\"time\":5016}\n{\"test\":{\"id\":820,\"name\":\"loading test/sv_gen_test.dart\",\"suiteID\":819,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5016}\n{\"testID\":804,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5017}\n{\"group\":{\"id\":821,\"suiteID\":794,\"parentID\":803,\"name\":\"shorthand with sequential\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":3,\"line\":159,\"column\":3,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"group\",\"time\":5017}\n{\"test\":{\"id\":822,\"name\":\"shorthand with sequential normal logic\",\"suiteID\":794,\"groupIDs\":[803,821],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":180,\"column\":5,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"testStart\",\"time\":5017}\n{\"testID\":822,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out156627619 tmp_test/tmp_test156627619.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/sequential_test.dart 177:18 main..testShorthand\\n===== asynchronous gap ===========================\\ntest/sequential_test.dart 181:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5032}\n{\"testID\":822,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5033}\n{\"test\":{\"id\":823,\"name\":\"shorthand with sequential arrays\",\"suiteID\":794,\"groupIDs\":[803,821],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":184,\"column\":5,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"testStart\",\"time\":5033}\n{\"testID\":823,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out949172881 tmp_test/tmp_test949172881.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/sequential_test.dart 177:18 main..testShorthand\\n===== asynchronous gap ===========================\\ntest/sequential_test.dart 185:7 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5053}\n{\"testID\":823,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5055}\n{\"test\":{\"id\":824,\"name\":\"shorthand with sequential arrays with double reset error\",\"suiteID\":794,\"groupIDs\":[803,821],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":188,\"column\":5,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"testStart\",\"time\":5055}\n{\"testID\":824,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5061}\n{\"test\":{\"id\":825,\"name\":\"reset and value types\",\"suiteID\":794,\"groupIDs\":[803],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":194,\"column\":3,\"url\":\"file:///rohd/test/sequential_test.dart\"},\"type\":\"testStart\",\"time\":5061}\n{\"testID\":825,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out505798190 tmp_test/tmp_test505798190.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/sequential_test.dart 209:16 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5074}\n{\"testID\":825,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5076}\n{\"suite\":{\"id\":826,\"platform\":\"vm\",\"path\":\"test/swizzle_test.dart\"},\"type\":\"suite\",\"time\":5077}\n{\"test\":{\"id\":827,\"name\":\"loading test/swizzle_test.dart\",\"suiteID\":826,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5077}\n{\"testID\":820,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5120}\n{\"group\":{\"id\":828,\"suiteID\":819,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5120}\n{\"group\":{\"id\":829,\"suiteID\":819,\"parentID\":828,\"name\":\"signal declaration order\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":97,\"column\":3,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"group\",\"time\":5120}\n{\"test\":{\"id\":830,\"name\":\"signal declaration order input, output, and internal signals are sorted\",\"suiteID\":819,\"groupIDs\":[828,829],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":106,\"column\":5,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"testStart\",\"time\":5120}\n{\"testID\":830,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5166}\n{\"test\":{\"id\":831,\"name\":\"signal declaration order input, output, and internal signals are sorted (different widths)\",\"suiteID\":819,\"groupIDs\":[828,829],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":122,\"column\":5,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"testStart\",\"time\":5166}\n{\"testID\":831,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5171}\n{\"test\":{\"id\":832,\"name\":\"submodule port connections input, output are sorted by declaration order\",\"suiteID\":819,\"groupIDs\":[828],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":140,\"column\":3,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"testStart\",\"time\":5171}\n{\"testID\":818,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5172}\n{\"group\":{\"id\":833,\"suiteID\":817,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":10,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5172}\n{\"group\":{\"id\":834,\"suiteID\":817,\"parentID\":833,\"name\":\"ssa_test_module\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":7,\"line\":331,\"column\":3,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"group\",\"time\":5172}\n{\"test\":{\"id\":835,\"name\":\"ssa_test_module ssa assigns_only\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5172}\n{\"testID\":832,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5175}\n{\"test\":{\"id\":836,\"name\":\"expressions in sub-module declaration\",\"suiteID\":819,\"groupIDs\":[828],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":157,\"column\":3,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"testStart\",\"time\":5176}\n{\"testID\":836,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5178}\n{\"test\":{\"id\":837,\"name\":\"no floating assignments\",\"suiteID\":819,\"groupIDs\":[828],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":166,\"column\":3,\"url\":\"file:///rohd/test/sv_gen_test.dart\"},\"type\":\"testStart\",\"time\":5178}\n{\"testID\":837,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5180}\n{\"suite\":{\"id\":838,\"platform\":\"vm\",\"path\":\"test/synth_builder_test.dart\"},\"type\":\"suite\",\"time\":5180}\n{\"test\":{\"id\":839,\"name\":\"loading test/synth_builder_test.dart\",\"suiteID\":838,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5181}\n{\"testID\":827,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5202}\n{\"group\":{\"id\":840,\"suiteID\":826,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":21,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5202}\n{\"group\":{\"id\":841,\"suiteID\":826,\"parentID\":840,\"name\":\"LogicValue\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":36,\"column\":3,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5202}\n{\"test\":{\"id\":842,\"name\":\"LogicValue simple swizzle\",\"suiteID\":826,\"groupIDs\":[840,841],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":37,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5202}\n{\"testID\":842,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5217}\n{\"test\":{\"id\":843,\"name\":\"LogicValue simple rswizzle\",\"suiteID\":826,\"groupIDs\":[840,841],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":43,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5217}\n{\"testID\":843,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5218}\n{\"group\":{\"id\":844,\"suiteID\":826,\"parentID\":840,\"name\":\"LogicValue of multi-bit\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":15,\"line\":50,\"column\":3,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5218}\n{\"test\":{\"id\":845,\"name\":\"LogicValue of multi-bit simple swizzle\",\"suiteID\":826,\"groupIDs\":[840,844],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":51,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5218}\n{\"testID\":845,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5219}\n{\"test\":{\"id\":846,\"name\":\"LogicValue of multi-bit simple rswizzle\",\"suiteID\":826,\"groupIDs\":[840,844],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":56,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5219}\n{\"testID\":846,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5219}\n{\"test\":{\"id\":847,\"name\":\"LogicValue of multi-bit 64-bit swizzle\",\"suiteID\":826,\"groupIDs\":[840,844],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":61,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5219}\n{\"testID\":847,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5225}\n{\"test\":{\"id\":848,\"name\":\"LogicValue of multi-bit >64-bit swizzle single concat\",\"suiteID\":826,\"groupIDs\":[840,844],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":70,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5225}\n{\"testID\":848,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5227}\n{\"test\":{\"id\":849,\"name\":\"LogicValue of multi-bit >64-bit swizzle\",\"suiteID\":826,\"groupIDs\":[840,844],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":76,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5227}\n{\"testID\":849,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5228}\n{\"group\":{\"id\":850,\"suiteID\":826,\"parentID\":844,\"name\":\"LogicValue of multi-bit variety of sizes\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":86,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5228}\n{\"test\":{\"id\":851,\"name\":\"LogicValue of multi-bit variety of sizes smaller\",\"suiteID\":826,\"groupIDs\":[840,844,850],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":87,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5228}\n{\"testID\":851,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5232}\n{\"test\":{\"id\":852,\"name\":\"LogicValue of multi-bit variety of sizes larger\",\"suiteID\":826,\"groupIDs\":[840,844,850],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":98,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5232}\n{\"testID\":835,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out3321673 tmp_test/tmp_test3321673.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5247}\n{\"testID\":835,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5253}\n{\"test\":{\"id\":853,\"name\":\"ssa_test_module ssa if\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5254}\n{\"testID\":839,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5271}\n{\"group\":{\"id\":854,\"suiteID\":838,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5271}\n{\"group\":{\"id\":855,\"suiteID\":838,\"parentID\":854,\"name\":\"synth builder\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":55,\"column\":3,\"url\":\"file:///rohd/test/synth_builder_test.dart\"},\"type\":\"group\",\"time\":5271}\n{\"test\":{\"id\":856,\"name\":\"synth builder should throw exception if module is not built\",\"suiteID\":838,\"groupIDs\":[854,855],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":56,\"column\":5,\"url\":\"file:///rohd/test/synth_builder_test.dart\"},\"type\":\"testStart\",\"time\":5271}\n{\"testID\":409,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5277}\n{\"test\":{\"id\":857,\"name\":\"benchmark byte enable\",\"suiteID\":4,\"groupIDs\":[12,13],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":31,\"column\":5,\"url\":\"file:///rohd/test/benchmark_test.dart\"},\"type\":\"testStart\",\"time\":5278}\n{\"testID\":853,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out154799288 tmp_test/tmp_test154799288.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5278}\n{\"testID\":853,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5283}\n{\"test\":{\"id\":858,\"name\":\"ssa_test_module ssa case\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5283}\n{\"testID\":858,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out798661314 tmp_test/tmp_test798661314.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5303}\n{\"testID\":856,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5305}\n{\"testID\":858,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5305}\n{\"test\":{\"id\":859,\"name\":\"synth builder should able to create submodule in system verilog rtl\",\"suiteID\":838,\"groupIDs\":[854,855],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":63,\"column\":5,\"url\":\"file:///rohd/test/synth_builder_test.dart\"},\"type\":\"testStart\",\"time\":5305}\n{\"test\":{\"id\":860,\"name\":\"ssa_test_module ssa chain\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5306}\n{\"testID\":852,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5316}\n{\"group\":{\"id\":861,\"suiteID\":826,\"parentID\":844,\"name\":\"LogicValue of multi-bit filled\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":5,\"line\":110,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5322}\n{\"test\":{\"id\":862,\"name\":\"LogicValue of multi-bit filled simple swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,861],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":111,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5322}\n{\"testID\":860,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out601597114 tmp_test/tmp_test601597114.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5323}\n{\"testID\":862,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5323}\n{\"test\":{\"id\":863,\"name\":\"LogicValue of multi-bit filled big swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,861],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":117,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5324}\n{\"testID\":863,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5324}\n{\"test\":{\"id\":864,\"name\":\"LogicValue of multi-bit filled 0-width both swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,861],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":121,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5324}\n{\"testID\":864,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5325}\n{\"test\":{\"id\":865,\"name\":\"LogicValue of multi-bit filled 0-width lhs swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,861],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":125,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5325}\n{\"testID\":860,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5325}\n{\"test\":{\"id\":866,\"name\":\"ssa_test_module ssa mix\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5325}\n{\"testID\":865,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5325}\n{\"test\":{\"id\":867,\"name\":\"LogicValue of multi-bit filled 0-width rhs swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,861],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":129,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5325}\n{\"testID\":867,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5325}\n{\"group\":{\"id\":868,\"suiteID\":826,\"parentID\":844,\"name\":\"LogicValue of multi-bit non-filled\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":3,\"line\":135,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5326}\n{\"test\":{\"id\":869,\"name\":\"LogicValue of multi-bit non-filled 0-width both swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,868],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":136,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5326}\n{\"testID\":859,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5326}\n{\"suite\":{\"id\":870,\"platform\":\"vm\",\"path\":\"test/timestamper_test.dart\"},\"type\":\"suite\",\"time\":5326}\n{\"test\":{\"id\":871,\"name\":\"loading test/timestamper_test.dart\",\"suiteID\":870,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5326}\n{\"testID\":869,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5327}\n{\"test\":{\"id\":872,\"name\":\"LogicValue of multi-bit non-filled 0-width lhs swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,868],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":140,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5327}\n{\"testID\":872,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5328}\n{\"test\":{\"id\":873,\"name\":\"LogicValue of multi-bit non-filled 0-width rhs swizzle\",\"suiteID\":826,\"groupIDs\":[840,844,868],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":144,\"column\":7,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5328}\n{\"testID\":873,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5328}\n{\"group\":{\"id\":874,\"suiteID\":826,\"parentID\":840,\"name\":\"Logic\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":2,\"line\":151,\"column\":3,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"group\",\"time\":5328}\n{\"test\":{\"id\":875,\"name\":\"Logic simple swizzle\",\"suiteID\":826,\"groupIDs\":[840,874],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":152,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5328}\n{\"testID\":866,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out871834025 tmp_test/tmp_test871834025.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5345}\n{\"testID\":866,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5347}\n{\"test\":{\"id\":876,\"name\":\"ssa_test_module ssa nested\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5347}\n{\"testID\":875,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out527184907 tmp_test/tmp_test527184907.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/swizzle_test.dart 160:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5379}\n{\"testID\":875,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5380}\n{\"test\":{\"id\":877,\"name\":\"Logic const 0-width swizzle\",\"suiteID\":826,\"groupIDs\":[840,874],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":164,\"column\":5,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5381}\n{\"testID\":877,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out1040416591 tmp_test/tmp_test1040416591.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/swizzle_test.dart 172:36 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5389}\n{\"testID\":877,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5390}\n{\"test\":{\"id\":878,\"name\":\"zero-width swizzle\",\"suiteID\":826,\"groupIDs\":[840],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":177,\"column\":3,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5390}\n{\"testID\":878,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5391}\n{\"test\":{\"id\":879,\"name\":\"zero-width swizzle module\",\"suiteID\":826,\"groupIDs\":[840],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":181,\"column\":3,\"url\":\"file:///rohd/test/swizzle_test.dart\"},\"type\":\"testStart\",\"time\":5391}\n{\"testID\":879,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out1055643870 tmp_test/tmp_test1055643870.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/swizzle_test.dart 189:34 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5404}\n{\"testID\":879,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5404}\n{\"suite\":{\"id\":880,\"platform\":\"vm\",\"path\":\"test/trace_bounce_test.dart\"},\"type\":\"suite\",\"time\":5405}\n{\"test\":{\"id\":881,\"name\":\"loading test/trace_bounce_test.dart\",\"suiteID\":880,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5405}\n{\"testID\":871,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5434}\n{\"group\":{\"id\":882,\"suiteID\":870,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5434}\n{\"group\":{\"id\":883,\"suiteID\":870,\"parentID\":882,\"name\":\"Timestamper\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":14,\"column\":3,\"url\":\"file:///rohd/test/timestamper_test.dart\"},\"type\":\"group\",\"time\":5434}\n{\"test\":{\"id\":884,\"name\":\"Timestamper format must be correct\",\"suiteID\":870,\"groupIDs\":[882,883],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":15,\"column\":5,\"url\":\"file:///rohd/test/timestamper_test.dart\"},\"type\":\"testStart\",\"time\":5434}\n{\"testID\":884,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5446}\n{\"suite\":{\"id\":885,\"platform\":\"vm\",\"path\":\"test/trace_test.dart\"},\"type\":\"suite\",\"time\":5446}\n{\"test\":{\"id\":886,\"name\":\"loading test/trace_test.dart\",\"suiteID\":885,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5446}\n{\"testID\":876,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out632588072 tmp_test/tmp_test632588072.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5452}\n{\"testID\":876,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5459}\n{\"test\":{\"id\":887,\"name\":\"ssa_test_module ssa multidep\",\"suiteID\":817,\"groupIDs\":[833,834],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":344,\"column\":7,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5460}\n{\"testID\":881,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5494}\n{\"group\":{\"id\":888,\"suiteID\":880,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5494}\n{\"test\":{\"id\":889,\"name\":\"out depends on out\",\"suiteID\":880,\"groupIDs\":[888],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":44,\"column\":3,\"url\":\"file:///rohd/test/trace_bounce_test.dart\"},\"type\":\"testStart\",\"time\":5494}\n{\"testID\":886,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5541}\n{\"group\":{\"id\":890,\"suiteID\":885,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":4,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5541}\n{\"test\":{\"id\":891,\"name\":\"flying output\",\"suiteID\":885,\"groupIDs\":[890],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":63,\"column\":3,\"url\":\"file:///rohd/test/trace_test.dart\"},\"type\":\"testStart\",\"time\":5542}\n{\"testID\":887,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out572785462 tmp_test/tmp_test572785462.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 352:20 main..\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5542}\n{\"testID\":887,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5552}\n{\"test\":{\"id\":892,\"name\":\"ssa seq of ifs\",\"suiteID\":817,\"groupIDs\":[833],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":357,\"column\":3,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5552}\n{\"testID\":889,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out924317576 tmp_test/tmp_test924317576.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/trace_bounce_test.dart 53:34 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5561}\n{\"testID\":889,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5564}\n{\"suite\":{\"id\":893,\"platform\":\"vm\",\"path\":\"test/translations_test.dart\"},\"type\":\"suite\",\"time\":5564}\n{\"test\":{\"id\":894,\"name\":\"loading test/translations_test.dart\",\"suiteID\":893,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5564}\n{\"testID\":891,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5571}\n{\"test\":{\"id\":895,\"name\":\"flying input\",\"suiteID\":885,\"groupIDs\":[890],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":70,\"column\":3,\"url\":\"file:///rohd/test/trace_test.dart\"},\"type\":\"testStart\",\"time\":5571}\n{\"testID\":895,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5573}\n{\"test\":{\"id\":896,\"name\":\"doubled input\",\"suiteID\":885,\"groupIDs\":[890],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":77,\"column\":3,\"url\":\"file:///rohd/test/trace_test.dart\"},\"type\":\"testStart\",\"time\":5573}\n{\"testID\":896,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5574}\n{\"test\":{\"id\":897,\"name\":\"doubled gapped input\",\"suiteID\":885,\"groupIDs\":[890],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":84,\"column\":3,\"url\":\"file:///rohd/test/trace_test.dart\"},\"type\":\"testStart\",\"time\":5575}\n{\"testID\":897,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5578}\n{\"suite\":{\"id\":898,\"platform\":\"vm\",\"path\":\"test/tree_test.dart\"},\"type\":\"suite\",\"time\":5578}\n{\"test\":{\"id\":899,\"name\":\"loading test/tree_test.dart\",\"suiteID\":898,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5578}\n{\"testID\":892,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out740288405 tmp_test/tmp_test740288405.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 384:16 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5609}\n{\"testID\":892,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5615}\n{\"test\":{\"id\":900,\"name\":\"ssa seq of cases\",\"suiteID\":817,\"groupIDs\":[833],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":387,\"column\":3,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5615}\n{\"testID\":900,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out97147317 tmp_test/tmp_test97147317.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\npackage:rohd/src/utilities/simcompare.dart 221:20 SimCompare.checkIverilogVector\\ntest/ssa_test.dart 414:16 main.\\n\",\"isFailure\":false,\"type\":\"error\",\"time\":5659}\n{\"testID\":894,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5662}\n{\"group\":{\"id\":901,\"suiteID\":893,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5663}\n{\"group\":{\"id\":902,\"suiteID\":893,\"parentID\":901,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":109,\"column\":3,\"url\":\"file:///rohd/test/translations_test.dart\"},\"type\":\"group\",\"time\":5663}\n{\"test\":{\"id\":903,\"name\":\"simcompare translation\",\"suiteID\":893,\"groupIDs\":[901,902],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":110,\"column\":5,\"url\":\"file:///rohd/test/translations_test.dart\"},\"type\":\"testStart\",\"time\":5663}\n{\"testID\":900,\"result\":\"error\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5665}\n{\"test\":{\"id\":904,\"name\":\"ssa uninitialized\",\"suiteID\":817,\"groupIDs\":[833],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":417,\"column\":3,\"url\":\"file:///rohd/test/ssa_test.dart\"},\"type\":\"testStart\",\"time\":5665}\n{\"testID\":899,\"result\":\"success\",\"skipped\":false,\"hidden\":true,\"type\":\"testDone\",\"time\":5672}\n{\"group\":{\"id\":905,\"suiteID\":898,\"parentID\":null,\"name\":\"\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":null,\"column\":null,\"url\":null},\"type\":\"group\",\"time\":5672}\n{\"group\":{\"id\":906,\"suiteID\":898,\"parentID\":905,\"name\":\"simcompare\",\"metadata\":{\"skip\":false,\"skipReason\":null},\"testCount\":1,\"line\":50,\"column\":3,\"url\":\"file:///rohd/test/tree_test.dart\"},\"type\":\"group\",\"time\":5672}\n{\"test\":{\"id\":907,\"name\":\"simcompare tree\",\"suiteID\":898,\"groupIDs\":[905,906],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":51,\"column\":5,\"url\":\"file:///rohd/test/tree_test.dart\"},\"type\":\"testStart\",\"time\":5672}\n{\"testID\":904,\"result\":\"success\",\"skipped\":false,\"hidden\":false,\"type\":\"testDone\",\"time\":5673}\n{\"suite\":{\"id\":908,\"platform\":\"vm\",\"path\":\"test/uniquifier_test.dart\"},\"type\":\"suite\",\"time\":5674}\n{\"test\":{\"id\":909,\"name\":\"loading test/uniquifier_test.dart\",\"suiteID\":908,\"groupIDs\":[],\"metadata\":{\"skip\":false,\"skipReason\":null},\"line\":null,\"column\":null,\"url\":null},\"type\":\"testStart\",\"time\":5674}\n{\"testID\":907,\"error\":\"ProcessException: No such file or directory\\n Command: iverilog -g2012 -o tmp_test/tmp_out417764409 tmp_test/tmp_test417764409.sv\",\"stackTrace\":\"dart:io Process.runSync\\npackage:rohd/src/utilities/simcompare.dart 313:35 SimCompare.iverilogVector\\ntest/tree_test.dart 65:36 main.