← ClaudeAtlas

language-pythonlisted

Python idioms — PEP 8, type hints, dataclasses, context managers, generators, asyncio, and testing. Auto-load when working with .py files, pyproject.toml, requirements.txt, or when the user mentions Python, pytest, asyncio, dataclass, type hints, or virtualenv.
lugassawan/swe-workbench · ★ 2 · Web & Frontend · score 68
Install: claude install-skill lugassawan/swe-workbench
# Python ## Type hints - Annotate all function signatures; `Any` is a smell unless at a genuine boundary. - Use `dataclass` for data containers with behavior; `TypedDict` for dict-shaped data at boundaries. - Prefer `Protocol` over ABC when duck typing suffices — no inheritance required. - `from __future__ import annotations` for forward refs in 3.9 and earlier. ```python from dataclasses import dataclass, field @dataclass class Order: id: str items: list[str] = field(default_factory=list) total: float = 0.0 ``` ## Errors and exceptions - Use exceptions for exceptional paths, not flow control. - Raise specific subclasses; catch the narrowest class you can handle. - `except Exception:` is almost always wrong — at minimum log and re-raise. - `contextlib.suppress(SomeError)` for intentional ignore; bare `except:` never. ```python try: result = load(path) except FileNotFoundError: raise MissingConfigError(path) from None ``` ## Context managers - `with` for any resource with a cleanup obligation: files, locks, DB connections. - `@contextlib.contextmanager` for ad-hoc managers without a full class. - Never hold a resource longer than the `with` block. ```python @contextlib.contextmanager def managed_resource(): r = acquire() try: yield r finally: release(r) ``` ## Generators and iterators - Prefer generators over materializing full lists when you only iterate once. - `yield from` to delegate to sub-generators. - Reach for `it