Initial wiring

drew/tilt-local-dev
Drew Bednar 2 years ago
parent 9d4bdd94b3
commit 7501cdc55c

@ -0,0 +1,27 @@
default_stages: [commit, push]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 22.8.0
hooks:
- id: black
# https://pylint.pycqa.org/en/latest/user_guide/installation/pre-commit-integration.html
- repo: local
hooks:
- id: pylint
name: pylint
entry: pylint
language: system
types: [python]
args: [
'-rn', # Only display messages
'-sn', # Don't display the score
'--disable=C,R,W0511', # Disable C and R type messages, and TODO fixme warning
]
# TODO add https://pre-commit.com/#docker hook for bash linting

@ -1,3 +1,3 @@
# fastapi_celery # FastAPI and Celery
FastAPI and Celery Learning distributed task queues by doing. Since it's a greenfield project this also uses a newer async web framework.

@ -0,0 +1,7 @@
black==22.8.0
flake8==5.0.4
invoke==1.7.1
pip-tools==6.8.0
pre-commit==2.20.0
pylint==2.15.2
pytest==7.1.3

@ -0,0 +1,104 @@
#
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# pip-compile dev-requirements.in
#
astroid==2.12.10
# via pylint
attrs==22.1.0
# via pytest
black==22.8.0
# via -r dev-requirements.in
build==0.8.0
# via pip-tools
cfgv==3.3.1
# via pre-commit
click==8.1.3
# via
# black
# pip-tools
dill==0.3.5.1
# via pylint
distlib==0.3.6
# via virtualenv
filelock==3.8.0
# via virtualenv
flake8==5.0.4
# via -r dev-requirements.in
identify==2.5.5
# via pre-commit
iniconfig==1.1.1
# via pytest
invoke==1.7.1
# via -r dev-requirements.in
isort==5.10.1
# via pylint
lazy-object-proxy==1.7.1
# via astroid
mccabe==0.7.0
# via
# flake8
# pylint
mypy-extensions==0.4.3
# via black
nodeenv==1.7.0
# via pre-commit
packaging==21.3
# via
# build
# pytest
pathspec==0.10.1
# via black
pep517==0.13.0
# via build
pip-tools==6.8.0
# via -r dev-requirements.in
platformdirs==2.5.2
# via
# black
# pylint
# virtualenv
pluggy==1.0.0
# via pytest
pre-commit==2.20.0
# via -r dev-requirements.in
py==1.11.0
# via pytest
pycodestyle==2.9.1
# via flake8
pyflakes==2.5.0
# via flake8
pylint==2.15.2
# via -r dev-requirements.in
pyparsing==3.0.9
# via packaging
pytest==7.1.3
# via -r dev-requirements.in
pyyaml==6.0
# via pre-commit
toml==0.10.2
# via pre-commit
tomli==2.0.1
# via
# black
# build
# pylint
# pytest
tomlkit==0.11.4
# via pylint
typing-extensions==4.3.0
# via
# astroid
# black
# pylint
virtualenv==20.16.5
# via pre-commit
wheel==0.37.1
# via pip-tools
wrapt==1.14.1
# via astroid
# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools

@ -0,0 +1,9 @@
version: '3.8'
services:
redis:
image: redis:7.0.4-alpine
restart: always
ports:
- 6379:6379

@ -0,0 +1,8 @@
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}

@ -0,0 +1,4 @@
celery==5.2.7
fastapi==0.79.0
redis==4.3.4
uvicorn[standard]==0.18.2

@ -0,0 +1,86 @@
#
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# pip-compile requirements.in
#
amqp==5.1.1
# via kombu
anyio==3.6.1
# via
# starlette
# watchfiles
async-timeout==4.0.2
# via redis
billiard==3.6.4.0
# via celery
celery==5.2.7
# via -r requirements.in
click==8.1.3
# via
# celery
# click-didyoumean
# click-plugins
# click-repl
# uvicorn
click-didyoumean==0.3.0
# via celery
click-plugins==1.1.1
# via celery
click-repl==0.2.0
# via celery
deprecated==1.2.13
# via redis
fastapi==0.79.0
# via -r requirements.in
h11==0.13.0
# via uvicorn
httptools==0.5.0
# via uvicorn
idna==3.4
# via anyio
kombu==5.2.4
# via celery
packaging==21.3
# via redis
prompt-toolkit==3.0.31
# via click-repl
pydantic==1.10.2
# via fastapi
pyparsing==3.0.9
# via packaging
python-dotenv==0.21.0
# via uvicorn
pytz==2022.2.1
# via celery
pyyaml==6.0
# via uvicorn
redis==4.3.4
# via -r requirements.in
six==1.16.0
# via click-repl
sniffio==1.3.0
# via anyio
starlette==0.19.1
# via fastapi
typing-extensions==4.3.0
# via
# pydantic
# starlette
uvicorn[standard]==0.18.2
# via -r requirements.in
uvloop==0.17.0
# via uvicorn
vine==5.0.0
# via
# amqp
# celery
# kombu
watchfiles==0.17.0
# via uvicorn
wcwidth==0.2.5
# via prompt-toolkit
websockets==10.3
# via uvicorn
wrapt==1.14.1
# via deprecated

@ -0,0 +1,39 @@
"""
A set of `invoke` helper commands used for this project.
"""
from invoke import task
@task
def start_app(c):
"""Starts the app."""
print("Start the app")
c.run("uvicorn main:app --reload", pty=True)
@task
def run_unit_tests(c):
"""Triggers a local unittest run for the app."""
# Pytest will hide color output when it thinks it's running
# outside of a terminal therefore pty=True is used.
c.run("python3 -m pytest -vvv tests/", pty=True)
@task
def fix_eof(c):
"""Fixes any missing newlines for end of files."""
c.run("pre-commit run end-of-file-fixer --all-files", pty=True)
@task
def start_redis(c):
"""Runs the Redis integration environment."""
print("Starting Redis")
c.run("docker compose -f docker-compose-redis.yml up -d")
@task
def stop_redis(c):
"""Stops the Redis integration environent."""
print("Stopping Redis")
c.run("docker compose -f docker-compose-redis.yml down")
Loading…
Cancel
Save