45 lines
1.9 KiB
Markdown
45 lines
1.9 KiB
Markdown
---
|
|
name: python-development
|
|
description: Python ecosystem defaults and workflows using uv for packaging and ruff for linting/formatting
|
|
permalink: opencode-config/skills/python-development/skill
|
|
---
|
|
|
|
# Python Development
|
|
|
|
Load this skill when a repo or lane involves Python code (presence of `pyproject.toml`, `setup.py`, `requirements*.txt`, or `.py` files as primary source).
|
|
|
|
## Defaults
|
|
|
|
| Concern | Tool | Notes |
|
|
| --- | --- | --- |
|
|
| Package/venv management | `uv` | Replaces pip, pip-tools, and virtualenv |
|
|
| Linting + formatting | `ruff` | Replaces flake8, isort, black |
|
|
| Test runner | `pytest` | Unless repo already uses another runner |
|
|
| Type checking | `pyright` or `mypy` | Use whichever the repo already configures |
|
|
|
|
## Core Workflow
|
|
|
|
1. **Bootstrap** — `uv sync` (or `uv pip install -e ".[dev]"`) to create/refresh the venv.
|
|
2. **Lint** — `ruff check .` then `ruff format --check .` before committing.
|
|
3. **Test** — `pytest` with the repo's existing config. Follow TDD default policy.
|
|
4. **Add dependencies** — `uv add <pkg>` (runtime) or `uv add --dev <pkg>` (dev). Do not edit `pyproject.toml` dependency arrays by hand.
|
|
5. **Lock** — `uv lock` after dependency changes.
|
|
|
|
## Conventions
|
|
|
|
- Prefer `pyproject.toml` over `setup.py`/`setup.cfg` for new projects.
|
|
- Keep `ruff` config in `pyproject.toml` under `[tool.ruff]`.
|
|
- Use `uv run <cmd>` to execute tools inside the managed venv without activating it.
|
|
- Pin Python version via `.python-version` or `pyproject.toml` `requires-python`.
|
|
|
|
## Docker Integration
|
|
|
|
When the repo runs Python inside Docker, install dependencies with `uv pip install` inside the container. Mount a named volume for the uv cache to speed up rebuilds.
|
|
|
|
## Red Flags
|
|
|
|
- Using `pip install` directly instead of `uv`.
|
|
- Running `black` or `isort` when `ruff` is configured.
|
|
- Missing `uv.lock` after dependency changes.
|
|
- Editing dependency arrays in `pyproject.toml` by hand instead of using `uv add`.
|