diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 29855908..be496f89 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,6 +11,12 @@ updates: python-deps: patterns: - "*" + ignore: + # fastapi 0.137 regressed include_router so sub-router routes are not + # registered (#903); pyproject pins fastapi<0.137. Stop dependabot + # proposing the cap-raise until the regression is fixed upstream. + - dependency-name: "fastapi" + versions: [">=0.137"] # Desktop SPA (Vite/React) - package-ecosystem: "npm" @@ -23,6 +29,13 @@ updates: spa-deps: patterns: - "*" + ignore: + # Major bumps of the heavy UI libs (tldraw 4->5, lucide-react 0->1, + # tsparticles 3->4, etc.) carry breaking API changes and must be migrated + # deliberately (e.g. the tldraw engine migration, #75), not auto-merged. + # Minor/patch bumps still flow through normally. + - dependency-name: "*" + update-types: ["version-update:semver-major"] # GitHub Actions workflows - package-ecosystem: "github-actions" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1df15129..0208f310 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,7 +69,7 @@ jobs: # distro-agnostic standalone builds, which works on Fedora, the Ubuntu # VPS, and GitHub-hosted runners alike. - name: Set up uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: enable-cache: true @@ -107,7 +107,7 @@ jobs: python-version: "3.12" - name: Set up uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: enable-cache: true diff --git a/docs/STATUS.md b/docs/STATUS.md index e5765eaa..3b1d7e1e 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -1,5 +1,8 @@ SINGLE SOURCE OF TRUTH for cross-agent handoff. -Last updated: 2026-06-20 ~12:05 UTC, @taOS-dev (SELF-HOSTED CI LANDED: #1201 (-> task #119) routes the slow python `test` job to two self-hosted runners labelled taos-ci -- the always-on fasthosts VPS (16c EPYC-Milan, dedicated) + the Fedora 3060 box (i5-10600, 6c/12t). Benchmarked ~tied per-core (Fedora 2.04s / VPS 2.17s single-thread microbench), so CI uses the POOL in PARALLEL (3.12+3.13 split across both boxes, ~5min cold vs ~16min on GitHub) rather than pinning to one "primary". Dropped actions/setup-python (no prebuilt CPython for Fedora 43) -> uv now provisions Python from its distro-agnostic standalone builds, which works on Fedora + the Ubuntu VPS + GitHub alike. A pick-runner chooser job falls back to ubuntu-latest ONLY when BOTH self-hosted runners are offline (never-hang); that fallback needs an OPTIONAL repo secret RUNNER_ADMIN_PAT (fine-grained, administration:read) to read runner status -- without it CI just stays on the pool, which the always-on VPS keeps serviceable. Repo set to require-approval-for-all-outside-collaborators. Runner services: VPS in /opt/actions-runner as an unprivileged ghrunner user; Fedora in /opt/actions-runner (relocated from home to satisfy SELinux). #120 kilo compute lane on Fedora PENDING Jay (installing+authing kilo; global-npm EACCES -> user prefix ~/.npm-global or sudo; then I scp ~/.taos-team over). UPDATE-FIX promoted to MASTER earlier this session (8996ac26): `npm ci` so the in-app update never dirties desktop/package-lock.json and aborts the pull (#1197) + hardened lockfile restore (#1199) + WSL memory-cap detection in hardware.py (wsl/mem_note advisory, #1199). The WINDOWS "remote access app" pop-up a Discord user reported was AUDITED and is BENIGN: the standard Windows Firewall prompt for the local uvicorn server binding 0.0.0.0:6969; no Windows-API calls, phone-home, or remote-access/screen-share tool anywhere (only-if-used secondary firewall-y bits: Neko browser WebRTC UDP + torrent UPnP). dependabot #991-994 + #1196 still HELD for Jay's separate pass. #114 VITEST CI GATE LANDED (#1202, task #114 DONE): vitest now runs in the spa-build CI job over ~1,900 desktop tests (previously never gated). Fixed 2 stale tests (userspace app ids are namespaced `userspace:` per #89; the projectsApi.subscribeEvents EventSource mock must be constructable since the code does `new EventSource`). Quarantined 9 suites in desktop/vite.config.ts test.exclude tagged #114: AgentsApp x4 (drift vs #59 redesign), BrowserApp x4 (drift vs #66), EmojiPicker (order-dependent: passes alone, fails under the full suite) -- un-exclude each as its owning work lands. WSL user RESOLVED: his install/reach issue self-resolved (back in the UI). New report: UI LAG on an older laptop (GTX 1060, Edge, default STATIC wallpaper so wallpaper is NOT the cause) -> traced to GPU-heavy compositing (~90 backdrop-blur surfaces + big soft shadows + continuous animations). #58 PERF MODE BUILT (#1203, green CI, HELD for eyeball): opt-in Settings -> Accessibility "Reduce effects" toggle sets reduceEffects in the theme store -> App.tsx applies data-perf=reduced on :root -> tokens.css strips backdrop-filter, opaques the glass bg token, flattens the shadow tokens, stops the named infinite animations. FULLY opt-in: every rule is scoped to [data-perf=reduced] and the attr is off by default, so the default desktop is byte-for-byte unchanged. NOT pixel-verified by me (control-API /screenshot needs a live browser session, none headless); awaiting Jay/user eyeball of the reduced look before merge. Fast-follow: auto-enable on low-end GPUs via a client-side FPS probe on first run. #120 FEDORA KILO LANE LIVE (task #120 DONE): @taOS-dev-kilo-fedora dispatch-only loop in tmux `owl-fedora` (model kilo/openrouter/owl-alpha = the free owl model, same kilo account) claims board cards + pushes exec/* PRs while the Mac stays the single gater; idle now (board empty, campaign plateaued). Fedora prepped: jaylfc git identity + uv + gh re-authed (token piped from the Mac) + ~/tinyagentos clone + ~/.taos-team stack; executor.sh REPO is now TAOS_REPO-parameterized (Mac path is the default). five_hour 64% / seven_day 13%. PRIOR ENTRY BELOW.) +Last updated: 2026-06-20 ~20:25 UTC, @taOS-dev (BETA.4.1 SHIPPED + SECURITY PASS. INSTALL RELIABILITY fully resolved: the SPA bundle is no longer built on every machine -- CI publishes a prebuilt bundle (keyed by the git tree SHA of desktop/, plus a SHA256 the installer verifies before extracting) to a rolling `bundle-latest` release AND each version tag; install-server.sh + desktop_rebuild.py download+verify it and skip the memory-heavy vite build that OOM'd on small machines (8GB WSL), falling back to a loud-failing local build only on a miss (#117 via #1204/#1205/#1207). Re-installs now update the EXISTING install in place (INSTALL_DIR defaults to the running service WorkingDirectory, then /opt, not $HOME) -- found on the Pi where a root curl|bash had forked /root + repointed the service; restored Pi to /opt on beta.4.1, data intact. Reduce-effects perf mode (#58) + Fedora kilo lane (#120) MERGED. RELEASED v1.0.0-beta.4.1 (version bumped so the in-app updater flags it); Pi verified on beta.4.1, the install ran in 31s via the prebuilt path with no local build. gitar must-fixes folded (mktemp symlink-safe staging, atomic-rename swap, stale-mtime touch, path-safe tar fallback, chown primary-group). SECURITY (dependabot pass): advisories 14 (2 critical / 5 high) -> 3 (1 high / 2 moderate). Merged the clean bumps undici/uv-group/setup-uv (#991/#992/#1196, cleared all criticals); closed the breaking ones (#993 npm majors tldraw 4->5 / lucide / tsparticles, #994 fastapi 0.137 which regresses include_router #903) + added dependabot.yml ignores (fastapi>=0.137, npm semver-major) so they recreate clean; bumped cryptography 48->49 (patched OpenSSL = the HIGH) + pydantic-settings (#1211 MERGED to dev). 3 remaining are all minor/patch-fixable: cryptography fixed on dev (pending master), dompurify medium + the rest land via the next dependabot run. INSTALL first-run message now tells users to create their admin account at the Web UI -- there is NO default password, first visit serves a /setup page (answered a Discord question). PROMOTING dev->master now: this clears the master advisory count AND activates the dependabot.yml ignores (dependabot reads config from the default branch). NEXT (Jay order 4,1,3,2; #4 board exhausted+skipped, #1 dependabot ~done): #117 broader install-rescue hardening, #58 FPS auto-detect on low-end GPUs, #115 RK image-gen flagged store install, #116 rknn-llm 1.3.0. five_hour 4% / seven_day 17%. PRIOR ENTRY BELOW.) + +================================================================== +STATE 2026-06-20 ~12:05 UTC, @taOS-dev (SELF-HOSTED CI LANDED: #1201 (-> task #119) routes the slow python `test` job to two self-hosted runners labelled taos-ci -- the always-on fasthosts VPS (16c EPYC-Milan, dedicated) + the Fedora 3060 box (i5-10600, 6c/12t). Benchmarked ~tied per-core (Fedora 2.04s / VPS 2.17s single-thread microbench), so CI uses the POOL in PARALLEL (3.12+3.13 split across both boxes, ~5min cold vs ~16min on GitHub) rather than pinning to one "primary". Dropped actions/setup-python (no prebuilt CPython for Fedora 43) -> uv now provisions Python from its distro-agnostic standalone builds, which works on Fedora + the Ubuntu VPS + GitHub alike. A pick-runner chooser job falls back to ubuntu-latest ONLY when BOTH self-hosted runners are offline (never-hang); that fallback needs an OPTIONAL repo secret RUNNER_ADMIN_PAT (fine-grained, administration:read) to read runner status -- without it CI just stays on the pool, which the always-on VPS keeps serviceable. Repo set to require-approval-for-all-outside-collaborators. Runner services: VPS in /opt/actions-runner as an unprivileged ghrunner user; Fedora in /opt/actions-runner (relocated from home to satisfy SELinux). #120 kilo compute lane on Fedora PENDING Jay (installing+authing kilo; global-npm EACCES -> user prefix ~/.npm-global or sudo; then I scp ~/.taos-team over). UPDATE-FIX promoted to MASTER earlier this session (8996ac26): `npm ci` so the in-app update never dirties desktop/package-lock.json and aborts the pull (#1197) + hardened lockfile restore (#1199) + WSL memory-cap detection in hardware.py (wsl/mem_note advisory, #1199). The WINDOWS "remote access app" pop-up a Discord user reported was AUDITED and is BENIGN: the standard Windows Firewall prompt for the local uvicorn server binding 0.0.0.0:6969; no Windows-API calls, phone-home, or remote-access/screen-share tool anywhere (only-if-used secondary firewall-y bits: Neko browser WebRTC UDP + torrent UPnP). dependabot #991-994 + #1196 still HELD for Jay's separate pass. #114 VITEST CI GATE LANDED (#1202, task #114 DONE): vitest now runs in the spa-build CI job over ~1,900 desktop tests (previously never gated). Fixed 2 stale tests (userspace app ids are namespaced `userspace:` per #89; the projectsApi.subscribeEvents EventSource mock must be constructable since the code does `new EventSource`). Quarantined 9 suites in desktop/vite.config.ts test.exclude tagged #114: AgentsApp x4 (drift vs #59 redesign), BrowserApp x4 (drift vs #66), EmojiPicker (order-dependent: passes alone, fails under the full suite) -- un-exclude each as its owning work lands. WSL user RESOLVED: his install/reach issue self-resolved (back in the UI). New report: UI LAG on an older laptop (GTX 1060, Edge, default STATIC wallpaper so wallpaper is NOT the cause) -> traced to GPU-heavy compositing (~90 backdrop-blur surfaces + big soft shadows + continuous animations). #58 PERF MODE BUILT (#1203, green CI, HELD for eyeball): opt-in Settings -> Accessibility "Reduce effects" toggle sets reduceEffects in the theme store -> App.tsx applies data-perf=reduced on :root -> tokens.css strips backdrop-filter, opaques the glass bg token, flattens the shadow tokens, stops the named infinite animations. FULLY opt-in: every rule is scoped to [data-perf=reduced] and the attr is off by default, so the default desktop is byte-for-byte unchanged. NOT pixel-verified by me (control-API /screenshot needs a live browser session, none headless); awaiting Jay/user eyeball of the reduced look before merge. Fast-follow: auto-enable on low-end GPUs via a client-side FPS probe on first run. #120 FEDORA KILO LANE LIVE (task #120 DONE): @taOS-dev-kilo-fedora dispatch-only loop in tmux `owl-fedora` (model kilo/openrouter/owl-alpha = the free owl model, same kilo account) claims board cards + pushes exec/* PRs while the Mac stays the single gater; idle now (board empty, campaign plateaued). Fedora prepped: jaylfc git identity + uv + gh re-authed (token piped from the Mac) + ~/tinyagentos clone + ~/.taos-team stack; executor.sh REPO is now TAOS_REPO-parameterized (Mac path is the default). five_hour 64% / seven_day 13%. PRIOR ENTRY BELOW.) ================================================================== STATE 2026-06-20 ~09:15 UTC, @taOS-dev (STEADY-STATE autonomous loop, full budget all window (five_hour ~7% / seven_day 6%). MERGED to dev since the 01:10 entry: account-proxy #1133 + trust-gate hardening #1140 (X-Forwarded-Proto only honored when TAOS_TRUST_FORWARDED_PROTO is set; the taOSgo relay deployment MUST set it, noted in ~/tinyagentos-private/taosgo/SPEC.md) [#113 DONE], node_modules untrack #1134 + root node-cruft removal #1152 (a lane had committed a root package.json/package-lock/vitest.config.ts, the SEED of the node_modules pollution; removed + root-anchored ignores), multi-window Projects #1138 [#111 DONE], canvas test DB-isolation #1139, shortcuts test isolation #1116. AUTONOMOUS TEST-COVERAGE CAMPAIGN: ~30 gate-verified test PRs merged across 10 batches (#1147-1195): python route tests (themes/feedback/manifest/knowledge/system/agent-archive/agent-debugger/skill-exec/service-proxy + reads of others), ~16 desktop API-client lib tests (memory-api/projects/models/framework-api/channel-admin/chat-*/personas/knowledge/userspace-apps/taos-agent-api/hw-detect/account-client/agent-browsers/browser-site-permissions/github/mail/memory/reddit/youtube), component render tests (MigrationBanner/LaunchpadIcon/EmojiPicker/ModelPickerModal/LoginScreen + earlier ServiceIcon/StatusIndicators/ConsentNotification/DockIcon/ScreenshotFlash/WallpaperTextOverlay/SafetyFloor), and hook tests (use-list-nav/use-clock/use-device-mode/use-focus-trap/use-is-pwa/use-visual-viewport/use-widget-size). GATE HARDENED: ~/.taos-team/gate_merge.sh now runs `vitest run --no-cache` on each PR's changed desktop *.test.tsx against the merge result (worktree + symlinked node_modules), BLOCKS real failures, fails OPEN on setup glitches, closing the ungated-desktop-test hole at the lane-gate level. STILL OPEN #114: there is NO vitest CI job + ~23 desktop tests already FAIL on dev (drift from in-progress AgentsApp #59 + BrowserApp/AddressBar #66 redesigns); the durable fix (repair the 23 + add a CI vitest job) needs Jay's steer on update-test-vs-fix-component, so HELD (do NOT blind-rewrite). CAMPAIGN PLATEAUED: clean testable units exhausted; remaining are hard/context-heavy (use-desktop-control 224L, use-session-persistence 215L, server/fetch hooks, canvas wallpapers, websocket libs), not force-feeding. Lanes idle; dispatch + freshness(:08/:38) + repo-watch(:23) crons alive; resume pair armed 9d76dbd7/ce31b067 for the 10:10 UTC reset. gitar+qodo budgets EXHAUSTED (manual severity-gating; recent findings all deferrable Quality nits). dependabot #991-994 HELD for Jay (failing builds, master-gated). PRIOR (01:10 UTC): account-proxy hardening #1133 (honor X-Forwarded-Proto so the session-cookie Secure attr survives the TLS-terminating taOSgo relay + relay redirect Location / auth-challenge headers, with tests), node_modules ROOT-CAUSE cleanup #1134 (dev was TRACKING a stray root node_modules -> it rode into every lane worktree and `git add -A` swept siblings, escalating to 99-file CONFLICTING exec PRs; untracked it + added a generic node_modules/ ignore so it can never recur), and csrf.test #1122. PUSHED + awaiting CI: multi-window Projects #1138 (Jay's ask -- dock right-click New Window for non-singleton apps + Projects singleton:false + per-window projectId prop + project-list 'open in new window' affordance; tsc+build+tests green), shortcuts route-test isolation fix #1116 (reset the _active_manager module global so the no-worker assertion is order-independent), project_canvas test DB-isolation fix #1139 (fixture set a bogus `_db_path` string but BaseStore.init reads self.db_path Path, so the suite ran against the PRODUCTION canvas DB -> now a tmp Path; completes #113 with #1133). Closed 3 node_modules-polluted exec PRs (#1129/#1131/#1132); salvaged #1122. BOARD REFILLED with 11 CI-gated python route-test cards (themes/manifest/feedback/skills/knowledge/system + scheduler/memory-mgmt/a2a-bus/agent-registry/librarian-memory-model), each card carrying exact endpoints + a reference test + the acceptance command + a BLOCKED.txt escape -- python route tests are gated by CI's full suite, so a weak-lane mistake yields a red PR I triage, never a silent bad merge. KEY FINDING (tracked #114): there is NO vitest CI job AND 10 desktop test files / 23 tests already FAIL on dev (drift from the AgentsApp + BrowserApp/AddressBar redesigns), so every colocated desktop test the lanes add is UNGATED; FIX = repair the 23 drifted tests then add a vitest step to the spa-build job; until then do NOT delegate more ungated desktop test cards. Dispatch lane alive (kilo mid-card). Resume pair re-armed eafb5884/00111e53 for the 05:13/05:32 UTC 5h-reset wake. PRIOR (02:40 BST wind-down): WEEKLY WIND-DOWN at seven_day 94%, per Jay's push-to-98 + 'near limits, do orchestration / fill the board' directive. SHIPPED to dev + LIVE on Pi this session: dvh DEAD-SPACE fix in the standalone PWA shells (#1115 -- ChatStandalone/AppStandalone now height:100dvh not h-screen, the installed-iOS-PWA bottom gap), iOS Add-to-Home banner + sturdier copy fallback (#1107), multi-window primitive openWindow forceNew (#1109), taOSgo P1 CORE (Account pane + off-network screen #1105 + host /api/account proxy #1110, HARDENED by #1117 to rescope Set-Cookie [strip Domain, drop Secure on http] + relay the upstream body verbatim), My Apps launcher rename, npm-skip update speedup, README DATA-SOVEREIGNTY positioning #1106 + GitHub repo description rebrand + topics, shared platform-detect util. BOARD FILLED FOR THE WEEKEND: ~20 claimable lane cards (route-coverage + component-test pools, each detailed with a reference test, exact acceptance command, and a BLOCKED.txt escape) + the multi-window consumer (dock New Window + Projects opt-in, tsk-6ax5dk, builds on #1109's forceNew). @taOS-website-dev owns jaylfc/taos-website (taos.my auth + the sovereignty hero) on prj-utbsh7; the shared kilo+opencode lanes serve BOTH boards (TAOS_PROJECTS in ~/.taos-team/config). Project refs accept slug/name now; website-dev wrapper ~/.taos-team/website-dev. gitar+qodo budgets EXHAUSTED -> manual severity-gating (open lane PRs quality-only, nothing must-fix). HANDOFF: the dispatcher auto-builds + auto-merges the board; freshness(:08/:38) + repo-watch(:23) crons keep firing; weekly resets ~2026-06-21 02:00 UTC. On the next 5h reset (01:30 UTC) the resume-pair crons 59dbf43c/6ba30976 wake me to refill the board, scrutinise the overnight lane PRs, fold any gitar findings, and review the multi-window consumer. Pi tip lags dev by backend/test-only merges (no visible delta; dvh fix IS live). five_hour 50% / seven_day 94%.) diff --git a/scripts/install-server.sh b/scripts/install-server.sh index 1706dd64..9cdf187c 100644 --- a/scripts/install-server.sh +++ b/scripts/install-server.sh @@ -1952,6 +1952,10 @@ log "━━━━━━━━━━━━━━━━━━━━━━━━━ log "" log " Web UI : http://$host_ip:$TAOS_PORT" log " Localhost : http://localhost:$TAOS_PORT" +log "" +log " First run : open the Web UI above and create your admin account." +log " You choose the username and password (8+ chars) -- there" +log " is no default password." if [[ "$TAOS_BROWSER_PROXY_PORT" != "0" ]]; then log " Browser app : also listens on port $TAOS_BROWSER_PROXY_PORT (TAOS_BROWSER_PROXY_PORT)" log " open both ports in your firewall if accessing remotely" diff --git a/uv.lock b/uv.lock index 4386a11a..abb9f26c 100644 --- a/uv.lock +++ b/uv.lock @@ -580,61 +580,58 @@ wheels = [ [[package]] name = "cryptography" -version = "46.0.7" +version = "49.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" }, - { url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" }, - { url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" }, - { url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" }, - { url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" }, - { url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" }, - { url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" }, - { url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" }, - { url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" }, - { url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" }, - { url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" }, - { url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" }, - { url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842", size = 7119671, upload-time = "2026-04-08T01:56:44Z" }, - { url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c", size = 4268551, upload-time = "2026-04-08T01:56:46.071Z" }, - { url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902", size = 4408887, upload-time = "2026-04-08T01:56:47.718Z" }, - { url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d", size = 4271354, upload-time = "2026-04-08T01:56:49.312Z" }, - { url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022", size = 4905845, upload-time = "2026-04-08T01:56:50.916Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce", size = 4444641, upload-time = "2026-04-08T01:56:52.882Z" }, - { url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f", size = 3967749, upload-time = "2026-04-08T01:56:54.597Z" }, - { url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99", size = 4270942, upload-time = "2026-04-08T01:56:56.416Z" }, - { url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1", size = 4871079, upload-time = "2026-04-08T01:56:58.31Z" }, - { url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2", size = 4443999, upload-time = "2026-04-08T01:57:00.508Z" }, - { url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e", size = 4399191, upload-time = "2026-04-08T01:57:02.654Z" }, - { url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee", size = 4655782, upload-time = "2026-04-08T01:57:04.592Z" }, - { url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298", size = 3002227, upload-time = "2026-04-08T01:57:06.91Z" }, - { url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb", size = 3475332, upload-time = "2026-04-08T01:57:08.807Z" }, - { url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" }, - { url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" }, - { url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" }, - { url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" }, - { url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" }, - { url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" }, - { url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" }, - { url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" }, - { url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" }, - { url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" }, - { url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" }, - { url = "https://files.pythonhosted.org/packages/63/0c/dca8abb64e7ca4f6b2978769f6fea5ad06686a190cec381f0a796fdcaaba/cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f", size = 3476879, upload-time = "2026-04-08T01:57:38.664Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ea/075aac6a84b7c271578d81a2f9968acb6e273002408729f2ddff517fed4a/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15", size = 4219700, upload-time = "2026-04-08T01:57:40.625Z" }, - { url = "https://files.pythonhosted.org/packages/6c/7b/1c55db7242b5e5612b29fc7a630e91ee7a6e3c8e7bf5406d22e206875fbd/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455", size = 4385982, upload-time = "2026-04-08T01:57:42.725Z" }, - { url = "https://files.pythonhosted.org/packages/cb/da/9870eec4b69c63ef5925bf7d8342b7e13bc2ee3d47791461c4e49ca212f4/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65", size = 4219115, upload-time = "2026-04-08T01:57:44.939Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/05aa5832b82dd341969e9a734d1812a6aadb088d9eb6f0430fc337cc5a8f/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968", size = 4385479, upload-time = "2026-04-08T01:57:46.86Z" }, - { url = "https://files.pythonhosted.org/packages/20/2a/1b016902351a523aa2bd446b50a5bc1175d7a7d1cf90fe2ef904f9b84ebc/cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4", size = 3412829, upload-time = "2026-04-08T01:57:48.874Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, ] [[package]] @@ -704,18 +701,17 @@ wheels = [ [[package]] name = "fastapi-sso" -version = "0.19.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fastapi" }, { name = "httpx" }, { name = "oauthlib" }, { name = "pydantic", extra = ["email"] }, - { name = "pyjwt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/fc/644bc8f82fc887fffcf9a3eab8eb3dea06ee9ea160ef20441455ed7a0001/fastapi_sso-0.19.0.tar.gz", hash = "sha256:629f00581f72ea7e57f7b8775f8d2c425629c428c194359a2b4ebaa6bcb8e12b", size = 17278, upload-time = "2025-12-17T15:18:06.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/9b/25c43c928b46ec919cb8941d3de53dd2e12bab12e1c0182646425dbefd60/fastapi_sso-0.16.0.tar.gz", hash = "sha256:f3941f986347566b7d3747c710cf474a907f581bfb6697ff3bb3e44eb76b438c", size = 16555, upload-time = "2024-11-04T11:54:38.579Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/61/d2ac0800cb1f390ec2aad464ea4cc5944de285fabc8f987327da4633f17d/fastapi_sso-0.19.0-py3-none-any.whl", hash = "sha256:d958c46cd9996234c7b162e192168b4c0807a248224a55b0f877d3a82a16a930", size = 26419, upload-time = "2025-12-17T15:18:05.439Z" }, + { url = "https://files.pythonhosted.org/packages/72/84/df15745ff06c1b44e478b72759d5cf48e4583e221389d4cdea76c472dd1c/fastapi_sso-0.16.0-py3-none-any.whl", hash = "sha256:3a66a942474ef9756d3a9d8b945d55bd9faf99781facdb9b87a40b73d6d6b0c3", size = 23942, upload-time = "2024-11-04T11:54:37.189Z" }, ] [[package]] @@ -901,85 +897,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", hash = "sha256:11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2", size = 203402, upload-time = "2026-04-29T20:42:36.842Z" }, ] -[[package]] -name = "granian" -version = "2.7.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5c/4b/7c27442d6377607bec0802dcc1ee73554f1b3982ed6fca3dab253bee55d4/granian-2.7.6.tar.gz", hash = "sha256:52c8eaa5bdd636535c4c50b62591420612297f38151786cffd8c8cd39c738da3", size = 128698, upload-time = "2026-06-10T19:35:22.556Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/aa/cf5c290175664187c7fbc2136bfab5afdceae0f6f336b1304d45c6a0e4c9/granian-2.7.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ccc0164a876cfa2bdb043327bc7b8e7b7bb2be2c3ad26b0577a135c2e37a8efe", size = 6491791, upload-time = "2026-06-10T19:33:23.596Z" }, - { url = "https://files.pythonhosted.org/packages/a4/d8/8abb0a0e97df07c6326616b2d1404ed9f01564745be361ab01903dafb98c/granian-2.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1049d39b1fd7c312d8b44f355b2fd9122ae1cd625f26c7d10a644838020f869b", size = 6174371, upload-time = "2026-06-10T19:33:25.314Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ed/d2e56e1a2fb7308682058a876cfdeca8b5ff72b79f5f53b14307960800b3/granian-2.7.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d7039487a32489add74c1ac70e578171fd6e4a16b4cc074334de736c663a27f", size = 7193692, upload-time = "2026-06-10T19:33:26.714Z" }, - { url = "https://files.pythonhosted.org/packages/25/a3/a53d2e3b2c1ddb961a82dfef374e06ceb99155be17730362ba52d23fe60e/granian-2.7.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:917e498c37cd8c592a669ffb72b46c99596cebe6cec9a7054f5c3de439141528", size = 6500926, upload-time = "2026-06-10T19:33:28.15Z" }, - { url = "https://files.pythonhosted.org/packages/58/c0/322c68f4bd6cb22f2cc735aa9349c578c6e3081d5dfa68e0a73be8247cd0/granian-2.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd1fb44a1460675179219305ce9f42df6734005e45a7326813347664f698b8a7", size = 6954163, upload-time = "2026-06-10T19:33:29.874Z" }, - { url = "https://files.pythonhosted.org/packages/88/8f/6d34025970dc8777ec8af6b666a1e0f25e17c15b035fa6b82b78de5454ec/granian-2.7.6-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d35342a96d84bb6b07226a71adf27e88a7b3d63e08ed78505d045e55f1584f39", size = 7135026, upload-time = "2026-06-10T19:33:31.358Z" }, - { url = "https://files.pythonhosted.org/packages/ac/d5/2af09a49f766d6c13938018138edcf33390ebe52ddc73333cd69a0c15542/granian-2.7.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a4d1eed6d63d54da2c71b2a748121b2c03756bee67e73f8d4b11a0a891602bb", size = 7156482, upload-time = "2026-06-10T19:33:33.295Z" }, - { url = "https://files.pythonhosted.org/packages/6a/52/eb5a661b7a69b59da6e4594784585bfa334ff1b42edfb45637ba3e98ca6c/granian-2.7.6-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:6f322a0cf606a0831b9f70fcc4a265b45d7459d63e60d8da78f20b27f005994c", size = 7327990, upload-time = "2026-06-10T19:33:35.033Z" }, - { url = "https://files.pythonhosted.org/packages/b0/1d/84ae22620bd14d33b90585de6c1423d267995cf0293fa9a06a56a972cce6/granian-2.7.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a96ef130bb6e31a7f45d62f82189514e29c07ae28fb5df5f7661c6941e2d9ff5", size = 6996608, upload-time = "2026-06-10T19:33:37.036Z" }, - { url = "https://files.pythonhosted.org/packages/77/27/6e087a206b2c90d8365ed653a1040d6811b66d50cc371863109aff9e2197/granian-2.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:3db581ad3616d05065c48604987670ce08a825ec019183f7b3bce6d6fb147086", size = 4036482, upload-time = "2026-06-10T19:33:38.498Z" }, - { url = "https://files.pythonhosted.org/packages/0d/9d/bf53ea626e2f0388bf3fcf2cc056964ad3835b9d2b498aef4bfdf82ed82b/granian-2.7.6-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3aec59c6864af5b26e46b217ba4ab7631313a1fc61976ee46b1eb2de18e6a1b4", size = 6538393, upload-time = "2026-06-10T19:33:40.049Z" }, - { url = "https://files.pythonhosted.org/packages/af/f2/eac07051c5f3acf31fe3151282f5b61de6b23ed614e5bcdc9a44a29bbd83/granian-2.7.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:42ed56bd83fc9fe7ef944523c353d8eb377f7bded0cba7e45637d7dcd4d4bb51", size = 6247963, upload-time = "2026-06-10T19:33:41.628Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ca/424492b9f5874957d02f0df3e5410a6ca8e465d880dd3dd02ff68232b7ea/granian-2.7.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239bd4738ef21fa1f7ac09e69ba8c221bf219f0ed65c398d9aa50da490fed98d", size = 7247353, upload-time = "2026-06-10T19:33:43.087Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/66a5f3894ee2c6d9ef20487a5a07d6d4d0bfa385f672a4845af2bed176b1/granian-2.7.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0576859f46b462e8a46bed56ad10ee8fc06d44910735836c6c64eaec3330e1c2", size = 6489589, upload-time = "2026-06-10T19:33:44.747Z" }, - { url = "https://files.pythonhosted.org/packages/73/d0/fa26ec8d287e396eeefcd914a165fe589502bd64baef0dbca79215363d28/granian-2.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3415f110355f58e9520b0f5ef78ac5047a143482e1ee5bd63ee1e558dcb363af", size = 6940099, upload-time = "2026-06-10T19:33:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/47/da/eb71362ee17b5f0f9dfc8fc38c05a16482a4e59ff234bf875cba455e0f8d/granian-2.7.6-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:81b696751078ffb8be5927f13689f2714985a6a3cfbbdf6be97f583b482aa963", size = 7162417, upload-time = "2026-06-10T19:33:48.124Z" }, - { url = "https://files.pythonhosted.org/packages/d8/9b/166fd5cbe00f67d8723b11183b7f6e2e44fccf52939856563751501fabeb/granian-2.7.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0fd714f9a5fda9c33d8a7cefaf85be0b7b07758ef707b73eb4a06e38048c2a32", size = 7155039, upload-time = "2026-06-10T19:33:49.824Z" }, - { url = "https://files.pythonhosted.org/packages/93/ff/faab106b4696577b735ce7ea046b788fc00b319efcff7cd84b2f66a18db4/granian-2.7.6-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:9d92c4f10127203436e774c1fbd05ab8c0a1b1233fc62469ca3d4c38d6c9f645", size = 7396327, upload-time = "2026-06-10T19:33:51.578Z" }, - { url = "https://files.pythonhosted.org/packages/54/91/8c77d5939e0f1145f622002aad0693b7fd3f724dff7e75b5c9994b9b46dc/granian-2.7.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8432a9adfbdb7ba4ee9897e78d684a30c7c0b6587f696e3dcbaf3fb93aa363e5", size = 6990885, upload-time = "2026-06-10T19:33:53.182Z" }, - { url = "https://files.pythonhosted.org/packages/60/0f/d5ad50d5ea6b8bb46db953512f64145b1455b4360420c363ef2353899650/granian-2.7.6-cp312-cp312-win_amd64.whl", hash = "sha256:0bd61ffa236d4e6b0c1cbadae7024bee5a19faeaa24626cb32914fab7b5818d9", size = 4068448, upload-time = "2026-06-10T19:33:54.746Z" }, - { url = "https://files.pythonhosted.org/packages/bb/01/d8c4ff585c6dfd656771b5aec0d55d19cb1173886ae3c3e373b88ff1af67/granian-2.7.6-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6ebda7740ae13d1da82456d7f8166d90aa4dc92b9e114b64d8298cc0666e975a", size = 6538971, upload-time = "2026-06-10T19:33:56.426Z" }, - { url = "https://files.pythonhosted.org/packages/58/e0/db5fb23bf4ef94e0832c901350203ee4bcc74c68000364c75f01f89dc166/granian-2.7.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2079df78961f5bb0032ee86463fd0305f2c62469c7ea9207439c237729440d27", size = 6248206, upload-time = "2026-06-10T19:33:58.699Z" }, - { url = "https://files.pythonhosted.org/packages/f6/28/2e851e4ca9a841f924de3028094336b6b2b7702188d00f260479571ed993/granian-2.7.6-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08e2fd9f734db178f02e3c0ebe55e4424405c33ac00de4463631f7d459267fb9", size = 7247253, upload-time = "2026-06-10T19:34:00.257Z" }, - { url = "https://files.pythonhosted.org/packages/44/4d/4743aa06d8a98d368ced0721a41ece254016bc8da0a56156911c99596043/granian-2.7.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc95fb353fa9e12888678c81625824f320c68697e86564ab1942910426842cd7", size = 6489729, upload-time = "2026-06-10T19:34:01.846Z" }, - { url = "https://files.pythonhosted.org/packages/81/0d/0c710584c8aa9036e7213e192f3f541d9bb6cfacfaf003af5c0e13609ed1/granian-2.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20d6e64c449025074f056ad86b0e16ea4a48ec2745596fa084c995ba514dd64b", size = 6939654, upload-time = "2026-06-10T19:34:04.271Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2b/61d7c3bce38de50b8259360256c6f7d2b0841e5039e65e98a08695502e59/granian-2.7.6-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:425156ebaa2ad7215f7522501487fa4d676d0f04cde40a987732df4646b9266d", size = 7163197, upload-time = "2026-06-10T19:34:06.166Z" }, - { url = "https://files.pythonhosted.org/packages/d4/30/200a1973e8ce5e2457c75083709229c1363cb2bc3e24d9527e7b8fcac0b7/granian-2.7.6-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9545a200992721f2a05a3d6f2ce58d11ae61925e9fa2857ea900fc5d32762b70", size = 7154198, upload-time = "2026-06-10T19:34:07.64Z" }, - { url = "https://files.pythonhosted.org/packages/01/26/c2003a760e53a4f16b1c46a555a3b4d1b0468b3f9cddac23e39365226c85/granian-2.7.6-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:4f6ad35673ba7108411ac817bfaba2bc1500f88de293380858ed792a34f233dc", size = 7395273, upload-time = "2026-06-10T19:34:09.501Z" }, - { url = "https://files.pythonhosted.org/packages/11/37/ec09ad3557e4284aeef01882a25a3ac211dbc0040ac8aa083bcb7f926c2e/granian-2.7.6-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:20fb3cc9437130f1cf6eff86abc8cd3d9c955ee7b1d9a6b12de1fb54525448cf", size = 6990918, upload-time = "2026-06-10T19:34:11.187Z" }, - { url = "https://files.pythonhosted.org/packages/02/29/802e081046bfd9b9196b0756f22b494b4469e554fb0b7bc2ddf906a9415b/granian-2.7.6-cp313-cp313-win_amd64.whl", hash = "sha256:291c2d358ceb7cb8185366d6c9055697e68fa4a26addbc1b7e5bd6ba38033f5d", size = 4068154, upload-time = "2026-06-10T19:34:13.065Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f9/2e3d235a1b069e064605e9cceee37601ba41acafeff72f882955931f446b/granian-2.7.6-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:8d79d0f1ea456dc69fdb0320a6787a5c3639a37285d8d99c18004dcfb3f50ce7", size = 6293196, upload-time = "2026-06-10T19:34:14.648Z" }, - { url = "https://files.pythonhosted.org/packages/66/45/ee34fc633aa1d5b86f37e470ac8a5d1c48a87f5645c5dde7d2ba66e8b83b/granian-2.7.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:653f8f5fbb1089f72e277a3509e1d3a41fcb1b92bffb3338f77233df406afb22", size = 6108331, upload-time = "2026-06-10T19:34:16.183Z" }, - { url = "https://files.pythonhosted.org/packages/2f/72/0d31b3fd13d1ad530c1b01b5e54ba01020d2d6f99db59656a9c7428f9a6f/granian-2.7.6-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfe099f5ebb71447979d4c78dcede61291f2a4bc61ff96311f6693dc0936ef05", size = 6285672, upload-time = "2026-06-10T19:34:17.948Z" }, - { url = "https://files.pythonhosted.org/packages/d3/d5/20e52813cc4123f03ebbe15f87d94bfb00ed6597aab3d0c24688fb9fd5d1/granian-2.7.6-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98fb26c008b336d33f9f9a5120010baaedd75961d69f9f29bdeadd36ee248fcb", size = 7215459, upload-time = "2026-06-10T19:34:19.574Z" }, - { url = "https://files.pythonhosted.org/packages/8c/c1/2182a311b747af48215ada0d71e693a0aaa3acc7b44c54d43197dd41cd53/granian-2.7.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e8495d70361dc6aef300e2be03257dd8d29412673cb4892ff5ab931dfe58572", size = 6691259, upload-time = "2026-06-10T19:34:21.155Z" }, - { url = "https://files.pythonhosted.org/packages/0e/f0/f08aec40227e9deffd66437b003e14138f7a68d75417c95fb70eb32a52ee/granian-2.7.6-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8ce9cf7a999a9e8ce3981810c676233554515ce2e8f1797ed68dd568685b4db7", size = 6847821, upload-time = "2026-06-10T19:34:22.817Z" }, - { url = "https://files.pythonhosted.org/packages/75/e6/58a72f2f1a3a12565e26bf404f9f4ba3595062cb95c4dbd54ff69837fdfd/granian-2.7.6-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:f3c044d191e2c03fff43af1b1b0ef8325e1763cf385ff47f9ce7d15b053bb3a2", size = 7063291, upload-time = "2026-06-10T19:34:24.674Z" }, - { url = "https://files.pythonhosted.org/packages/93/79/ac4b3e7942d3184716890d2b670b953764c560a940e436bf92eafabb194c/granian-2.7.6-cp313-cp313t-musllinux_1_1_armv7l.whl", hash = "sha256:29cc78dacb2046c78d061d6c3bfefac83150851837ddb3110359b0dd6e2db50b", size = 7371043, upload-time = "2026-06-10T19:34:26.428Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c2/491a6bd46817a48541cc894c27dc6ae138ef5f3ad852bc41729825b177b0/granian-2.7.6-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0ee043d48e3a9f8a4cba8b9bc0326591e5428f546724feee29f14146fe6595f3", size = 6898832, upload-time = "2026-06-10T19:34:28.06Z" }, - { url = "https://files.pythonhosted.org/packages/85/eb/2508242883d8cbcffaac0f433245c83cbb56727ea3883cb021f8bc9224bc/granian-2.7.6-cp313-cp313t-win_amd64.whl", hash = "sha256:01a389fe9eb11a2e8b23720915df25d4fa6aaf08337d32b9f7515ef02d888c39", size = 3997437, upload-time = "2026-06-10T19:34:29.617Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b9/3cd193896669cf737bfc099eb30459bfc3494a66c33f8a768e98563a513b/granian-2.7.6-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3e8929e235c80d8aa11fc502a4632d7fbb29ff7b4cbd17e5a05f7afc2e38de32", size = 6522686, upload-time = "2026-06-10T19:34:31.284Z" }, - { url = "https://files.pythonhosted.org/packages/ea/5d/f8a55dfc0de7263e7806726e87b6da725e7b0c11ebb12d95b5300141c3cf/granian-2.7.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0ba744daf241cdb52abf7ff1a5e3d53b04d470d4166880789ccfe3605cee5d52", size = 6152569, upload-time = "2026-06-10T19:34:32.955Z" }, - { url = "https://files.pythonhosted.org/packages/cf/79/3cc94f59fcc14d00c96800aa4d9385e91c051b0140a94fca7a6adcf2f5ec/granian-2.7.6-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2b284d7f5a1080fd50d5b0f3f335dc34a9cc5ebe3cafc291d25eea174d8c178", size = 7269408, upload-time = "2026-06-10T19:34:34.726Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4b/64d0874c83d975ca7acf97f23f4d888a675d11d782d8af74bb4e8b41d528/granian-2.7.6-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f6b57ff48757a76b4c1253e892a5d55108fe868085b6edfe5ddb008d6b93e17", size = 6510992, upload-time = "2026-06-10T19:34:36.502Z" }, - { url = "https://files.pythonhosted.org/packages/93/bb/036c2b53f765842deaf64a3376310d129671e38d36e93b4b4531f91b1c7b/granian-2.7.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fa6ebbad188f581f264f5b4f2e1bb2f3fa3b8b830d66703b225b4bc3ad9302a", size = 6967320, upload-time = "2026-06-10T19:34:38.114Z" }, - { url = "https://files.pythonhosted.org/packages/5c/63/6b8d2169d8094b5bdc01b0d108e1c2091bf3dba3f098ae8f57913f1a0cf8/granian-2.7.6-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:76a4f7ddacee73cf3c8baa06ebfcea1e591185687c45cdae6df7992578135f58", size = 7150567, upload-time = "2026-06-10T19:34:39.926Z" }, - { url = "https://files.pythonhosted.org/packages/c3/07/7c6d26e9b5e2dc694857bb2367ad19e155df97a3126b4a42f8d2da719ff5/granian-2.7.6-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:e3a9ef405e37fd78a753acbd4751f35a08a860d5572a6644aa5d7442fe1b3dc2", size = 7153936, upload-time = "2026-06-10T19:34:41.711Z" }, - { url = "https://files.pythonhosted.org/packages/44/1b/510d0c76c21ed188b281e243ef7d89efa79d6324b2d6962094651dc9c366/granian-2.7.6-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:a05a6c908ad3d98c2e3986f52f60083471a6304d63955465bca957d40fc55671", size = 7408687, upload-time = "2026-06-10T19:34:43.668Z" }, - { url = "https://files.pythonhosted.org/packages/45/b6/e0ba4b1e2a99c16affaa98a6617e16f2165ed8278b03a57987df9bf381fa/granian-2.7.6-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:58d33829649384f537f9c326688acf7ce9df9fc1044f4fad90058c71505cd51f", size = 7070293, upload-time = "2026-06-10T19:34:45.535Z" }, - { url = "https://files.pythonhosted.org/packages/b7/c0/2508d9a8c10f910b86c88af31e5ddce5a3be6eebe92e3938887e3a23291b/granian-2.7.6-cp314-cp314-win_amd64.whl", hash = "sha256:7c7b2643518369fed9442c727d28345c1d8f28f3b800966b49fd426ef46fc318", size = 4074996, upload-time = "2026-06-10T19:34:47.407Z" }, - { url = "https://files.pythonhosted.org/packages/18/82/335d6f8f41caee1f88c1d81c942318c58ad956c002dd0385b5fd1ef0576b/granian-2.7.6-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:75e1d9e47585eb1616664daced55271bd2d948ef5406d4fed0f909bb718a8a7f", size = 6360306, upload-time = "2026-06-10T19:34:49.195Z" }, - { url = "https://files.pythonhosted.org/packages/25/7f/feb6c399056662597c05322fdaa7680f02ca1c308511d961c40ee3da2e8d/granian-2.7.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:41394d5fd17623e10deb1ed54bde3395609ac9037774586d49c66793777fd5fe", size = 6003466, upload-time = "2026-06-10T19:34:51.072Z" }, - { url = "https://files.pythonhosted.org/packages/7d/1a/e48b29e7b0bc53498ad6d85b7fbff0d0601289fb6284e1ad89c5e565dc23/granian-2.7.6-cp314-cp314t-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f43853e0f5be5e4c4e1b1f8bc58fa05feedfe622154faed84823b878d1b39d00", size = 6285354, upload-time = "2026-06-10T19:34:52.956Z" }, - { url = "https://files.pythonhosted.org/packages/5d/cc/c7e04b205f0c668fe68c21a8bfaaf775a6ec4067425cd694a947e19f7f9e/granian-2.7.6-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6de1316d1194a7dd759a8ca2bf0072e9a03c4f3021eca196aa0a41c1bcc6c4c", size = 7229062, upload-time = "2026-06-10T19:34:54.727Z" }, - { url = "https://files.pythonhosted.org/packages/2d/41/70d618ecd24493101f22e003a8172f038ed7dc2135a3dc7938bb8ecca0bb/granian-2.7.6-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7538056d589455d4fa56fee7380857e672c3684f0ab8227a6407678e62da8b32", size = 6732112, upload-time = "2026-06-10T19:34:56.383Z" }, - { url = "https://files.pythonhosted.org/packages/7c/b0/ce1fe2b72d43b4375df6fa3f011401815a2fa294f7140a77cc1000a0e004/granian-2.7.6-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:403e08987177fde21c54ad5129693045ea4c7dae47b664fcdd0afb406828d6ad", size = 6804818, upload-time = "2026-06-10T19:34:58.119Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ef/d8299ddca1c687d8009624b7944e5840f2773f728f9f2e0eac301fc04f6d/granian-2.7.6-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:ae666a6a3703986231b93df7fc44a4bca9ddb6283685eda07dc8e1235d7b05e5", size = 7025409, upload-time = "2026-06-10T19:35:00.111Z" }, - { url = "https://files.pythonhosted.org/packages/de/3c/1a4d2439ae4c1b86c69373a32b306da9e4f053f0ca6313a2b0709d604e8e/granian-2.7.6-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:a7364881df5a26e3df8ec1e22e02230b02817cb5585112182749fb4a5069146d", size = 7370731, upload-time = "2026-06-10T19:35:02.113Z" }, - { url = "https://files.pythonhosted.org/packages/4c/6f/2052643f726ee53bc9e66eec08cd69b622b88b0c60b435f245109b74b631/granian-2.7.6-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:535fe238f8a4d148a0d9bd9d28afb6eb6ab94f955de1d156d568258e5cd9dfb6", size = 6947803, upload-time = "2026-06-10T19:35:04.121Z" }, - { url = "https://files.pythonhosted.org/packages/1f/02/4f0ef1d8c86a2b23926853791ee54df8d97a70fe2ec027c1be0b0cddc40f/granian-2.7.6-cp314-cp314t-win_amd64.whl", hash = "sha256:2744c81401641b77d5a2957a683cdc21ef053fb74defa0f53b60cfc1134d2115", size = 3993160, upload-time = "2026-06-10T19:35:05.939Z" }, - { url = "https://files.pythonhosted.org/packages/c2/53/d8154fc25038672daefbab99f9d719befac36fdba4a4c150b628e860ef9f/granian-2.7.6-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3725497cfb19cd4bd2cb05fada5419bb309fb79a96748e379f7a58d5312402ef", size = 6477821, upload-time = "2026-06-10T19:35:07.883Z" }, - { url = "https://files.pythonhosted.org/packages/1c/5e/b3f789a1576b523f494f321b360d12ce290df8b13165e05aa35b52544c47/granian-2.7.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c0902fd91455e581de1096f7f79142ca2a06d019871721005df476bec5bfffd4", size = 6223936, upload-time = "2026-06-10T19:35:09.566Z" }, - { url = "https://files.pythonhosted.org/packages/5e/c1/c3a4397aba2dc4990aa930cf52cbc36d04ba292eab770a9d6ae62a635f6f/granian-2.7.6-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:277ba2ac559e6076fa28ba044974454473e1f020529dc1c65d501d326c7500af", size = 6901134, upload-time = "2026-06-10T19:35:11.644Z" }, - { url = "https://files.pythonhosted.org/packages/47/ab/9027c0456d28ac89983384f5cfd7cffde35319de2834f3021bfd8f131b7e/granian-2.7.6-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d22f4b3d9959d3319643c3818a698eea883fe921f98440d825717d73c4e02fd0", size = 7135286, upload-time = "2026-06-10T19:35:13.697Z" }, - { url = "https://files.pythonhosted.org/packages/2f/53/fceafccca5596a99dd7473175ee1335768c7a5e97d0bd3c6d078d75238ad/granian-2.7.6-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7134e556f3ace7c24cfa9fd1f02806a97de1bbd6d010f406f07b5e26b68b5c27", size = 7122613, upload-time = "2026-06-10T19:35:15.501Z" }, - { url = "https://files.pythonhosted.org/packages/3e/57/4d68444563e018cf817e9ddb3b1e6fbcfa5ccb66a2338f3ef8e7885c31a9/granian-2.7.6-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8299b0d6b40695489134b6e3fcd0b8e218fa8ed106cd24feb7c087f784b0628d", size = 7411888, upload-time = "2026-06-10T19:35:17.396Z" }, - { url = "https://files.pythonhosted.org/packages/b0/d6/7bc0da726092a53f3385faca77820726ede03247328b30d82e4e1a1f00d7/granian-2.7.6-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d0446e02ff9f09c8b9f58f1a5fa68b65d4074dd9c30bb114cc2a0f85d99fd1e2", size = 6955767, upload-time = "2026-06-10T19:35:19.265Z" }, - { url = "https://files.pythonhosted.org/packages/a6/ea/5ffbaf30f362dd372e6ca2ce663d12da7cf4ab4510f7512fb0e6a9b86d08/granian-2.7.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:378bd11f4c29abfc5f9851ed66294246d9780e3023a4257cc7d854b5717fc9fb", size = 4039131, upload-time = "2026-06-10T19:35:20.993Z" }, -] - [[package]] name = "greenlet" version = "3.5.1" @@ -1442,7 +1359,7 @@ wheels = [ [[package]] name = "litellm" -version = "1.89.2" +version = "1.83.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -1458,9 +1375,9 @@ dependencies = [ { name = "tiktoken" }, { name = "tokenizers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/29/865d38325f9c424daf0bcc7ab61908cf51a87862b3a0dfebd059b60dac97/litellm-1.89.2.tar.gz", hash = "sha256:b2534d69568eed026310f4e006407db2d46494eb629bd1e71eb9603ec146540d", size = 14079449, upload-time = "2026-06-18T02:26:03.64Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/92/6ce9737554994ca8e536e5f4f6a87cc7c4774b656c9eb9add071caf7d54b/litellm-1.83.0.tar.gz", hash = "sha256:860bebc76c4bb27b4cf90b4a77acd66dba25aced37e3db98750de8a1766bfb7a", size = 17333062, upload-time = "2026-03-31T05:08:25.331Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/c8/51c93e8d017e7af02600171b5b6cc3805b07507acb2b94de7235ce764015/litellm-1.89.2-py3-none-any.whl", hash = "sha256:07e8e43b1a70fe919021376742897d18ffe7577ccfbb84632c949670f9abdc03", size = 15492797, upload-time = "2026-06-18T02:25:59.863Z" }, + { url = "https://files.pythonhosted.org/packages/19/2c/a670cc050fcd6f45c6199eb99e259c73aea92edba8d5c2fc1b3686d36217/litellm-1.83.0-py3-none-any.whl", hash = "sha256:88c536d339248f3987571493015784671ba3f193a328e1ea6780dbebaa2094a8", size = 15610306, upload-time = "2026-03-31T05:08:21.987Z" }, ] [package.optional-dependencies] @@ -1473,24 +1390,20 @@ proxy = [ { name = "cryptography" }, { name = "fastapi" }, { name = "fastapi-sso" }, - { name = "granian" }, { name = "gunicorn" }, { name = "litellm-enterprise" }, { name = "litellm-proxy-extras" }, { name = "mcp" }, { name = "orjson" }, { name = "polars" }, - { name = "pydantic-settings" }, { name = "pyjwt" }, { name = "pynacl" }, { name = "pyroscope-io", marker = "sys_platform != 'win32'" }, { name = "python-multipart" }, { name = "pyyaml" }, - { name = "restrictedpython" }, { name = "rich" }, { name = "rq" }, { name = "soundfile" }, - { name = "starlette" }, { name = "uvicorn" }, { name = "uvloop", marker = "sys_platform != 'win32'" }, { name = "websockets" }, @@ -1498,11 +1411,11 @@ proxy = [ [[package]] name = "litellm-enterprise" -version = "0.1.42" +version = "0.1.35" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/93/fe/fb60dd7bbb88fa65818e70f5f21cdabfe1c5df2302d9dda9bc46ac4fe4d9/litellm_enterprise-0.1.42.tar.gz", hash = "sha256:ec2170d9627a715aa038537a07af8053e6826e115ff6162a41af25d2990f3b2e", size = 70623, upload-time = "2026-05-31T04:12:10.667Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/5f/e593f335698a5c70d7e96e8ab9fdc4cfd4cc9249c524723fe64ed7f00cbb/litellm_enterprise-0.1.35.tar.gz", hash = "sha256:b752d07e538424743fcc08ba0d3d9d83d1f04a45c115811ac7828d789b6d87cc", size = 58817, upload-time = "2026-03-21T15:06:16.519Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/45/a6a56c510779b633e18fc5403aa82388fd6f0833132725bcb756d68cb0f5/litellm_enterprise-0.1.42-py3-none-any.whl", hash = "sha256:1014e38445d7a79d3638061504def42640719903b89a493b68806ba6e2f75fe7", size = 137906, upload-time = "2026-05-31T04:12:09.714Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fa/39efe3dfa680ca5bc5795b9c904c914b09a65278c2970c8fece6e0e30e47/litellm_enterprise-0.1.35-py3-none-any.whl", hash = "sha256:8d2d9c925de8ee35e308c0f4975483b60f5e22beb50506e261e555e466f019c5", size = 122659, upload-time = "2026-03-21T15:06:15.586Z" }, ] [[package]] @@ -2587,16 +2500,16 @@ wheels = [ [[package]] name = "pydantic-settings" -version = "2.14.1" +version = "2.14.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" }, + { url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" }, ] [[package]] @@ -3152,15 +3065,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1d/4a/221da6ca167db45693d8d26c7dc79ccfc978a440251bf6721c9aaf251ac0/respx-0.23.1-py2.py3-none-any.whl", hash = "sha256:b18004b029935384bccfa6d7d9d74b4ec9af73a081cc28600fffc0447f4b8c1a", size = 25557, upload-time = "2026-04-08T14:37:14.613Z" }, ] -[[package]] -name = "restrictedpython" -version = "8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/dc/19d6b8541f638b90411408a5f755e04da79c9df1651601465fb66a82fe5d/restrictedpython-8.3.tar.gz", hash = "sha256:9f31663ff2b86d9112bd7af4cd0601f12ef619c4f6ad162a1c9f9f186341337a", size = 449827, upload-time = "2026-06-16T10:05:20.243Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/26/059538503370f82ffce8a4a1307c5c0a28134a7c27a6c88bdca83b743833/restrictedpython-8.3-py3-none-any.whl", hash = "sha256:de36a9b27ad4490a368984984751179e5fc28e2b49540dc348878e5c0e79d737", size = 27385, upload-time = "2026-06-16T10:05:18.508Z" }, -] - [[package]] name = "rich" version = "13.9.4"