NDA...
- Create env file:
cp envs/.env.example envs/.env
- If you use
pyenv
, create and activate environment. You can read this article to get familiar with pyenv. Or you can just omit this step, and poetry will install venv for you.
pyenv install 3.11
pyenv virtualenv 3.11 my_awesome_app
pyenv local my_awesome_app
- If you don't have
Poetry
installed run:
make poetry-download
- Initialize poetry and install
pre-commit
hooks:
make install
make pre-commit-install
- Run formatters, and linters. Make sure there is no errors.
make format lint
- Run supporting services
docker compose --profile infra up -d
- Run the API
make api
- Run the task worker
make worker
You can open:
- API Documentation at http://localhost:8000/docs
- Minio at http://localhost:9001 (user, password)
- RabbitMQ at http://localhost:15672/ (guest, guest)
To stop all services run:
docker compose --profile dev --profile test down
- Create env file:
cp envs/.env.docker.example envs/.env.docker
- Build an image:
docker compose --profile dev build
- Run the app:
docker compose --profile dev up -d
- Run formatters and linters. Make sure there is no errors.
docker compose exec web make format lint
You can open:
- API Documentation at http://localhost:8000/docs
- Minio at http://localhost:9001 (user, password)
- RabbitMQ at http://localhost:15672/ (guest, guest)
To stop all services run:
docker compose --profile dev --profile test down
Run supporting services for testing:
docker compose --profile test-infra up -d
Run tests:
make test
Stop all services:
docker compose --profile test-infra down
docker compose --profile test build
docker compose run test-runner
As simple as that
Create migration:
alembic revision --autogenerate -m "Message"
Apply migrations:
alembic upgrade head
Revert last migration:
alembic downgrade -1
Makefile
contains a lot of functions for
faster development.
1. Download and remove Poetry
To download and install Poetry run:
make poetry-download
To uninstall
make poetry-remove
2. Install all dependencies and pre-commit hooks
Install requirements:
make install
Pre-commit hooks could be installed after git init
via
make pre-commit-install
3. Codestyle
Automatic formatting uses ruff
.
make codestyle
# or use synonym
make format
Codestyle checks only, without rewriting files:
make check-codestyle
Update all dev libraries to the latest version using one comand
make update-dev-deps
4. Code security
make check-security
This command identifies security issues with Safety
and Bandit
.
make check-security
To validate pyproject.toml
use
make check-poetry
5. Linting and type checks
Run static linting with pylint
and mypy
:
make static-lint
6. Tests with coverage
Run pytest
make test
7. All linters
Of course there is a command to rule run all linters in one:
make lint
the same as:
make test && make check-codestyle && make static-lint && make check-safety
8. Docker
make docker-build
which is equivalent to:
make docker-build VERSION=latest
Remove docker image with
make docker-remove
More information about docker.
9. Cleanup
Delete pycache files
make pycache-remove
Remove package build
make build-remove
Delete .DS_STORE files
make dsstore-remove
Remove .mypycache
make mypycache-remove
Or to remove all above run:
make cleanup
This project was generated with python-package-template