Spaces:
Runtime error
Runtime error
| # reworkd_platform | |
| This project was generated using fastapi_template. | |
| ## Poetry | |
| This project uses poetry. It's a modern dependency management | |
| tool. | |
| To run the project use this set of commands: | |
| ```bash | |
| poetry install | |
| poetry run python -m reworkd_platform | |
| ``` | |
| This will start the server on the configured host. | |
| You can find swagger documentation at `/api/docs`. | |
| You can read more about poetry here: https://python-poetry.org/ | |
| ## Docker | |
| You can start the project with docker using this command: | |
| ```bash | |
| docker-compose -f deploy/docker-compose.yml --project-directory . up --build | |
| ``` | |
| If you want to develop in docker with autoreload add `-f deploy/docker-compose.dev.yml` to your docker command. | |
| Like this: | |
| ```bash | |
| docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . up --build | |
| ``` | |
| This command exposes the web application on port 8000, mounts current directory and enables autoreload. | |
| But you have to rebuild image every time you modify `poetry.lock` or `pyproject.toml` with this command: | |
| ```bash | |
| docker-compose -f deploy/docker-compose.yml --project-directory . build | |
| ``` | |
| ## Project structure | |
| ```bash | |
| $ tree "reworkd_platform" | |
| reworkd_platform | |
| βββ conftest.py # Fixtures for all tests. | |
| βββ db # module contains db configurations | |
| βΒ Β βββ dao # Data Access Objects. Contains different classes to interact with database. | |
| βΒ Β βββ models # Package contains different models for ORMs. | |
| βββ __main__.py # Startup script. Starts uvicorn. | |
| βββ services # Package for different external services such as rabbit or redis etc. | |
| βββ settings.py # Main configuration settings for project. | |
| βββ static # Static content. | |
| βββ tests # Tests for project. | |
| βββ web # Package contains web server. Handlers, startup config. | |
| βββ api # Package with all handlers. | |
| βΒ Β βββ router.py # Main router. | |
| βββ application.py # FastAPI application configuration. | |
| βββ lifetime.py # Contains actions to perform on startup and shutdown. | |
| ``` | |
| ## Configuration | |
| This application can be configured with environment variables. | |
| You can create `.env` file in the root directory and place all | |
| environment variables here. | |
| All environment variables should start with "REWORKD_PLATFORM_" prefix. | |
| For example if you see in your "reworkd_platform/settings.py" a variable named like | |
| `random_parameter`, you should provide the "REWORKD_PLATFORM_RANDOM_PARAMETER" | |
| variable to configure the value. This behaviour can be changed by overriding `env_prefix` property | |
| in `reworkd_platform.settings.Settings.Config`. | |
| An example of .env file: | |
| ```bash | |
| REWORKD_PLATFORM_RELOAD="True" | |
| REWORKD_PLATFORM_PORT="8000" | |
| REWORKD_PLATFORM_ENVIRONMENT="development" | |
| ``` | |
| You can read more about BaseSettings class here: https://pydantic-docs.helpmanual.io/usage/settings/ | |
| ## Pre-commit | |
| To install pre-commit simply run inside the shell: | |
| ```bash | |
| pre-commit install | |
| ``` | |
| pre-commit is very useful to check your code before publishing it. | |
| It's configured using .pre-commit-config.yaml file. | |
| By default it runs: | |
| * black (formats your code); | |
| * mypy (validates types); | |
| * isort (sorts imports in all files); | |
| * flake8 (spots possibe bugs); | |
| You can read more about pre-commit here: https://pre-commit.com/ | |
| ## Running tests | |
| If you want to run it in docker, simply run: | |
| ```bash | |
| docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . run --build --rm api pytest -vv . | |
| docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . down | |
| ``` | |
| For running tests on your local machine. | |
| 1. you need to start a database. | |
| I prefer doing it with docker: | |
| ``` | |
| docker run -p "3306:3306" -e "MYSQL_PASSWORD=reworkd_platform" -e "MYSQL_USER=reworkd_platform" -e "MYSQL_DATABASE=reworkd_platform" -e ALLOW_EMPTY_PASSWORD=yes bitnami/mysql:8.0.30 | |
| ``` | |
| 2. Run the pytest. | |
| ```bash | |
| pytest -vv . | |
| ``` | |
| ## Running linters | |
| ```bash | |
| # Flake | |
| poetry run black . | |
| poetry run autoflake --in-place --remove-duplicate-keys --remove-all-unused-imports -r . | |
| poetry run flake8 | |
| poetry run mypy . | |
| # Pytest | |
| poetry run pytest -vv --cov="reworkd_platform" . | |
| # Bump packages | |
| poetry self add poetry-plugin-up | |
| poetry up --latest | |
| ``` | |