Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .jules/sentinel.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@
**Vulnerability:** User-provided string fields (like project and connection names) lacked strict validation against control characters, only relying on length constraints.
**Learning:** This could potentially lead to Log Injection (CRLF injection), Null Byte Injection, or terminal escape injection if these strings are subsequently logged or rendered directly.
**Prevention:** Use explicit regex validation `pattern=r'^[^\x00-\x1F\x7F]+$'` on Pydantic string fields to strictly reject control characters.
## 2026-08-04 - Replace vulnerable python-jose with PyJWT
**Vulnerability:** The `python-jose` library is unmaintained and strictly pins dependencies to vulnerable versions of `ecdsa` (causing PYSEC-2026-1325).
**Learning:** `PyJWT` is the maintained alternative, but its API differs from `python-jose`. Specifically, `jwt.decode` requires a key object (e.g., `jwt.PyJWK(jwk).key`) rather than a raw dictionary, and its exceptions inherit from `jwt.PyJWTError` rather than `jose.JWTError`.
**Prevention:** Avoid adding unmaintained cryptographic libraries. When migrating libraries, thoroughly review and mock their specific object dependencies (like `PyJWK`) and exception hierarchies to prevent functional regressions like crashes on invalid inputs.
18 changes: 9 additions & 9 deletions backend/app/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import httpx
from fastapi import Depends, HTTPException, Request
from jose import jwt
import jwt
from sqlalchemy import select, delete
from sqlalchemy.ext.asyncio import AsyncSession

Expand Down Expand Up @@ -239,7 +239,7 @@ async def _decode_verified_oidc_token(token: str) -> dict[str, Any]:

try:
header = cast(dict[str, Any], jwt.get_unverified_header(token))
except Exception: # noqa: BLE001
except jwt.PyJWTError:
raise HTTPException(status_code=401, detail="invalid token header")

header_alg = _validate_jwt_header(header)
Expand Down Expand Up @@ -273,20 +273,20 @@ async def _decode_verified_oidc_token(token: str) -> dict[str, Any]:
try:
claims = jwt.decode(
token,
jwk,
jwt.PyJWK(jwk).key,
algorithms=list(OIDC_ALLOWED_ALGORITHMS),
audience=settings.oidc_audience,
issuer=settings.oidc_issuer,
leeway=OIDC_JWT_LEEWAY_SECONDS,
options={
"verify_aud": bool(settings.oidc_audience),
"require_aud": bool(settings.oidc_audience),
"require_iss": True,
"require_exp": True,
"require_jti": True,
"leeway": OIDC_JWT_LEEWAY_SECONDS,
"verify_iss": True,
"verify_exp": True,
"verify_jti": True,
"require": ["exp", "iss", "jti"] + (["aud"] if bool(settings.oidc_audience) else []),
},
)
except Exception as err:
except jwt.PyJWTError as err:
raise HTTPException(
status_code=401, detail="token verification failed"
) from err
Expand Down
5 changes: 1 addition & 4 deletions backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ dependencies = [
"alembic>=1.18.5",
"cryptography>=46.0.7",
"httpx>=0.28.1",
"python-jose[cryptography]>=3.5.0",
"redis>=5.0.0",
"pyjwt>=2.13.0",
"PyJWT[crypto]>=2.13.0",
"starlette>=1.1.0",
"urllib3>=2.7.0",
"aiohttp>=3.14.3",
Expand All @@ -42,7 +41,6 @@ dev = [
"pytest-cov>=7.0.0",
"mypy>=2.1.0",
"asyncpg-stubs>=0.31.3",
"types-python-jose>=3.5.0.20260408",
"types-requests",
]

Expand All @@ -53,7 +51,6 @@ dev = [
"pytest-cov>=7.0.0",
"mypy>=2.1.0",
"asyncpg-stubs>=0.31.3",
"types-python-jose>=3.5.0.20260408",
"types-requests",
]

Expand Down
82 changes: 26 additions & 56 deletions backend/requirements-dev.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was autogenerated by uv via the following command:
# uv pip compile backend/pyproject.toml --python-version 3.10 --generate-hashes --extra dev -o backend/requirements-dev.lock
# uv pip compile pyproject.toml --python-version 3.10 --generate-hashes --extra dev -o requirements-dev.lock
aiohappyeyeballs==2.7.1 \
--hash=sha256:065665c041c42a5938ed220bdcd7230f22527fbec085e1853d2402c8a3615d9d \
--hash=sha256:9243213661e29250eb41368e5daa826fc017156c3b8a11440826b2e3ed376472
Expand Down Expand Up @@ -124,15 +124,15 @@ aiohttp==3.14.3 \
--hash=sha256:f8fb78a83c9e5f741ca3a68cfb455c1f5bb83b4e7249a3848b3cd78d0a8563b0 \
--hash=sha256:fa9467a8113aa69d3d7c55a70ef0b7c636010a40993f3df9d9d0d73b3eb7ef24 \
--hash=sha256:fd51ebf9d3a00c074df4ede271023f4d2dba289bcc740b88191872716014e3c5
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
aiosignal==1.4.0 \
--hash=sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e \
--hash=sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7
# via aiohttp
alembic==1.18.5 \
--hash=sha256:06d8ba9d04558022f5395e9317de03d270f3dced49cee01f89fe7a13c26f14bc \
--hash=sha256:1554982221dd17e9a749b53902407578eb305e453f71999e8c7f0a48389fff8e
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
annotated-doc==0.0.4 \
--hash=sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320 \
--hash=sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4
Expand Down Expand Up @@ -249,12 +249,12 @@ asyncpg==0.31.0 \
--hash=sha256:f6b56b91bb0ffc328c4e3ed113136cddd9deefdf5f79ab448598b9772831df44 \
--hash=sha256:f890de5e1e4f7e14023619399a471ce4b71f5418cd67a51853b9910fdfa73696
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# asyncpg-stubs
asyncpg-stubs==0.31.3 \
--hash=sha256:1ca28026dd36808363ece589fc3cd047f2ef1d431b18d8dd6bd9a36d539de26e \
--hash=sha256:37968e766d1e63a4993084ee1ed897e49a6c06a031767b2a3473b4ab81618b38
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
attrs==26.1.0 \
--hash=sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 \
--hash=sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32
Expand Down Expand Up @@ -592,12 +592,8 @@ cryptography==49.0.0 \
--hash=sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493 \
--hash=sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# python-jose
ecdsa==0.19.2 \
--hash=sha256:62635b0ac1ca2e027f82122b5b81cb706edc38cd91c63dda28e4f3455a2bf930 \
--hash=sha256:840f5dc5e375c68f36c1a7a5b9caad28f95daa65185c9253c0c08dd952bb7399
# via python-jose
# pg-erd-cloud-backend (pyproject.toml)
# pyjwt
exceptiongroup==1.3.1 \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
Expand All @@ -609,7 +605,7 @@ exceptiongroup==1.3.1 \
fastapi==0.137.1 \
--hash=sha256:64f6983c59e45c4b9fdc44e57cb8035c2451ee91ea8e8ec042aca37de7cf6b69 \
--hash=sha256:822360704230d9533d8d9475399613525968aa2f0b5bd2a3ccc9f18c88fd541c
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
frozenlist==1.8.0 \
--hash=sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686 \
--hash=sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0 \
Expand Down Expand Up @@ -821,11 +817,11 @@ httpcore==1.0.9 \
httpx==0.28.1 \
--hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \
--hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
hypercorn==0.18.0 \
--hash=sha256:225e268f2c1c2f28f6d8f6db8f40cb8c992963610c5725e13ccfcddccb24b1cd \
--hash=sha256:d63267548939c46b0247dc8e5b45a9947590e35e64ee73a23c074aa3cf88e9da
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
hyperframe==6.1.0 \
--hash=sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5 \
--hash=sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08
Expand Down Expand Up @@ -1227,7 +1223,7 @@ mypy==2.3.0 \
--hash=sha256:f1b3a98dfd21058bc759bb3337d5d1f61d0fdf9f3cf9c00f4291790fb5427bff \
--hash=sha256:f4ed18f111bfe2d599bca7468e7f9251042c1c2118f762c8de2766a56d773c60 \
--hash=sha256:fbc00cee7bdbb9291979ddc9d08034a29dfcda4932628c9bbc28c1edd589df0c
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
mypy-extensions==1.1.0 \
--hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \
--hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558
Expand All @@ -1253,7 +1249,7 @@ priority==2.0.0 \
prometheus-client==0.25.0 \
--hash=sha256:5e373b75c31afb3c86f1a52fa1ad470c9aace18082d39ec0d2f918d11cc9ba28 \
--hash=sha256:d5aec89e349a6ec230805d0df882f3807f74fd6c1a2fa86864e3c2279059fed1
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
propcache==0.5.2 \
--hash=sha256:01c4fc7480cd0598bb4b57022df55b9ca296da7fc5a8760bd8451a7e63a7d427 \
--hash=sha256:04dc2390d9edbbaef7461f33322555976ffddf0b650a038649d026358714e6c5 \
Expand Down Expand Up @@ -1382,7 +1378,7 @@ propcache==0.5.2 \
psycopg==3.3.4 \
--hash=sha256:b6bbc25ccf05c8fad3b061d9db2ef0909a555171b84b07f29458a447253d679a \
--hash=sha256:e21207764952cff81b6b8bdacad9a3939f2793367fdac2987b3aac36a651b5bc
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
psycopg-binary==3.3.4 \
--hash=sha256:018fbed325936da502feb546642c982dcc4b9ffdea32dfef78dbf3b7f7ad4070 \
--hash=sha256:0579252a1202cd73e4da137a1426e2dae993ae44e757605344282af3a082848c \
Expand Down Expand Up @@ -1440,12 +1436,6 @@ psycopg-binary==3.3.4 \
--hash=sha256:fa1cbc10768a796c96d3243656016bf4e337c81c71097270bb7b0ad6210d9765 \
--hash=sha256:fbd1d4ed566895ad2d3bf4ddfd8bae90026930ddf29df3b9d91d32c8c47866a7
# via psycopg
pyasn1==0.6.4 \
--hash=sha256:9c447d8431c947fe4c8febc4ed9e760bc29011a5b01e5c74b67025bd9fb8ce81 \
--hash=sha256:deda9277cfd454080ec40b207fb6df82206a3a2688735233cdcd8d3d565f088b
# via
# python-jose
# rsa
pycparser==3.0 \
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
--hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
Expand All @@ -1454,7 +1444,7 @@ pydantic==2.13.4 \
--hash=sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba \
--hash=sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# fastapi
# pydantic-settings
pydantic-core==2.46.4 \
Expand Down Expand Up @@ -1582,58 +1572,46 @@ pydantic-core==2.46.4 \
pydantic-settings==2.14.2 \
--hash=sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440 \
--hash=sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
pygments==2.20.0 \
--hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \
--hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
# via pytest
pyjwt==2.13.0 \
--hash=sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423 \
--hash=sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
pytest==9.1.0 \
--hash=sha256:41dd9148c08072446394cefd3d79701701335a9f4cae69ba92e39f6c7f5c061c \
--hash=sha256:8ebb0e7888bdf2bdfc602ec51f8f62d50200af37356c74e503c79a94f5c81f32
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# pytest-asyncio
# pytest-cov
pytest-asyncio==1.4.0 \
--hash=sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1 \
--hash=sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
pytest-cov==7.1.0 \
--hash=sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2 \
--hash=sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
python-dotenv==1.2.2 \
--hash=sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a \
--hash=sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3
# via pydantic-settings
python-jose==3.5.0 \
--hash=sha256:abd1202f23d34dfad2c3d28cb8617b90acf34132c7afd60abd0b0b7d3cb55771 \
--hash=sha256:fb4eaa44dbeb1c26dcc69e4bd7ec54a1cb8dd64d3b4d81ef08d90ff453f2b01b
# via pg-erd-cloud-backend (backend/pyproject.toml)
python-multipart==0.0.32 \
--hash=sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e \
--hash=sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
redis==8.0.0 \
--hash=sha256:a00c5355432051ac14e593b8b197fc76c887ee12d55a0984f69328a1115fdc49 \
--hash=sha256:c938c18338585009f0bc310f4c7e4e4b4d37639356c4ac072cedf3af570c8dc7
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
requests==2.34.2 \
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
# via pg-erd-cloud-backend (backend/pyproject.toml)
rsa==4.9.1 \
--hash=sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762 \
--hash=sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75
# via python-jose
six==1.17.0 \
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via ecdsa
# via pg-erd-cloud-backend (pyproject.toml)
sqlalchemy==2.0.51 \
--hash=sha256:0378d055e9e8cd6ce4d8dff683bdd3d7d413533c4ee51d67a2b1e0f9eacc0f23 \
--hash=sha256:0592bdadf86ddcabfd72d9ab66ea8a5d8d2cc6be1cc51fa7e66c03868ac5eac1 \
Expand Down Expand Up @@ -1694,13 +1672,13 @@ sqlalchemy==2.0.51 \
--hash=sha256:e5ea1a213be1fcd5e49d9904c3b9939211ded90bc2a64e93f4c01963474285de \
--hash=sha256:fa268106c8987639a17a18514cfe0cd9bf17420ab887e1e1bf486da8836135b1
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# alembic
starlette==1.3.1 \
--hash=sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0 \
--hash=sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# fastapi
taskgroup==0.2.2 \
--hash=sha256:078483ac3e78f2e3f973e2edbf6941374fbea81b9c5d0a96f51d297717f4752d \
Expand Down Expand Up @@ -1760,18 +1738,10 @@ tomli==2.4.1 \
# hypercorn
# mypy
# pytest
types-pyasn1==0.6.0.20250914 \
--hash=sha256:236102553b76c938953037b7ae93d11d395d9413b7f2f8083d3b19d740f7eda6 \
--hash=sha256:68ffeef3c28e1ed120b8b81a242f238f137543e68d466d84a97edcf3e4203b5b
# via types-python-jose
types-python-jose==3.5.0.20260408 \
--hash=sha256:3f8dccdc327bfffea7a81084ea1cea722fa499f13c1d04f7978b491dd36e0cf1 \
--hash=sha256:968d8a8eac1ff9da249d6335a2bb9f82288d59ba23afe91fcc2662eb9f485e2a
# via pg-erd-cloud-backend (backend/pyproject.toml)
types-requests==2.32.4.20260107 \
--hash=sha256:018a11ac158f801bfa84857ddec1650750e393df8a004a8a9ae2a9bec6fcb24f \
--hash=sha256:b703fe72f8ce5b31ef031264fe9395cac8f46a04661a79f7ed31a80fb308730d
# via pg-erd-cloud-backend (backend/pyproject.toml)
# via pg-erd-cloud-backend (pyproject.toml)
typing-extensions==4.15.0 \
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
Expand Down Expand Up @@ -1807,7 +1777,7 @@ urllib3==2.7.0 \
--hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \
--hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# pg-erd-cloud-backend (pyproject.toml)
# requests
# types-requests
wsproto==1.3.2 \
Expand Down
24 changes: 1 addition & 23 deletions backend/requirements.lock
Original file line number Diff line number Diff line change
Expand Up @@ -454,11 +454,7 @@ cryptography==49.0.0 \
--hash=sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b
# via
# pg-erd-cloud-backend (backend/pyproject.toml)
# python-jose
ecdsa==0.19.2 \
--hash=sha256:62635b0ac1ca2e027f82122b5b81cb706edc38cd91c63dda28e4f3455a2bf930 \
--hash=sha256:840f5dc5e375c68f36c1a7a5b9caad28f95daa65185c9253c0c08dd952bb7399
# via python-jose
# pyjwt
exceptiongroup==1.3.1 \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
Expand Down Expand Up @@ -1137,12 +1133,6 @@ psycopg-binary==3.3.4 \
--hash=sha256:fa1cbc10768a796c96d3243656016bf4e337c81c71097270bb7b0ad6210d9765 \
--hash=sha256:fbd1d4ed566895ad2d3bf4ddfd8bae90026930ddf29df3b9d91d32c8c47866a7
# via psycopg
pyasn1==0.6.4 \
--hash=sha256:9c447d8431c947fe4c8febc4ed9e760bc29011a5b01e5c74b67025bd9fb8ce81 \
--hash=sha256:deda9277cfd454080ec40b207fb6df82206a3a2688735233cdcd8d3d565f088b
# via
# python-jose
# rsa
pycparser==3.0 \
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
--hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
Expand Down Expand Up @@ -1288,10 +1278,6 @@ python-dotenv==1.2.2 \
--hash=sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a \
--hash=sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3
# via pydantic-settings
python-jose==3.5.0 \
--hash=sha256:abd1202f23d34dfad2c3d28cb8617b90acf34132c7afd60abd0b0b7d3cb55771 \
--hash=sha256:fb4eaa44dbeb1c26dcc69e4bd7ec54a1cb8dd64d3b4d81ef08d90ff453f2b01b
# via pg-erd-cloud-backend (backend/pyproject.toml)
python-multipart==0.0.32 \
--hash=sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e \
--hash=sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23
Expand All @@ -1304,14 +1290,6 @@ requests==2.34.2 \
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
# via pg-erd-cloud-backend (backend/pyproject.toml)
rsa==4.9.1 \
--hash=sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762 \
--hash=sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75
# via python-jose
six==1.17.0 \
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via ecdsa
sqlalchemy==2.0.51 \
--hash=sha256:0378d055e9e8cd6ce4d8dff683bdd3d7d413533c4ee51d67a2b1e0f9eacc0f23 \
--hash=sha256:0592bdadf86ddcabfd72d9ab66ea8a5d8d2cc6be1cc51fa7e66c03868ac5eac1 \
Expand Down
Loading
Loading