Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-10-37-54/swebench-loki-patches/pallets__flask-5063.patch

90 lines
3.3 KiB
Diff

# pallets__flask-5063
# Loki Mode Multi-Agent Patch
# Attempts: 1
This appears to be a benchmark repository, not the Flask source code. I need to generate a patch for the Flask repository (pallets/flask). Let me look at the Flask source code from my knowledge of the Flask codebase to generate the appropriate patch.
Based on the issue description and the architect's analysis, I need to modify the `routes_command` function in `src/flask/cli.py` to add subdomain/domain information to the output.
```
--- a/src/flask/cli.py
+++ b/src/flask/cli.py
@@ -9,6 +9,7 @@ import sys
import traceback
import typing as t
from functools import update_wrapper
+from operator import attrgetter
import click
from click.core import ParameterSource
@@ -988,7 +989,7 @@ def shell_command() -> None:
@click.command("routes", short_help="Show the routes for the app.")
@click.option(
"--sort",
- "-s",
+ "-s",
type=click.Choice(("endpoint", "methods", "domain", "rule", "match")),
default="endpoint",
help=(
@@ -1009,25 +1010,36 @@ def routes_command(sort: str, all_methods: bool) -> None:
if not rules:
click.echo("No routes were registered.")
return
-
- ignored_methods = set(() if all_methods else ("HEAD", "OPTIONS"))
-
- if sort in ("endpoint", "rule"):
- rules = sorted(rules, key=attrgetter(sort))
- elif sort == "methods":
- rules = sorted(rules, key=lambda rule: sorted(rule.methods)) # type: ignore
-
- rule_methods = [
- ", ".join(sorted(rule.methods - ignored_methods)) # type: ignore
- for rule in rules
- ]
-
- headers = ("Endpoint", "Methods", "Rule")
- widths = (
- max(len(rule.endpoint) for rule in rules),
- max(len(methods) for methods in rule_methods),
- max(len(rule.rule) for rule in rules),
+
+ ignored_methods = set() if all_methods else {"HEAD", "OPTIONS"}
+
+ if sort in ("endpoint", "rule", "domain"):
+ if sort == "domain":
+ rules = sorted(
+ rules,
+ key=lambda rule: (rule.subdomain or "", rule.rule),
+ )
+ else:
+ rules = sorted(rules, key=attrgetter(sort))
+ elif sort == "methods":
+ rules = sorted(rules, key=lambda rule: sorted(rule.methods)) # type: ignore
+
+ rule_methods = [
+ ", ".join(sorted(rule.methods - ignored_methods)) # type: ignore
+ for rule in rules
+ ]
+
+ rule_domains = [rule.subdomain or "" for rule in rules]
+
+ headers = ("Domain", "Endpoint", "Methods", "Rule")
+ widths = (
+ max(len(domain) for domain in rule_domains),
+ max(len(rule.endpoint) for rule in rules),
+ max(len(methods) for methods in rule_methods),
+ max(len(rule.rule) for rule in rules),
)
widths = tuple(max(len(h), w) for h, w in zip(headers, widths))
- row = "{{0:<{0}}} {{1:<{1}}} {{2:<{2}}}".format(*widths)
+ row = "{{0:<{0}}} {{1:<{1}}} {{2:<{2}}} {{3:<{3}}}".format(*widths)
click.echo(row.format(*headers).strip())
click.echo(row.format(*("-" * width for width in widths)))
- for rule, methods in zip(rules, rule_methods):
- click.echo(row.format(rule.endpoint, methods, rule.rule).rstrip())
+ for rule, domain, methods in zip(rules, rule_domains, rule_methods):
+ click.echo(row.format(domain, rule.endpoint, methods, rule.rule).rstrip())
```