python-rye
python-rye copied to clipboard
This repository contains configurations to set up a Python development environment using VSCode's Dev Container feature. The environment includes Rye, uv, and Ruff.
VSCode Dev Container: Python Development with Rye, uv, and Ruff
Overview
This repository contains configurations to set up a Python development environment using VSCode's Dev Container feature. The environment includes Rye, uv, and Ruff.
Contents
The following are the features.
Branches
Dev Container
devcontainer.json- settings
- formatOnSave by Ruff
- features
- pre-commit
- extentions
- settings
Dockerfile- Rye
rye config --set-bool behavior.global-python=truerye config --set-bool behavior.use-uv=true
- Only Dev dependencies
pre-commitpytestruff
- Rye
GitHub Actions
docker.yml- Workflow to check if you can build with Docker
test.yml- Workflow to check if all the described tests can be passed with pytest
ruff.yml- Workflow to check if you can go through Formatter and Linter with Ruff
Ruff
Ruff can be used to replace Flake8, Black, isort, pydocstyle, pyupgrade, autoflake, etc., and yet run tens to hundreds of times faster than the individual tools.
To change the configuration, it is necessary to rewrite ruff.toml, and it is recommended to set it to ignore conflicts such as the following:
ignore = [
"COM812", "COM819",
"D100", "D203", "D213", "D300",
"E111", "E114", "E117",
"ISC001", "ISC002",
"Q000", "Q001", "Q002", "Q003",
"W191",
]
pre-commit
The .pre-commit-config.yaml file can contain scripts to be executed before commit.
# Python Formatter
ruff format .
# Python Linter
ruff check . --fix
# Docker Linter
hodolint Dockerfile
Install
Only sync based on the production lockfile (requirements.lock) instead of the development lockfile (requirements-dev.lock).
# Install also include develop dependencies
rye sync
# If you do not want dev dependencies to be installed
rye sync --no-dev
Appendix
The structure of this repository
.
├── .devcontainer
│ ├── devcontainer.json
│ └── Dockerfile
├── Dockerfile
├── .github
│ └── workflows
│ ├── docker.yml
│ ├── ruff.yml
│ └── pytest.yml
├── .gitignore
├── LICENSE
├── .pre-commit-config.yaml
├── pyproject.toml
├── .python-version
├── README.md
├── requirements-dev.lock
├── requirements.lock
├── ruff.toml
└── .vscode
└── settings.json