minimum viable python
Sets up a new development environment for a Mac or Linux (i.e., UNIX) box.
Table of Contents
-
# asdf (my vote) asdf plugin add cookiecutter asdf install cookiecutter latest asdf set -u cookiecutter latest # pipx pipx install cookiecutter # python user directory python -m pip install --user cookiecutter
-
Use cookiecutter to create a new project
# interactive cookiecutter gh:pythoninthegrass/mvp # non-interactive cookiecutter gh:pythoninthegrass/mvp # local debugging cd /tmp cookiecutter ~/git/mvp --no-input -f
Devbox takes care of setting up a dev environment automatically.
Under the hood it uses Nix Package Manager.
# install base dependencies
make install
# install devbox
task install-devbox
# enter dev environment w/deps
devbox shell
# run repl
python
# exit dev environment
exit
# run tests
devbox run test
λ task
task: [default] task --list
task: Available tasks for this project:
* default: Default task
* format: Run formatters
* install: Install project dependencies
* install-devbox: Install devbox
* lint: Run linters
* pre-commit: Run pre-commit hooks
* pyclean: Remove .pyc and __pycache__
* test: Run tests
* docker:build: Build the docker image
* docker:down: Stop and remove containers, networks, and volumes with docker compose
* docker:exec: Shell into a running container
* docker:login: Login to the container registry
* docker:logs: Follow the logs of a running container
* docker:net: Create docker network
* docker:prune: Prune docker
* docker:push: Push the docker image to the registry
* docker:stop: Stop the project with docker compose
* docker:up: Start the project with docker compose
* docker:vol: Create docker volume
* orbstack:create: Create an orbstack VM (aliases: orb:create)
* orbstack:delete: Delete an orbstack VM (aliases: orb:delete)
* orbstack:exec: SSH into an orbstack VM (aliases: orb:exec)
* orbstack:list: List orbstack VMs (aliases: orb:list)
* orbstack:start: Start an orbstack VM (aliases: orb:start)
* orbstack:stop: Stop an orbstack VM (aliases: orb:stop)
* orbstack:update: Update orbstack app (aliases: orb:update)
* redis:start: Start Redis server
* redis:stop: Stop Redis server
* uv:export-reqs: Export requirements.txt
* uv:install: Install project dependencies
* uv:install-uv: Install uv
* uv:lock: Update the project's lockfile.
* uv:sync: Sync dependencies with lockfile
* uv:update-deps: Update dependencies
* uv:venv: Create a virtual environment
minikube start --memory=2048 --cpus=2 --kubernetes-version=v1.28.3 -p minikube
git clone https://github.com/tilt-dev/tilt-example-python
cd tilt-example-python/3-recommended
tilt up
minikube stop
minikube delete
rm -rf tilt-example-python
- Open Issues
- QA Ansible playbook
- Test
- macOS
- Ubuntu
- Test
- Write boilerplate pytest tests
- CI/CD