mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-14 04:09:09 +00:00
refactor(lint): document the frozen pydantic model rule as LIT015
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
f46d8c5c9b
commit
eecf065453
3 changed files with 6 additions and 1 deletions
|
|
@ -97,6 +97,7 @@ Follow these coding conventions for new/updated code (a three-line fix in a lega
|
|||
- Annotate every variable with `: Final` (LIT010). Unpacking and walrus targets cannot carry the annotation, so they are implicitly final. Don't rebind them. Never rebind or mutate function parameters (LIT011); `self`/`cls` attribute stores are the exception. If rebinding or in-place mutation is truly unavoidable, suppress with `# rebind-ok: <reason>`
|
||||
- Qualify every TypedDict field with `ReadOnly[...]` (LIT012), which nests freely with `Required` / `NotRequired` / `Annotated` in any order. If making the key writable is truly unavoidable, suppress with `# writable-ok: <reason>`
|
||||
- Comprehensions take at most one `for` clause and one `if` clause (LIT014); split stacked clauses into a helper generator, a named intermediate, or a plain loop. Suppress with `# comprehension-ok: <reason>` only when unavoidable
|
||||
- Every pydantic model must be frozen (LIT015), set via `model_config = ConfigDict(frozen=True)`, a dict-literal `model_config`, an inner `class Config`, or the class keywords. Subclasses inherit it unless they override it. If making the model mutable is truly unavoidable, suppress with `# frozen-ok: <reason>` on the `class` line
|
||||
- Use dependency injection
|
||||
- Fully typed; no `Any` or coarse types like `dict[str, Any]` or just `dict`. Every function parameter must be strongly typed
|
||||
- Use tagged unions + match
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@ LIT012 (TypedDict field without a `ReadOnly[...]` qualifier; suppress with
|
|||
`# writable-ok: <reason>`), and LIT014 (comprehension with more than one `for`
|
||||
or `if` clause; suppress with `# comprehension-ok: <reason>` on a spanned
|
||||
line, which belongs to the innermost violating comprehension spanning it and
|
||||
to any single-line violating comprehension on that line) carry limits at
|
||||
to any single-line violating comprehension on that line), and LIT015
|
||||
(pydantic model not frozen; suppress with `# frozen-ok: <reason>`) carry limits at
|
||||
or above their current count to ratchet down; LIT005 (`*-ok` suppression
|
||||
without a reason) is frozen at limit 0
|
||||
so any net-new reasonless suppression trips the gate; LIT013 (`*-ok` suppression
|
||||
|
|
|
|||
|
|
@ -37,5 +37,8 @@
|
|||
},
|
||||
"LIT014": {
|
||||
"limit": 369
|
||||
},
|
||||
"LIT015": {
|
||||
"limit": 230
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue