Zum Hauptinhalt springen
ai-slop/python-chained-dict-getmanuelle Behebung

Verkettetes dict.get.

Ein `.get(key, {})`, dessen leeres Dict als Default direkt in ein weiteres `.get(...)` fließt. Fehlende Daten auf jeder Ebene werden still zu einem leeren Wert.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

python-chained-dict-get.py
✗ Beanstandet
def shipping_city(payload):
    city = payload.get("order", {}).get("shipping", {}).get("city", "")
    return city.title()
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet eine Zeile mit `.get(..., {})`, auf das direkt ein weiteres `.get(` folgt.

python-chained-dict-get.py
✓ Sauber
@dataclass
class Order:
    shipping_city: str

    @classmethod
    def parse(cls, payload):
        shipping = payload["order"]["shipping"]
        return cls(shipping_city=shipping["city"])
Was sich geändert hat

Normalisiere die Eingabe an der Grenze in ein typisiertes Objekt (eine Dataclass oder ein pydantic-Modell) oder teile den Lookup in explizite Schritte auf, die den fehlenden Fall behandeln.

Agenten greifen zu Fallbacks mit leerem Dict, um einen `KeyError` bei verschachtelten Payloads zu vermeiden, die sie nie gesehen haben. Jede Ebene versteckt eine weitere Schema-Annahme, und die Kette wird brüchiger, je weiter sich das Schema entwickelt.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/python-chained-dict-get

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet eine Zeile mit `.get(..., {})`, auf das direkt ein weiteres `.get(` folgt.

Legitimer Code, der NICHT beanstandet wird

Ein einzelnes `.get(key, default)`, Ketten, deren Zwischen-Default kein leeres Dict-Literal ist, und Lookups, die auf getrennte Anweisungen verteilt sind, werden nicht beanstandet.

Belege

Ausgeliefert in aislop v0.9.4 als eine von vier Python-Geschwätzigkeitsregeln, abgeleitet aus SlopCodeBench (arXiv 2603.24755).