python-best-practices
PassPython coding best practices. Use when writing or reviewing Python code. Covers type hints, error handling, and common patterns.
(0)
7
1
3
Install Skill
Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.
Install globally (user-level):
npx skillhub install Taoidle/planning-with-files/python-best-practicesInstall in current project:
npx skillhub install Taoidle/planning-with-files/python-best-practices --projectSuggested path: ~/.claude/skills/python-best-practices/
SKILL.md Content
---
name: python-best-practices
description: Python coding best practices. Use when writing or reviewing Python code. Covers type hints, error handling, and common patterns.
license: MIT
metadata:
author: plan-cascade
version: "1.0.0"
---
# Python Best Practices
## Code Style
| Rule | Guideline |
|------|-----------|
| Formatter | `ruff format` or `black` |
| Linter | `ruff check` with strict rules |
| Type hints | Always for public APIs |
| Docstrings | Google or NumPy style |
## Type Hints
```python
def process(items: list[str], max_count: int = 10) -> dict[str, int]: ...
def find_user(user_id: int) -> User | None: ...
```
## Error Handling
| Rule | Guideline |
|------|-----------|
| Specific exceptions | Never bare `except:` |
| Context managers | Use `with` for resources |
| Early return | Validate inputs, fail fast |
```python
# Good
try:
result = process(data)
except ValidationError as e:
logger.warning(f"Validation failed: {e}")
return default
```
## Project Structure
```
src/package_name/
├── __init__.py
├── core/
└── py.typed
tests/
├── conftest.py
└── test_*.py
pyproject.toml
```
## Common Patterns
| Pattern | Usage |
|---------|-------|
| `@dataclass` | Data containers |
| `@property` | Computed attributes |
| Generators | Memory-efficient iteration |
| `functools.cache` | Memoization |
## Anti-Patterns
| Avoid | Use Instead |
|-------|-------------|
| Mutable default args | `None` default, create inside |
| `import *` | Explicit imports |
| Global state | Dependency injection |
```python
# Bad: def add(item, items=[]): ...
# Good:
def add(item, items=None):
items = items or []
items.append(item)
return items
```
## Tools
| Tool | Purpose |
|------|---------|
| `pytest` | Testing |
| `ruff` | Linting + formatting |
| `mypy` | Type checking |
| `uv` | Dependencies |