diff --git a/README.md b/README.md index eaea2fa..b53eacb 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,17 @@ the PDFs you need. with [uv](https://docs.astral.sh/uv/getting-started/installation/): ```shell -uv tool install --extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ myice +uv tool install \ +--extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ \ +myice ``` with [pipx](https://pipx.pypa.io/stable/installation/): ```shell -pipx install --extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ myice +pipx install \ +--extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ \ +myice ``` ## configuration @@ -80,9 +84,11 @@ Then open your browser at `http://localhost:8000`. The web interface allows you The web interface supports two authentication methods: -1. **Infomaniak OpenID Connect (Recommended)**: Click the "Se connecter avec Infomaniak" button to authenticate using Infomaniak's OIDC provider. Only users in the allowed list will be granted access. +1. **Infomaniak OpenID Connect (Recommended)**: Click the "Se connecter avec + Infomaniak" button to authenticate using Infomaniak's OIDC provider. Only + users in the allowed list will be granted access. -2. **Static API Key**: For development purposes, you can still use `abc` as the token. +1. **Static API Key**: For development purposes, you can still use `abc` as the token. ### Environment Variables @@ -90,8 +96,8 @@ To configure OIDC authentication, set the following environment variables: - `CLIENT_ID`: Your OIDC client ID (default: 8ea04fbb-4237-4b1d-a895-0b3575a3af3f) - `CLIENT_SECRET`: Your OIDC client secret -- `REDIRECT_URI`: The redirect URI (default: http://localhost:8000/callback) -- `ALLOWED_USERS`: Comma-separated list of allowed email addresses (e.g., "user1@example.com,user2@example.com") +- `REDIRECT_URI`: The redirect URI (default: `http://localhost:8000/callback`) +- `ALLOWED_USERS`: Comma-separated list of allowed email addresses (e.g., `"user1@example.com,user2@example.com"`) The web API provides the following endpoints: @@ -103,7 +109,8 @@ The web API provides the following endpoints: - `/callback` - Handle OIDC callback - `/userinfo` - Get user information -All endpoints (except `/health`, `/login`, and `/callback`) require an Authorization header with a Bearer token. +All endpoints (except `/health`, `/login`, and `/callback`) require an +Authorization header with a Bearer token. ## mobile functions @@ -198,9 +205,16 @@ To use a specific configuration section: ```text ❯ myice ai > prochain match u13 top ? -< Le prochain match de l'équipe U13 Top se déroulera le dimanche 10 novembre 2024 contre HC Ajoie à la Raffeisen Arena de Porrentruy. Le match débutera à 14h00 et se terminera à 16h15. +< Le prochain match de l'équipe U13 Top se déroulera le dimanche 10 novembre + 2024 contre HC Ajoie à la Raffeisen Arena de Porrentruy. Le match débutera + à 14h00 et se terminera à 16h15. > et les u13 a ? -< Le prochain match de l'équipe U13 A se déroulera le samedi 9 novembre 2024 contre HC Vallorbe à P. du Frézillon, 1337 Vallorbe VD. Le match débutera à 13h00 et se terminera à 15h00. Le prochain match à domicile de l'équipe U13 A se déroulera le dimanche 10 novembre 2024 contre CP Meyrin à Les Vernets, Glace extérieure, 1227 Les Acacias GE. Le match débutera à 13h00 et se terminera à 15h00. +< Le prochain match de l'équipe U13 A se déroulera le samedi 9 novembre 2024 + contre HC Vallorbe à P. du Frézillon, 1337 Vallorbe VD. Le match débutera à + 13h00 et se terminera à 15h00. Le prochain match à domicile de l'équipe + U13 A se déroulera le dimanche 10 novembre 2024 contre CP Meyrin à + Les Vernets, Glace extérieure, 1227 Les Acacias GE. Le match débutera + à 13h00 et se terminera à 15h00. ``` To use a specific configuration section: diff --git a/poetry.lock b/poetry.lock index b088dbe..c161a02 100644 --- a/poetry.lock +++ b/poetry.lock @@ -408,30 +408,31 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastapi" -version = "0.115.14" +version = "0.118.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "fastapi-0.115.14-py3-none-any.whl", hash = "sha256:6c0c8bf9420bd58f565e585036d971872472b4f7d3f6c73b698e10cffdefb3ca"}, - {file = "fastapi-0.115.14.tar.gz", hash = "sha256:b1de15cdc1c499a4da47914db35d0e4ef8f1ce62b624e94e0e5824421df99739"}, + {file = "fastapi-0.118.0-py3-none-any.whl", hash = "sha256:705137a61e2ef71019d2445b123aa8845bd97273c395b744d5a7dfe559056855"}, + {file = "fastapi-0.118.0.tar.gz", hash = "sha256:5e81654d98c4d2f53790a7d32d25a7353b30c81441be7d0958a26b5d761fa1c8"}, ] [package.dependencies] email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"standard\""} -fastapi-cli = {version = ">=0.0.5", extras = ["standard"], optional = true, markers = "extra == \"standard\""} -httpx = {version = ">=0.23.0", optional = true, markers = "extra == \"standard\""} +fastapi-cli = {version = ">=0.0.8", extras = ["standard"], optional = true, markers = "extra == \"standard\""} +httpx = {version = ">=0.23.0,<1.0.0", optional = true, markers = "extra == \"standard\""} jinja2 = {version = ">=3.1.5", optional = true, markers = "extra == \"standard\""} pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" python-multipart = {version = ">=0.0.18", optional = true, markers = "extra == \"standard\""} -starlette = ">=0.40.0,<0.47.0" +starlette = ">=0.40.0,<0.49.0" typing-extensions = ">=4.8.0" uvicorn = {version = ">=0.12.0", extras = ["standard"], optional = true, markers = "extra == \"standard\""} [package.extras] -all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] -standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] +standard-no-fastapi-cloud-cli = ["email-validator (>=2.0.0)", "fastapi-cli[standard-no-fastapi-cloud-cli] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "fastapi-cli" @@ -1917,14 +1918,14 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "starlette" -version = "0.46.2" +version = "0.48.0" description = "The little ASGI library that shines." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35"}, - {file = "starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5"}, + {file = "starlette-0.48.0-py3-none-any.whl", hash = "sha256:0764ca97b097582558ecb498132ed0c7d942f233f365b86ba37770e026510659"}, + {file = "starlette-0.48.0.tar.gz", hash = "sha256:7e8cee469a8ab2352911528110ce9088fdc6a37d9876926e73da7ce4aa4c7a46"}, ] [package.dependencies] @@ -2341,4 +2342,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "a76a4b7039134dada7bf01bca49754e412c712f401afa9a6ac29ad46d517febf" +content-hash = "26d850ac6adbc2394225e7db95e36b97cf87c43bb0e390630f911f30d1e5e1fc" diff --git a/pyproject.toml b/pyproject.toml index b977bfd..e9d4035 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,11 +10,11 @@ readme = "README.md" requires-python = ">=3.13" dependencies = [ - "requests (>=2.32.3,<2.33.0)", - "typer (>=0.15.1,<0.16.0)", + "requests (>=2.32.3)", + "typer (>=0.15.1)", "pypdf (>=6.0.0)", "rl-ai-tools >=1.9.0", - "fastapi[standard] (>=0.115.11,<0.116.0)", + "fastapi[standard] (>=0.115.11)", ] [tool.poetry.dependencies] diff --git a/requirements.txt b/requirements.txt index 2fbc7ab..8082311 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,7 +10,7 @@ dnspython==2.8.0 ; python_version >= "3.13" email-validator==2.3.0 ; python_version >= "3.13" fastapi-cli==0.0.13 ; python_version >= "3.13" fastapi-cloud-cli==0.2.1 ; python_version >= "3.13" -fastapi==0.115.14 ; python_version >= "3.13" +fastapi==0.118.0 ; python_version >= "3.13" h11==0.16.0 ; python_version >= "3.13" httpcore==1.0.9 ; python_version >= "3.13" httptools==0.6.4 ; python_version >= "3.13" @@ -35,7 +35,7 @@ rl-ai-tools==1.15.0 ; python_version >= "3.13" sentry-sdk==2.39.0 ; python_version >= "3.13" shellingham==1.5.4 ; python_version >= "3.13" sniffio==1.3.1 ; python_version >= "3.13" -starlette==0.46.2 ; python_version >= "3.13" +starlette==0.48.0 ; python_version >= "3.13" typer==0.15.4 ; python_version >= "3.13" typing-extensions==4.15.0 ; python_version >= "3.13" typing-inspection==0.4.1 ; python_version >= "3.13"