Merge branch 'develop' into feature/drawrects

This commit is contained in:
Jörn-Michael Miehe 2023-09-03 16:03:11 +00:00
commit d654fb8f6b
9 changed files with 854 additions and 651 deletions

View file

@ -1,12 +1,19 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/python-3/.devcontainer/base.Dockerfile
# See here for image contents: https://github.com/devcontainers/images/blob/main/src/python/.devcontainer/Dockerfile
# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
ARG VARIANT="3.10-bullseye"
# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon):
# - 3, 3.11, 3.10, 3.9, 3.8, 3.7, 3.6
# - 3-bullseye, 3.11-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye
# - 3-buster, 3.11-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
ARG VARIANT="3.11-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
# [Choice] Node.js version: none, lts/*, 18, 16, 14, 12, 10
ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
RUN set -ex; \
\
if [ "${NODE_VERSION}" != "none" ]; then \
su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; \
fi
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
# COPY requirements.txt /tmp/pip-tmp/
@ -17,12 +24,12 @@ RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
RUN set -ex; \
\
export DEBIAN_FRONTEND=noninteractive; \
apt-get update; apt-get -y install --no-install-recommends \
apt-get update; apt-get install --yes --no-install-recommends \
git-flow \
git-lfs \
; rm -rf /var/lib/apt/lists/*;
# [Optional] Uncomment this line to install global node packages.

View file

@ -1,15 +1,15 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/python-3
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
"name": "Python 3",
"name": "Advent22 API",
"build": {
"dockerfile": "Dockerfile",
"context": "..",
"args": {
// Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6
// Update 'VARIANT' to pick a Python version.
// Append -bullseye or -buster to pin to an OS version.
// Use -bullseye variants on local on arm64/Apple Silicon.
"VARIANT": "3.10",
// "VARIANT": "3.11-bullseye",
// Options
"NODE_VERSION": "none"
}
@ -35,17 +35,23 @@
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"be5invis.toml",
"mhutchie.git-graph",
"ms-python.python",
"ms-python.vscode-pylance",
"be5invis.toml"
"ms-python.flake8",
"ms-python.isort",
"ms-python.vscode-pylance"
]
}
},
// Use 'postStartCommand' to run commands after the container is started.
"postStartCommand": "poetry install"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "pip3 install --user -r requirements.txt",
"postStartCommand": "poetry install",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View file

@ -9,6 +9,9 @@
"type": "python",
"request": "launch",
"module": "advent22_api.main",
"pythonArgs": [
"-Xfrozen_modules=off",
],
"justMyCode": true
}
]

View file

@ -1,3 +0,0 @@
from .app import app
__all__ = ["app"]

View file

@ -21,9 +21,8 @@ app = FastAPI(
redoc_url=SETTINGS.redoc_url,
)
app.include_router(router)
@app.on_event("startup")
async def add_middlewares() -> None:
if SETTINGS.production_mode:
# Mount frontend in production mode
app.mount(
@ -39,14 +38,9 @@ async def add_middlewares() -> None:
# Allow CORS in debug mode
app.add_middleware(
CORSMiddleware,
allow_origins=[
"*",
],
allow_credentials=True,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["*"],
)
app.include_router(router)

View file

@ -11,7 +11,7 @@ def main() -> None:
"""
uvicorn.run(
app="advent22_api:app",
app="advent22_api.app:app",
host="0.0.0.0",
port=8000,
reload=not SETTINGS.production_mode,

View file

@ -1,4 +1,5 @@
from pydantic import BaseModel, BaseSettings
from pydantic import BaseModel
from pydantic_settings import BaseSettings, SettingsConfigDict
class DavSettings(BaseModel):
@ -30,6 +31,12 @@ class Settings(BaseSettings):
Per-run settings.
"""
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
env_nested_delimiter="__",
)
#####
# general settings
#####
@ -54,10 +61,5 @@ class Settings(BaseSettings):
cache_ttl: int = 30
config_filename: str = "config.toml"
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
env_nested_delimiter = "__"
SETTINGS = Settings()

1367
api/poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -9,19 +9,18 @@ name = "advent22_api"
version = "0.1.0"
[tool.poetry.dependencies]
fastapi = "^0.85.0"
python = "^3.10"
uvicorn = {extras = ["standard"], version = "^0.18.3"}
Pillow = "^9.2.0"
numpy = "^1.23.3"
webdavclient3 = "3.14.5"
Pillow = "^10.0.0"
async-cache = "^1.1.1"
fastapi = "^0.103.1"
numpy = "^1.25.2"
python = "^3.11"
tomli = "^2.0.1"
[tool.poetry.dev-dependencies]
uvicorn = {extras = ["standard"], version = "^0.23.2"}
webdavclient3 = "^3.14.6"
pydantic-settings = "^2.0.3"
[tool.poetry.group.dev.dependencies]
flake8 = "^6.0.0"
flake8 = "^6.1.0"
[build-system]
build-backend = "poetry.core.masonry.api"