Dev Dependencies
These are all the packages that this cookiecutter will include for your project to use for development and CI.
These things will not be included in your packaged Lambda function at runtime.
The relevant section in pyproject.toml
is highlighted below for reference.
- uvicorn: Used to run locally for development because running serverless offline is hard and buggy.
- pytest: A testing framework.
- mypy: Static type checking.
- sqlalchemy-stubs: Allows for static type checking of SQLAlchemy models.
- safety: Check your dependencies for vulnerabilities.
- black: Auto-formatter for your Python code.
- taskipy: Define useful shortcuts for running tasks in your Poetry environment.
- isort: Automatically sort your dependencies.
- pytest-cov: Easily collect coverage statistics while running pytest.
- typer: "The FastAPI of CLIs" for managing utilities for your app.
- alembic: Generates and runs database migrations for SQLAlchemy models.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 | [tool.poetry]
name = "example"
version = "0.1.0"
description = "A Fast API"
authors = [] # You can put your name/email here if you like
readme = "README.md"
packages = [
{include = "example"},
]
classifiers = [
"Private :: Not For Publishing!" # Prevents this from being accidentally published to public PyPI
]
include = ["example/CHANGELOG.md", "example/rds-ca-2019-root.pem"]
[[tool.poetry.source]]
name = "private"
url = "https://pypi.fury.io/my-org/"
[tool.poetry.dependencies]
python = "==3.*,>=3.8.0"
fastapi = ">=0.53.0"
mangum = "^0.8.0"
sqlalchemy = "^1.3.10"
pymysql = "^0.9.3"
secure = "^0.2.1"
flex-config = {version = "^1.1.0", extras = ["all"]}
semantic-version = "^2.8.4"
markdown = "^3.1.1"
[tool.poetry.dev-dependencies]
uvicorn = "^0.11.3"
pytest = "*"
pytest-mock = "*"
pytest-cov = "*"
mypy = "*"
sqlalchemy-stubs = ">=0.3"
safety = "*"
black = {version = ">=19.10b", allow-prereleases = true}
taskipy = "*"
isort = "*"
typer = "^0.2.1"
alembic = "^1.3.2"
[tool.poetry.scripts]
example = "cli:cli" # For running management CLI in cli.py
[tool.taskipy.tasks]
migrate = "alembic revision --autogenerate -m "
upgrade = "alembic upgrade heads"
downgrade = "alembic downgrade -1"
upgrade_dev = "alembic -x env=dev upgrade heads"
downgrade_dev = "alembic -x env=dev downgrade -1"
upgrade_live = "alembic -x env=live upgrade heads"
downgrade_live = "alembic -x env=live downgrade -1"
check = "safety check && isort --recursive --apply && black . && mypy example && pytest --cov=example"
[tool.black]
line-length = 120
target_version = ['py38']
exclude = '''
(
/(
| \.git
| \.venv
| \.mypy_cache
)/
)
'''
[tool.isort]
line_length = 120
skip = "migrations,.serverless,.venv,node_modules"
multi_line_output = 3
include_trailing_comma = true
[tool.coverage.run]
omit = ["example/__init__.py"]
|