24 lines
757 B
Markdown
24 lines
757 B
Markdown
---
|
|
paths:
|
|
- "**/*.py"
|
|
---
|
|
|
|
# Use `msgspec.Struct`, not `@dataclass`
|
|
|
|
Define data containers as `msgspec.Struct`. Do not add new
|
|
`dataclasses.dataclass` (or `attrs`) — they weaken strict type checking and
|
|
don't translate cleanly for multi-language support (e.g. the planned Rust migration).
|
|
|
|
```python
|
|
import msgspec
|
|
|
|
class LoadSnapshot(msgspec.Struct): # prefer frozen= and omit_defaults=; kw_only= as needed
|
|
dp_rank: int = 0
|
|
tokens: list[int] = [] # mutable defaults are safe
|
|
```
|
|
|
|
- Methods / `@classmethod` constructors go on the `Struct`; see
|
|
`python/sglang/srt/managers/load_snapshot.py`.
|
|
- New code only. Existing `@dataclass` is grandfathered — migrate opportunistically
|
|
while editing the file, not in drive-by sweeps.
|